Insérer une ligne avec condition

Résolu/Fermé
Ecrelinf Messages postés 36 Date d'inscription mercredi 12 mars 2014 Statut Membre Dernière intervention 26 février 2015 - 17 mars 2014 à 17:56
Ecrelinf Messages postés 36 Date d'inscription mercredi 12 mars 2014 Statut Membre Dernière intervention 26 février 2015 - 19 mars 2014 à 08:44
Bonjour,

Voici mon problème :
J'ai un tableau excel avec dans la colonne J, des valeurs triés selon un tri personnalisé (elles ne sont pas triées dans l'ordre croissant ou décroissant) et j'aimerais que lorsque l'on "change" de valeur on insère une ligne. Par exemple :
J'ai :
308 en J2
308 en J3
308 en J4
250 en J5

Je voudrais insérer une ligne entre J4 et J5.

J'ai essayé ça :

Dim f As Long
For f = 1 To i - 1
If Range("J" & f).Value <> Range("J" & f - 1) Then
Rows(f + 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
Next

Avec i-1 la dernière ligne contenant des valeurs.

Lorsque j'exécute, j'ai en fait i-1 lignes qui s'insèrent entre la ligne 1 et 2 ^^'

Est-ce que quelqu'un a une idée de comment je pourrais faire ? J'imagine qu'un for n'est pas la solution, mais peut être qu'avec un while ...

Ah j'oubliais, je suis novice sur VBA, donc allez y douuuuucement ahah

Merci d'avance,

Ecrelinf

2 réponses

f894009 Messages postés 17241 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 février 2025 1 713
18 mars 2014 à 09:35
Bonjour,

un exemple:

Sub test()
Dim f As Long
'adaptez le nom de la feuille
With Worksheets("feuil1")
'derniere cellule non vide colonne J
derlig = Range("J" & Rows.Count).End(xlUp).Row
'boucle de fin vers debut-1
For f = derlig To 2 Step -1
If Range("J" & f).Value <> Range("J" & f - 1) Then
Rows(f).Insert Shift:=xlUp
End If
Next f
End With
End Sub
1
Ecrelinf Messages postés 36 Date d'inscription mercredi 12 mars 2014 Statut Membre Dernière intervention 26 février 2015
19 mars 2014 à 08:44
Nickel merci à toi !!
0