Stephi83
Messages postés19Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention29 avril 2007
-
29 avril 2007 à 01:02
Stephi83
Messages postés19Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention29 avril 2007
-
29 avril 2007 à 18:41
Bonjour,
Je voudrais insérer une ligne entre 2 cellules lorsque celles ci sont différentes mais mon code m'insére une ligne un peu n'importe où (pb de décalage je pense).
Vos idées seront les bienvenues.
Merci
Sub insérer_ligne()
Sheets("Ordres").Range("A1").Select
For I = 1 To 30
If ActiveCell.Offset(I - 1, 0).Value <> ActiveCell.Offset(I, 0).Value Then
ActiveCell.Offset(I, 0).EntireRow.Select
Selection.Insert Shift:=xlDown
End If
Next I
End Sub
A voir également:
Boucle insertion ligne quand 2 cellules différentes
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 29 avril 2007 à 14:33
bonjour,
essaie cette petite fonction
Sub AjouteLigne()
Dim i As Integer, Déb As Integer
Dim F As Long
Déb = 1
Worksheets("feuil1").Select
reco:
For i = Déb To Range("A65536").End(xlUp).Row
If (Cells(i, 1).Value = Cells(i + 1, 1).Value) And _
Cells(i, 1).Value <> 0 Then
Range("A" & i + 1).Select
Selection.EntireRow.Insert
Déb = i + 1
GoTo reco
End If
Next i
End Sub
A+
louis
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 29 avril 2007 à 14:49
Lorsque tu veux ajouter ou supprimer des lignes, commence par la fin.
Et en utilisant Cells comme le dit lermite222 ou encore
Range("A" & i) <> Range("A" & i - 1)
Stephi83
Messages postés19Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention29 avril 2007 29 avril 2007 à 14:58
hello Louis,
je crois qu'une coquille s'est glissée dans ton code car il m'insère une ligne qand les cellules sont identiques ! En fait, il faut juste remplacer le = par <> et ca marche impec.
Merci bp
Sub AjouteLigne()
Dim i As Integer, Déb As Integer
Dim F As Long
Déb = 1
Worksheets("feuil1").Select
reco:
For i = Déb To Range("A65536").End(xlUp).Row
If (Cells(i, 1).Value <> Cells(i + 1, 1).Value) And _
Cells(i, 1).Value <> 0 Then
Range("A" & i + 1).Select
Selection.EntireRow.Insert
Déb = i + 1
GoTo reco
End If
Next i
End Sub
Stephi83
Vous n’avez pas trouvé la réponse que vous recherchez ?
Stephi83
Messages postés19Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention29 avril 2007 29 avril 2007 à 15:13
Merci Mortalino et MPi,
Votre méthode marche également.
Par contre, j'aimerais bien savoir pourquoi il faut éviter le GoTo.
Merci
Sub AjouteLigne()
Dim i As Integer, Déb As Integer
Dim F As Long
Déb = 1
Worksheets("Ordres").Select
For i = 23 To 2 Step -1
If (Cells(i, 1).Value <> Cells(i - 1, 1).Value) And _
Cells(i, 1).Value <> 0 Then
Range("A" & i).Select
Selection.EntireRow.Insert
Déb = i + 1
End If
Next i
End Sub
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 29 avril 2007 à 15:20
Pour la simple et bonne raison qu'il te provoque une nouvelle boucle inutile.
A savoir, si le doublon est trouvé au bout de la 1000e ligne sur 10 000, le GoTo reco retourne avant la boucle For i, est donc repars de 0. Les 1000eres valeurs sont inutilement lu, car trié précedemment.
Ta dernière solution est bien mieux
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~