Comment ajouter automatiquement une ligne lors d’un changement de valeur dans une colonne 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
 

Aujourd’hui je vous propose de répondre à la question posée par Plessier Hervé dans l’espace de commentaires sur la chaîne YouTube, qui souhaite savoir comment insérer une ligne vide lorsqu’une valeur contenue dans une cellule vient à être modifiée. Nous verrons pour cela qu’une simple macro-commande va nous permettre de réaliser cette opération.

Excel formation - Ajouter ligne automatiquement - 01

 

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

 

1. Présentation

Comme nous l’avons vu dans l’introduction, je vais vous montrer comment insérer automatiquement une nouvelle ligne lorsqu’une valeur change dans une colonne.

Cela va nous permettra par exemple de pouvoir insérer simplement un total ou un dénombrement.

Pour illustrer ce tutoriel, nous allons partir de l’exemple suivant, dans lequel nous retrouvons une liste de clients d’une entreprise :

Excel formation - Ajouter ligne automatiquement - 02

Ici, nous allons vouloir dénombrer directement dans la base de données le nombre de personne en fonction de l’année depuis laquelle ils sont client de l’entreprise.

Bien entendu, pour réaliser cette opération, nous allons devoir passer par le développement d’une macro-commande en VBA.

Mais pas de panique, nous allons détailler chacune de lignes de code, afin que ce tutoriel soit accessible à tous.

Bien entendu, si vous souhaitez en savoir davantage sur le développement en VBA, je vous invite à suivre la formation dédiée à l’apprentissage de VBA pour les débutants en suivant ce lien.

 

2. Créer une macro-commande en VBA

La première chose à faire pour pouvoir créer une macro-commande en VBA est de lancer l’éditeur de code VBE.

Il s’agit de l’application intégrée au sein de la suite Office qui permet de créer des macro-commandes VBA.

Pour cela, nous avons plusieurs possibilités, la plus simple étant d’utiliser le raccourci clavier [Alt]+[F11] :

Excel formation - Ajouter ligne automatiquement - 03

Ensuite, pour saisir les lignes de code, nous allons devoir ajouter un module qui est en quelques sortes une feuille blanche dans laquelle nous allons coder les macro-commandes.

Pour ajouter un module, nous nous rendons dans le menu Insertion > Module.

Cela étant fait, nous pouvons créer la macro en utilisant le mot-clé Sub, suivi du nom que nous souhaitons lui donner, par exemple ajouterTotal :

Sub ajouterTotal()
 
End Sub

Lorsque nous validons la création de la procédure en appuyant sur la touche [Entrée] du clavier, VBE ajoute automatiquement la ligne End Sub qui marque la fin de celle-ci.

Ainsi, tout ce que nous allons saisir entre ces deux lignes va s’exécuter automatiquement à chaque fois que nous allons lancer la macro.

 

3. Compter le nombre de répétitions des années

Pour commencer, nous allons créer une première variable dans laquelle nous allons insérer la première cellule que sur laquelle va porter l’analyse.

Il s’agit dans notre exemple de la cellule C8 :

Excel formation - Ajouter ligne automatiquement - 04

 

    Dim cellule As Range
    Set cellule = Range("C8")

Puis pour passer en revue toutes les années, nous allons utiliser une boucle Do While, qui permet de répéter une série d’instructions tant qu’une condition est remplie (à savoir ici, tant que la valeur de la cellule étudiée contient une valeur, ce qui permet d’analyser toutes les cellules de la colonne).

    Do While cellule <>  ""
    
    Loop

Attention de ne surtout pas lancer la macro à ce moment là sous peine de faire planter Excel.

En effet, ici la cellule en cours d’analyse est la cellule C8, laquelle contient une valeur.

Ensuite, nous lancer la boucle, sans modifier la cellule analysée.

La conséquence en est alors que la macro va continuellement analyser cette seule et même cellule, la condition sera donc toujours VRAI, et par conséquent, sans fin !

La première chose à faire dans cette boucle sera donc de passer à la cellule de la ligne suivante (il s’agira en réalité de la dernière opération à réaliser…)

Pour cela nous utilisons l’instruction Offset qui permet d’affecter à la variable cellule la cellule située juste en dessous :

Set cellule = cellule.Offset(1, 0)

