Insertion ligne

Bonjour,

dans cette macro je souhaite insérer une ligne dès que je trouve une valeur en cellule Di qui soit en bleu.

Ne maitrisant pas encore bien VBA, j'ai dans un premier temps remplacer Rows(i).insert par Msgbox(i) pour vérifier que j'avais

les bonnes valeurs pour l'insertion, mais dès que je remplace par Rows(i).insert, cela ne marche pas.

Quelqu'un voit il un pb dans cette macro?

Sub insert()

Dim Nbligne%, i%

Nbligne = ActiveSheet.UsedRange.Rows.Count

For i = 1 To Nbligne

If Range("D" & i).Font.ColorIndex = 5 Then Rows(i).insert

Next i

End Sub

Cordialement.

Bonjour,

Tu ne peu pas nommer ta procédure avec le même nom qu'une fonction.

Met par exemple

Sub InserLigne()

A+

Bonjour Patrick33,Lermite,

Je pense que la boucle va créer ,elle aussi ,un problème.

Essaie avec :

Sub insertligne()

Dim Nbligne%, i%

Nbligne = ActiveSheet.UsedRange.Rows.Count

For i = Nbligne To 1 Step -1

If Range("D" & i).Font.ColorIndex = 5 Then Rows(i).insert

Next i

End Sub

En général quand on boucle pour ajouter ou supprimer lignes et colonnes , il faut partir du bas ou de la droite et revenir vers le haut ou vers la gauche.

Dans ton cas, lorsque tu rajoutes une ligne ,tu décales ta ligne i vers le bas,en incrémentant i avec i+1 ,tu retombes sur la même ligne.Tu vas donc boucler indéfiniment sur la même ligne.

Amicalement

Bonjour Haonv, et bien vu.

Pourrais aussi ajouter que le test n'irai pas jusqu'au bout vu que NBligne ne change pas mais que le nombre de lignes augmente.

A+

Re,

Bien vu aussi.

La boucle s’arrêtera en effet lorsque i prendra la valeur de nbligne...

A condition qu'il n'y ait pas plus de 32767 lignes, i étant typé integer...

Amicalement

Bonjour,

J'ai testé la macro. Pas de souci particlier,

et merci pour votre aide.

Patrick33

Rechercher des sujets similaires à "insertion ligne"