Avec le Pack Protection Maximum, partagez serainement vos fichers Excel. Profitez de l'offre de lancement jusque vendredi minuit !

COMMENT LANCER UNE MACRO VBA PLUSIEURS FOIS DE SUITE SUR EXCEL

Dans le cadre de la formation sur l’apprentissage du langage VBA d’excelformation, nous avons déjà vu comment procéder pour lancer une macro commande VBA directement depuis une feuille de calcul (par exemple en créant un bouton lié à ladite macro). Seulement vous avez été plusieurs à me demander comment lancer une macro non pas une seule fois, mais plusieurs fois de suite une même macro. Et c’est justement ce que nous allons voir dans ce mini-tutoriel.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

Vous trouverez très régulièrement de nouvelles vidéos sur la chaîne, alors pensez à vous abonner pour ne manquer aucune astuce et devenir rapidement un pro d’Excel (cliquez-ici) !

 

1. Présentation

En fait l’astuce que nous allons utiliser ici va être de créer une procédure VBA intermédiaire qui va nous permettre d’appeler directement la macro principale que nous souhaitons lancer plusieurs fois.

Et c’est bien évidemment cette macro intermédiaire que nous allons lancer (par bouton, ou tout autre solution).

Pour l’exemple, nous allons commencer par créer une macro commande très simple :

  • Depuis l’éditeur de code VBA (que nous lançons par exemple en sélectionnant le menu Développeur > Visual Basic, voir ce chapitre de la formation VBA),

Excel formation - Lancer une macro plusieurs fois de suite - 01

  • Puis nous insérons un nouveau module (Insertion > Module)

Excel formation - Lancer une macro plusieurs fois de suite - 02

  • Enfin, nous saisissons une macro très simple qui permet ici d’ajouter une unité à la valeur de la cellule sélectionnée :

 

Sub ajouterUneUnite()
        If IsNumeric(ActiveCell) Then ActiveCell = ActiveCell +  1
    End Sub

 

Cette procédure ajouterUneUnite() se contente de vérifier si la cellule active (retournée par ActiveCell) est effectivement numérique. Lorsque tel est le cas, alors nous ajoutons une unité (+1) à sa valeur.

En revanche, aucune action n’est prévue lorsque la cellule active n’est pas de type numérique.

Cette procédure est volontairement très simple, afin de pouvoir voir immédiatement le résultat dans la feuille de calcul !

Ensuite, revenons dans la feuille de calcul afin d’insérer un bouton :

  • En cellule A6, nous saisissons la valeur 1 :

Excel formation - Lancer une macro plusieurs fois de suite - 03

  • Puis nous ajoutons un simple rectangle (Insertion > Formes > Rectangle) :

Excel formation - Lancer une macro plusieurs fois de suite - 04

  • Que nous dessinons à l’endroit et à la taille voulue :

Excel formation - Lancer une macro plusieurs fois de suite - 05

  • Puis nous effectuons un clic-droit sur ce rectangle > Modifier le texte :

Excel formation - Lancer une macro plusieurs fois de suite - 06

  • Au besoin, nous pouvons modifier le style du bouton (menu Mise en forme du ruban, qui n’apparaît que lorsque la forme est sélectionnée > Styles de forme) :

Excel formation - Lancer une macro plusieurs fois de suite - 07

  • Lorsque le texte et le style du bouton sont correctement définis, nous pouvons relier la macro ajouterUneUnite() à ce dernier en effectuant un nouveau clic-droit sur celui-ci > Affecter une macro) :

Excel formation - Lancer une macro plusieurs fois de suite - 08

  • Et enfin, dans la fenêtre qui s’affiche nous pouvons double-cliquer sur le nom de la macro :

Excel formation - Lancer une macro plusieurs fois de suite - 09

 

À présent, pour tester la macro, il suffit de sélectionner la cellule A6 que nous préalablement remplie d’une valeur numérique (1), et nous cliquons sur le bouton :

Excel formation - Lancer une macro plusieurs fois de suite - 10

Comme vous pouvez alors le constater, la valeur de la cellule passe effectivement de 1 à 2, une unité a effectivement été ajouté !

 

2. Répéter une macro 10 fois de suite

Nous pouvons maintenant en arriver au sujet qui nous intéresse : comment faire pour répéter 10 fois la procédure, afin d’ajouter autant d’unités à la valeur de la cellule A6 ?

Comme nous l’avons vu juste au-dessus, nous allons simplement ajouter une nouvelle procédure, que nous allons appeler ajouterDixUnites() et qui va se contenter d’appeler 10 fois de suite la procédure ajouterUneUnite() :

 

Sub ajouterDixUnites()
        ajouterUneUnite
        ajouterUneUnite
        ajouterUneUnite
        ajouterUneUnite
        ajouterUneUnite
        ajouterUneUnite
        ajouterUneUnite
        ajouterUneUnite
        ajouterUneUnite
        ajouterUneUnite
    End Sub

 

Ici, nous avons choisi la solution de facilité en répétant simplement 10 fois de suite l’appel à la procédure ajouterUneUnite().

Évidemment, cette solution n’est pas optimale : non seulement celle-ci nécessite de recopier un grand nombre de fois une même ligne de code (heureusement le copier-coller nous facilite la tâche, mais imaginons que nous souhaitions répéter mille, ou un million de fois cette tâche…), mais en plus elle complique fortement la lecture de ce code.

La solution idéale consiste bien entendu à introduire une boucle For… Next :

 

Sub ajouterDixUnites()
        Dim i As Integer
        For i = 1 To 10
            ajouterUneUnite
        Next
    End Sub

 

Encore une fois, vous trouverez toutes les informations sur l’utilisation des boucles dans la formation VBA.

Maintenant, nous pouvons créer un nouveau bouton pour appeler cette macro intermédiaire :

Excel formation - Lancer une macro plusieurs fois de suite - 11

 

3. Répéter une macro X fois de suite

Maintenant que nous savons comment répéter une instruction VBA un nombre de fois défini, nous pouvons également laisser à l’utilisateur le choix de définir ce nombre.

Pour cela, il suffit d’utiliser une InputBox, qui permet d’afficher une boîte de dialogue dans laquelle nous pouvons saisir une information :

 

Sub ajouterXUnites()
        Dim i As Integer
        For i = 1 To InputBox("Combien d'unités  voulez-vous ajotuer ?")
            ajouterUneUnite
        Next
    End Sub

 

Comme précédemment, nous insérerons un nouveau bouton correspondant :

Excel formation - Lancer une macro plusieurs fois de suite - 12

 

 



Articles qui pourraient vous intéresser

COMMENT MASQUER DÉFINITIVEMENT ET AUTOMATIQUEMENT UNE FEUILLE DE CALCUL EXCEL

INVERSER DEUX CELLULES EN 1 CLIC (INTERVERTIR LES VALEURS) SUR EXCEL

COMMENT SAISIR UN NOMBRE SOUS FORME DE FRACTION SUR EXCEL ?

COMMENT REPERER ET CORRIGER (OU PAS !) LES REFERENCES CIRCULAIRES DANS EXCEL ?

Commentaires

Il n'y a aucun commentaire...

Poster un commentaire

Pseudo
Commentaire

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.