Bonjour,

J'ai un problème avec ma macro vb qui n'insère pas une ligne comme je le souhaiterai.

Imaginez une colonne que l'on a remplit et dont certaines cases sont fusionnées avec leurs homologues d'en dessous. Si je souhaite insérer une ligne au dessus, rien de plus simple, un clic droit + insertion.

J'ai utilisé une macro enregistrée et je me suis retrouvé avec ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Jusque la rien de choquant, une ligne a été insérée, sauf que si je parcours moi-même ma colonne (je vous passe les déclarations) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 For Each cell In PlageTest
            If cell.Value = "Grand titre2" Then ' on dit ce qu'on cherche
                trouve = i ' si on l'a trouvé on met la variable trouvé a i
            Else ' sinon on incremente i pour dire qu'on passe à la case suivante
                i = i + 1
            End If
        Next cell
 
If trouve > 0 Then ' si trouve > 0 c'est qu'on a trouvé la valeur demandée
             Call procedureAjoutMenu(trouve) ' on appelle la procédure d'ajout
        End If
Et la sub procedureAjouterMenu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Sub procedureAjoutMenu(cellule As Integer)
    MsgBox "Trouvé à la " & cellule & " ligne" ' on affiche la ligne à laquelle on insère
    Range(Cells(cellule, 4), Cells(cellule, 4)).Select ' sélectionne la cellule
    Selection.EntireRow.Insert ' on insère la ligne
End Sub
A ce moment, ce n'est plus une ligne qui est ajoutée, mais autant de lignes que la fusion inférieure.
C'est à dire que dans ce code je souhaite insérer une ligne après "Grand titre2", eh bien si par malheur la ligne d'en dessous (qui contiendra Grand titre3 vous vous en doutez) est fusionnée avec la ligne d'encore en dessous, ma macro ajoutera 2 lignes au lieu d'une.

Pourquoi ?
Tout simplement parce que pour ajouter une ligne je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Selection.EntireRow.Insert ' on insère la ligne
Et ma sélection est une zone qui contient plusieurs cases puisque elles sont fusionnées.

Je me demande donc comment je peux forcer vb à insérer une et UNIQUE ligne quand bien même celles d'en dessous seraient fusionnées

Je sais bien que ce que j'explique est extrêmement brouillon, mais je ne trouve pas d'autres mots pour l'expliquer et il semble que poster des fichiers sources soit mal vu.