COMMENT LANCER UNE MACRO VBA PLUSIEURS FOIS DE SUITE SUR EXCEL

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

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

L’erreur cachée qui plombe vos tableaux Excel (et comment l’éviter)
Comment entourer automatiquement cellules non conformes Excel sans MF conditionnelle ni formule ?
Comment créer un tableau de bord commercial intelligent avec Excel ?
Comment créer un graphique dessiné à la main avec Excel ?
Comment créer un graphique de distribution en 5 minutes chrono ?
L’astuce Excel pour imprimer le tableau que vous voulez en un clic !
Comment gérer ses comptes sur Excel avec le « Suivi du budget familial »
Comment créer facilement des QR codes sans VBA avec Excel ?
Transformez vos données en graphique tornade interactif facilement sur Excel !
Comment créer un graphique Iceberg dans Excel ?
Comment créer un graphique dynamique en quelques minutes sur Excel sans VBA ni TCD ?
Comment créer des feux de signalisation tricolores dynamiques dans Excel sans VBA ?

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2024 - 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.