Ma 1ère macro VBA Excel
Vous entendez souvent vos collègues ou vos amis parler de Macro Visual Basic et de programmation, mais vous pensez que cet univers complexe n’est pas fait pour vous…
Détrompez-vous, grâce à cette leçon en deux parties, vous allez apprendre les techniques et les réflexes de base pour bien débuter sur les macros Visual Basic et Excel.
Au programme :
Partie 1
- Introduction VBA.
- Les macros VBA sur Excel.
- Activer l’anglet développeur.
- Énoncé de l’exercice.
- Travaux pratiques.
- Préparation du classeur Excel.
- L’enregistreur de macro.
- L’environnement VBA.
- Copie des cellules avec une macro VBA.
Partie 2
- Mise en forme des cellules avec une macro VBA.
- Les variables dans une macro VBA.
- Utiliser les conditions « Si » dans une macro VBA.
- Utiliser la boucle « Tant que » dans une macro VBA.
- Attribuer une formule à une cellule avec une macro VBA.
- Créer un bouton pour exécuter une macro VBA.
Télécharger le fichier Excel de la leçon et les raccourcis clavier Excel.
Télécharger le PDF de la leçon.
90 Comments
Franchement bravo 🙂 et merci bcp
Très bonne explication. Merci
merciiiiii tr fooort
Vraiment sympa t cours ! je bosse actuellement en banque depuis quelques mois (étudiant à dauphine)… et j’ai souvent besoin d’automatiser des tâches…je galèrais parce que j’allais pas au cours d’info à la fac jusqu’au jour où…j’ai découvert t tuto!!
merci Kamel tu es un BRAVE du net 😉
Super.
Sauf la partie ctrl+Shift qui ne s’enregistre pas dans ma macro.
Je suis sur mac.
Une idée ?
Merci!
Merci Brice,
Effectivement il y a quelques bugs sur la version MAC !!
Pour éditer les macros, je vous conseille de travailler sur la version PC…
Bon courage.
Bonjour, je suis ultra novice en la matière.
j’ai une version anglaise d’excel (que je souhaite pas changer), je voudrai donc connaitre la traduction exacte de « finligne » et de « numeroligne », sachant aue last row et rownumber ne fonctionnent pas. du coup je suis bloquée pour la la macro couleurs.
Merci!
Salut,
à la place de ctrl il faut faire « pomme »
superbe démonstration cela m’aide régulièrement , par contre vous avez fait une boucle tant que ligne par ligne , mais pourriez vous continuer la macro avec une boucle pour incrémenté une colonne
Sinon superb
cordialement
Merci beaucoup Kamel
Cordialement
mille merci kamel, c’est une super explication, vous expliquez mille fois mieux que mon prof de fac,
Bonjour,
J’apprécie votre site internet qui permet d’aborder des thèmes compliqués de façon très simple et ainsi de décomplexer les personnes face aux différentes problématiques.
Avez-vous eu assez de demandes afin de pouvoir créer une vidéo concernant la création de base de données sur ACCESS avec formulaires, créations d’états et autres ?
Merci encore pour votre compétence et votre disponibilité.
Cordialement,
Jean-René
Bonjour Jean-René,
Merci pour l’intérêt que vous portez à mes vidéos ..!
J’ai bien prévu une série de vidéos pour Access…. J’espère avoir le temps de les réalisées prochainement.
Bonne continuation et encore merci.
Kamel.
merci j’attend access
Merci beaucoup Kamel. vous expliquer d’une manière très facile merci une 2eme fois pour ces cours important
merci pour votre explication facile
merci pour l explication mais je n arrive pas a distinguer rcomment vous avez écris la variable findeligne=???
Bonjour,
Vous avez la possibilité de télécharger le fichier Excel sur le site pour avoir toutes les infos !
C’est le tuto le plus didactique que j’ai vu sur le sujet jusqu’à présent. Bravo!
parfait bonne continuation.
Merci beaucoup pour ces cours ! ils m’ont permis de décrocher mon stage de fin d’études !
Bonjour Kamel,
merci bcp pour ce super site, je voudrais savoir quel logiciel utilisez vous pour l’effet zoom, merci encore une fois et bonne continuation.
Bonjour Nora,
Merci à vous aussi !!
Moi J’utilise « Screenflow » (Mac), pour moi c’est le meilleur ! Il doit avoir son équivalent sur windows…
Bonne journée
Salem , franchement bravo . merci
Un grand merci
Il m’a fallu atteindre l’âge de 54 ans pour comprendre les macros.
Bravo!!
Merciiiiiiiiiiiiiiiiiiiiiiiiiii 😀
Merci,c’est très simples d’apprendre avec toi tout est claire et bien présenté. bonne continuation
Vraiment je me trouve bien avec vos vidéos, merci beaucoup pour vos efforts.
Je voudrais savoir s’il y a une autre façon de faire des relations entre les feuilles de calcul Excel.
Merci d’avance
salut , y a une petit suci , chaque fois que j’excute le Sub Somme()
, il ajoute nouveau cellue avec la somme de lancienne cellule.
Bonjour,
Je vous remercie pour ces tutoriels.
Je souhaiterai savoir comment on fait pour vérifier toutes les cellules.
Exemple : Si dans le fichier il y a des lignes vides au milieux.
Donc, cette méthode ne fonctionne pas, il faut écrire un code qui nous permets de vérifier toutes les cellules des lignes, jusqu’à ce qu’il n’y aurait plus de valeur.
Je vous remercie par avance.
Bien cordialement.
Bonjour,
Merci pour votre tutoriel très pédagogique qui permet de débuter en VBA.
Bien cordialement
Il n’y a pas de nul.
Merci pour la clarté des explications.
Je ne peux que vous féliciter de la qualité des vidéos et surtout de la superbe façon d’expliquer les applications, il ne manque aucun détail.
Bravo
Bravo
Bravo
Et moi je ne peux que vous remercier !!
Merci
Merci
Merci
🙂
bonjour,
avant tout, je vous félicite pour ce boulot magnifique que vous faites,
j’ai trouvé particulière le tuto ‘ma première macro ‘ très riche. J’aimerai savoir comment on procède pour placer le raccourcis du tableau final que vous avez mis juste au dessous de la barre de formule. Le tableau avec lequel on clic sur ‘+’ pour l’afficher et ‘-‘ pour le cacher. merci.
Bonjour,
j’ai suivi avec intérêt vos tutos et j’ai commencé à créer un logiciel de pré-inscription des élèves dans un collège d’enseignement. J’ai pu créer déjà trois forms (fenêtres) en Visual Basic munis de textebox, combobox,…….. et je voudrais afficher les informations de ces trois forms à la fin d’un enregistrement en vue de modification ou d’impression.
Aidez moi SVP!
trop fort ! explication claire et précise ! merci
peut-on espérer avoir le même type de tutoriel pour access?
merci d’avance
merci pour ce superbe tuto
bonjour Je vous remercie pour ces tutoriels et Je souhaiterai de m’aider à faire un petite exercice sur VBA
Clair, précis, pratique! Vous-avez un belle manière d’enseigner, merci beaucoup !
Merci beaucoup, c’est très pédagogique !
Merci à vous pour ces 2 tutos
bonjour, et merci pour ce magnifique travail.
je profite l’occasion pour vos poser mon probleme.
je dois copier tous les donnees d’une feuille1 du classeur « donnees » vers la feuille « importees » d’un classeur « final ».
voici le code:
Sub import1()
‘ import1 Macro
Windows(« donnees.xlsm »).Activate
Sheets(« incidents »).Select
Rows(« 2:2 »).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(« final.xlsm »).Activate
Sheets(« importees »).Select
Derniereligne = ActiveSheet.UsedRange.Rows.Count + 1
Range(« A » & Derniereligne).Select
ActiveSheet.Paste
End Sub
la première fois que j’ai exécuté ce code c’était bien,le problème c’est que, depuis que j’ai effacé les données de la feuille « importees » du classeur « final » et que j’exécute a nouveau le code, il me colle les données dans la 1ere cellule vide après ma première exécution de cette macro.
ex:
1ere exécution de la macro, ca m’a coller 200 lignes a partir de la cellule « A2 » ( la 1ere ligne contient l’entête).
j’efface ces donnees (sans l’entete), et j’execute encore une fois la macro, elle me les colle a partir de la cellule 202.
j’efface a nouveau et j’execute la macro, elle me colle les donnees dans la cellule (202+200). c’est comme ci elle garde en memoire le chiffre 200 qui sont les 200 lignes de donnees de la 1ere execution.
merci pour votre aide.
Erratum: ci-dessous le code, le premier est avec un prob de caracteres speciaux.
bonjour, et merci pour ce magnifique travail.
j’ai un probleme avec ma macro
je dois copier tous les donnees d’une feuille1 du classeur « donnees » vers la feuille « importees » d’un classeur « final ».
voici le code:
Sub import1()
‘ import1 Macro
Windows(« donnees.xlsm »).Activate
Sheets(« incidents »).Select
Rows(« 2:2″).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(« final.xlsm »).Activate
Sheets(« importees »).Select
Derniereligne = ActiveSheet.UsedRange.Rows.Count + 1
Range(« A » & Derniereligne).Select
ActiveSheet.Paste
End Sub
la première fois que j’ai exécuté ce code c’était bien,le problème c’est que, depuis que j’ai effacé les données de la feuille « importees » du classeur « final » et que j’exécute a nouveau le code, il me colle les données dans la 1ere cellule vide après ma première exécution de cette macro.
ex:
1ere exécution de la macro, ca m’a coller 200 lignes a partir de la cellule « A2″ ( la 1ere ligne contient l’entête).
j’efface ces donnees (sans l’entete), et j’execute encore une fois la macro, elle me les colle a partir de la cellule 202.
j’efface a nouveau et j’execute la macro, elle me colle les donnees dans la cellule (202+200). c’est comme ci elle garde en memoire le chiffre 200 qui sont les 200 lignes de donnees de la 1ere execution.
merci pour votre aide.
Je ne sais comment vous remercier !
J’avais peur de ne jamais être prête pour mon stage début Janvier dans une banque mais grâce à vous je suis plus sereine. Vidéos expliquées de façon très pédagogue.
Encore merci!
Bravo, merci pour cette démo très claire et très pédagogue.
Pour compléter celle-ci pourriez-vous m’indiquer comment, par exemple,
dans cette démo on pourrait calculer la somme totale de chaque pays.
Bonjour Kamel,
D’abord un grand merci pour vos explications claires et simples.
J’ai refait chaque macro, mais j’ai un message d’erreur (erreur de compilation / variable non définie)
Cela apparaît au niveau de FinLingne.
J’ai même désactivé « déclaration des variables obligatoires » mais le message apparaît quand même.
Je pense que c’est un message logique vu que je n’ai pas déclaré ma variable…
Merci d’avance pour votre aide
Tarik
Bonjour Kamel,
Le message n’apparaît plus !
Merci
Tarik
Bonjour,
J’ai créé une macro qui fonctionne bien mais j’ai encore quelques questions pourriez m’aider, svp ?
Merci beaucoup pour ce tutoriel .
vraiment très simple à comprendre, et votre méthode pédagogique attire l’attention , encore merci Kamel
Merci à vous Dali 🙂
je veux apprendre excel aidez moi Mr. comment s’inscrire?
tres bonne explication
mais et la deuxieme partie
Bonjour Merci pour ce tutoriel excellent travail
la question que j’ai a vous poser c’est comment utiliser la macro pour des etudes statistiques avancées tels l’échantillonnage la modélisation etc. ou pour des analyse financières
Par avance merci
Bonjour merci à vous aussi !!
Commencez par définir vos sources de données, ensuite créez une ou plusieurs macros pour faire les traitements et enfin créer par exemple un bouton qui exécute votre macro ..!
Pour des traitements complexes je vous conseille de commencer sur un brouillon en papier pour bien structuré votre travail !
Bonne continuation.
Kamel.
merci mr j’ai bien profiter des cours que vous m’aviez envoyé je compte sur vous pour un cour complet sur les macros. merci
SVP aidez moi!!! tout d’abord un grand merci pour vos explications.
J’essaye de créer une macro qui va créer des dossiers à partir d’une liste qui se trouve dans la colonne D
avec la commande mkDir je suis incapable de continuer pouvez-vous m’aider svp???!!!
Voilà le début de code que j’ai fait
Merci d’avance!
Public Sub Créer_reps()
Dim col As Integer, lig As Long, mxc As Integer, rep As String, nbc(), mes As String
Dim CHX As FileDialog ‘ selection Repertoire
Set CHX = Application.FileDialog(msoFileDialogFolderPicker)
CHX.Show
Range(« D1 »).Select
Range(selection, selection.End(xlDown)).Select
End Sub
Bonjour;
Ca serait trés aimable à vous de m’aider à résoudre mon probléme:
1-tracer avec une macro une courbe a partir de données qui se trouve sur une feuille excel et l’afficher sur une interface vba
2-faire une macro pour récuperer un point x sur la courbe en connaissant y sachant que x et y ne sont as forcement dans mon tableau de données voici un exemple:
t=1 3 6 8 7
v=10 30 60 70
j’aimerai tracer la courbe v(t) sur une interface vba et quand l’utilisateur entre v=33(il n’est pas dans le tableau ci-dessus) alors la macro me retourne la valeur lui correpondant ici c’est une valeur entre 6 et 8.
Merci beaucoup
Je voulais vous remercier de cette leçon fort bien expliquée. Je vais devenir une adepte de votre site. Encore bravo et merci beaucoup!
Merci !!
bonjour ,
Je suis très satisfait de vos leçon ,j apprend ,et les explications sont précise et clair
Je suis les étapes de ma première macro
et mon problème est le suivant
Sub couleur_Ligne()
If Range(« A2 »).Value = « france » Then Range(« A2:D2 »).Interior.Color = 65535
If Range(« A2 »).Value = « Belgique » Then Range(« A2:D2 »).Interior.Color = 5296274
If Range(« A2 »).Value = « Maroc » Then Range(« A2:D2 »).Interior.Color = 255
If Range(« A2 »).Value = « suisse » Then Range(« A2:D2 »).Interior.Color = 15773696
‘Range(« A2:D2 »).Interior.Color = 65535
‘Range(« A3:D3 »).Interior.Color = 5296274
‘Range(« A4:D4 »).Interior.Color = 255
‘Range(« A5:D5 »).Interior.Color = 15773696
End Sub
lorsque je fais exécuté rien ne ce passe pourquoi ???
merci de votre aide
Diego, je suis un débutant, je n’ai jamais fait de programation mais j’ai remarquer que tu a placé un guillemet français suivi d’un guillemet anglais.
If Range(« A2″).Value = « france » Then Range(« A2:D2″).Interior.Color = 65535
Il aurait fallu tapper :
If Range( » A2″).Value = « france » Then Range( » A2:D2″).Interior.Color = 65535 et comme tu a recopier tu a la même erreur à chaque ligne.
Mais renseigne toi au près des pros de la souris
J’ai oublier de corriger les guillemets excuse moi
If Range( » A2″).Value = « france » Then Range( » A2:D2″).Interior.Color = 65535
Je suis désolé mais je tape bien les guillement « anglais » mais cela ne les prend pas.il faut tapper le même signe que tu as à droite du A «
Bonjour,
j’aimerai créer une macro, pour ranger toutes les sommes dans une feuille ayant le même numéro de plan comptable dans une autre feuille classées par numéro de plan comptable.
Je manque d’éléments suite a vos vidéo VBA (très bien faite).
merci pour votre aide
Pierre
Si Kamel, Bravo et merci pour tout ce que vous faites pour nous faciliter la vie. Je voudrais bien savoir quel est le logiciel que vous utilisez pour la présentation de ces tutos? est-ce gratuit ou pas? je pense que son utilisation devra faire l’objet d’un certain nombre de tutos à nous offrir si votre temps le permet.
Merci d’avance.
Mounir
Bonjour,
Il y a près de trente ans que j’utilise « Excel » et je suis tombé par hasard sur une de vos vidéos « ma 1ère Macro ».
Je me dois de vous faire savoir que j’ai énormément apprécié la qualité de vos explications. Elles « transpirent » le soucis pédagogique et je tiens à vous en féliciter. Surtout continuez car la société a besoin de personnes comme vous ayant le souci de transmettre leur savoir et leurs connaissances en essayant de se mettre la portée du plus grand nombre.
Chapeau!!!
Surtout continuez tant que vous le pourrez.
Merci beaucoup.
Jojo66
Merci à vous et bon week-end !!
Merci beaucoup la vulgarisation est très bien faite félicitation
et encore BRAVO!
p.s. : vous êtes très généreux…
Bonjour,
Merci bcp pour ce tutoriel!! Ca fait un moment que je regardais des tuto macro et avec votre tutoriel, j’ai mieux compris la logique car c’est vraiment bien expliqué!
Grand merci
bravo
Bonjour Kamel.et d’entrée Grand Bravo
J’ai 78 ans et entre nous je ne veux pas mourir idiot.
Votre formation à VBA est une merveille, je bois du petit lait à regarder et m’instruire de la chose.
Permettez moi une question. Existe t’il un bouquin permettant dxe parfaire ce que vous enseignez sur votre blog et pour ne pas vous solliciter, vous avez bien d’autres choses à faire, je n’en doute pas .
Ah aussi une autre question, tous les sujets que vous avez traités sont ils sur ce blog (ou site)
En vous renouvelant mes félicitations.
Bravo. Cordialement
wolni
Si Kamel, excusez-moi mais quel logiciel utilisez-vous pour préparer ces vidéos? gratuit ou pas?
Merci.
Mounir
Soyez béni.
Vous nous donnez une occasion de se former à son rythme et gratuitement. C’est une manne.
je vous remercie beaucoup pour vos énormes effort
je vous remercie beaucoup pour vos énormes effort,le problème persiste dans l’etape de coloration
Bonjour
j’ai besoin de votre aide pour coller le contenu d’une ou plusieurs feuilles sur une feuille consolidation svp
merci d’avance
Le video m’a baucoup aidé
c’est très bien expliqué
merci.
lorsque je met en pratique ça donne mais après la fermeture du classeur
le macro ne donne pas.
je voudrai que vous m’expliquer comment faire pour que j’utilise le macro après ou dans une autre classeur
merci
Je tien a vous remercié vivement du travail que vous fait, ça ma donner une formation du VBA que je ne connaissais pas.
J’ai une question a vous poser. Est ce que je peu crée une application avec est que sa soit sep parer d ‘Exel?
Merci pour votre collaboration et votre effort.
Bonjour Kamel,
Excellent, rien à rajouter!
Moi qui n’en n’avait jamais fait, c’est la première fois que je vois une présentation aussi claire sur le sujet et avec une vitesse qui permet de bien digérer les infos!
Bravo pour votre patience
Salutations
Je vous félicite monsieur pour la qualité de votre leçon, aussi bien sur le coté pédagogique que sur celui de l’utilité, alors bravo et je vous en remercie d’avantage
salutations
Merci beaucoup Kamal pour ce toto très pédagogue.
Vous refaites gagner espoir aux débutants !
Que Dieu vous bénisse en ce mois béni
Bonjour Monsieur,
Tout d’abords permettez moi de vous remercier pour votre générosité et le partage de toutes ces importantes et utiles informations et techniques.
Pour la phase de coloration j’ai que les lignes « Maroc » qui ont été colorées alors que j’ai le meme code que vous!
Sub couleur()
Sheets(« Feuil2 »).Select
FinLigne = ActiveSheet.UsedRange.Rows.Count + 1
NumeroLigne = 2
While NumeroLigne < FinLigne
If Range("A" & NumeroLigne).Value = "France" Then Range("A" & NumeroLigne, "D" & NumeroLigne).Interior.Color = 65535
If Range("A" & NumeroLigne).Value = "Belgique" Then Range("A" & NumeroLigne, "D" & NumeroLigne).Interior.Color = 5296274
If Range("A" & NumeroLigne).Value = "Maroc" Then Range("A" & NumeroLigne, "D" & NumeroLigne).Interior.Color = 255
If Range("A" & NumeroLigne).Value = "Suisse" Then Range("A" & NumeroLigne, "D" & NumeroLigne).Interior.Color = 15773696
NumeroLigne = NumeroLigne + 1
Wend
D'avance merci pour votre correction.
El Mehdi.
Merci c’est gentil de ta part
Bonjour
moi aussi j’ai le meme probleme, j’ai un debogage au niveau de ce code
Bonjour,
Je viens de suivre les 2 parties de votre cours, non pas sans mal, mais c’était super clair. Merci beaucoup.
Petite question : mon total se met une case plus bas à chaque fois que je relance la macro. (Si mon tableau fait 10 lignes, à chaque fois que je clic sur le bouton macro le résultat se met ligne 11 puis ligne 12… ligne 20… ça commence à être compliquer de chercher mon total ; ) pourriez vous m’aider ?
Merci d’avance
Merci pour ces 2 vidéos de « ma 1ère macro Excel)
Explications claires, nettes et précises.
Bonne continuation
Bien Cordialement
Ali
Merci pour votre brillante explication. Je suis ravis de suivre votre formation.
bonjour,
Bravo pour vos tutos de leçons d’exel en macro, super intéressante, bien fait, bien commenté, vous expliquez très bien, tout est bien synchronisé ! j’ai tenté de m’inspirer de votre méthode pour un tableau, colorier selon une variable, une rangée D, avec 1, 2, 3 etc… et mettre en rouge les nombres négatifs, et en bleu les nombres positifs:
Sub color2()
Range(« D »).Select
finligne = « activesheet.usedrange.rows.count » + 1
numeroligne = 2
If Range(« D », numeroligne).Value = « totalcumulé » Then ‘(« D »), numeroligne >= 0, Interior.color. numeroligne ‘ finligne= 65535
If Range(« D », numeroligne).Value = « totalcumulé » »D » Then ‘(« D »),numeroligne <= 0, Interior.color = 65535
numeroligne = "numeroligne" + 1
End If
End If
Si vous pouviez me dire ce qui ne va pas ! Merci et félicitations encore, du beau travail ! Quentin