Nous pouvons maintenant lancer la macro : il ne se passera absolument rien ici, mais au moins elle ne plantera plus !

Pour vérifier qu’il se passe malgré tout quelque chose, nous pouvons afficher la valeur de la cellule en cours d’analyse dans la fenêtre d’exécution en utilisant l’instruction Debug.Print :

Excel formation - Ajouter ligne automatiquement - 05

Maintenant, nous allons ajouter une nouvelle variable dans laquelle nous allons stocker l’année en cours :

    Dim annee As Integer
    annee = cellule.Value

Puis dans la boucle, nous comparons la valeur de cette variable avec la valeur de la cellule analysée en utilisant une instruction If… Then :

        If cellule <> annee Then
            
        End If

Tant que nous y sommes, juste après cette instruction, nous mettons à jour la valeur de la variable annee :

        If cellule <> annee Then
            
        End If
        annee = cellule.Value

À partir de là, nous allons pouvoir créer un compteur du nombre de fois qu’une année donnée se répète :

    Dim compteur As Integer
    compteur = 0

Que nous allons endsuite insérer dans la boucle :

        If cellule <> annee Then
            Debug.Print annee, compteur
            compteur = 1
        Else
            compteur = compteur + 1
        End If

Ici, lorsque l’année change, nous affichons l’année, puis le nombre de fois que celle-ci se répète en utilisant le Debug.Print.

En revanche, si l’année reste inchangée, alors nous augmentons simplement le compteur d’une unité !

Nous pouvons maintenant lancer la macro et consulter la fenêtre d’exécution pour en visionner le résultat :

Excel formation - Ajouter ligne automatiquement - 06

 

4. Ajouter une nouvelle ligne

Maintenant que nous sommes en mesure de savoir :

  • Le nombre de lignes,
  • Si les années ont changé

Nous allons pouvoir insérer une nouvelle ligne entre les années avec le compteur de lignes :

        If cellule <> annee Then
            
            cellule.EntireRow.Insert Shift:=xlDown
            …
            compteur = 1
        Else 
        …

Cette instruction permet d’insérer une nouvelle ligne entre les deux années lors d’un changement en décalant les lignes situées en dessous vers le bas :

Excel formation - Ajouter ligne automatiquement - 07

Le curseur reste quant à lui toujours sur la cellule représentée par la variable cellule, qui s’est décalée également vers le bas (sur la première cellule contenant l’année 1975).

Au besoin, nous pouvons maintenant insérer des textes sur cette ligne nouvellement crée, mais au préalable, nous allons remonter le curseur d’une cellule vers le haut en utilisant l’instruction Offset (puis nous le redescendrons juste après) :

            Set cellule = cellule.Offset(-1, 0)
            
            Range("A" & cellule.Row) =  "Année " & annee
            Range("C" & cellule.Row) =  compteur & " Ligne(s)"
            
            cellule.EntireRow.Font.Bold = True
            
            Set cellule = cellule.Offset(1, 0)

Nous avons ici :

  • En colonne A : nous affichons le numéro de l’année
  • En colonne C : nous affichons le nombre de lignes dénombrées
  • Nous en profitons également pour passer toute la ligne en gras

Et pour finir, comme nous l’avons vu à l’instant nous replaçons la cellule d’analyse sur la ligne du dessous.

Ne reste plus qu’à tester la macro en appuyant sur la touche [F5] pour visionner le résultat sur la feuille de calcul :

Excel formation - Ajouter ligne automatiquement - 08

 

 

 



Articles qui pourraient vous intéresser

Comment connecter Excel sur Internet, sans VBA ?
Comment traduire automatiquement des fonctions Excel dans leur version originale ?
Comment analyser les résultats d’un sondage ou questionnaire avec Excel ?
Comment utiliser la fonction SOMME.SI pour effectuer des recherches sur des textes sur Excel ?
Comment calculer et étudier des écarts budgétaires avec Excel ?
Comment verrouiller et protéger un objet (graphique, image, zone de texte…) sur Excel ?
Comment formater des dates correctement dans Excel ?
Comment protéger le formatage des cellules tout en autorisant la saisie de données dans Excel ?
Comment transformer une photo en tableau Excel ?
Comment créer un publipostage automatique avec Excel ? (sans Word !)
Comment créer un graphique Gaufre sur Excel ?
Comment créer un graphique en cascade dans Excel ?

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.