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 :
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 Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Et la sub procedureAjouterMenu
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
A ce moment, ce n'est plus une ligne qui est ajoutée, mais autant de lignes que la fusion inférieure.
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
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
Et ma sélection est une zone qui contient plusieurs cases puisque elles sont fusionnées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Selection.EntireRow.Insert ' on insère la ligne
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.
Partager