Insérer des lignes avec conditions
Bonsoir à tous,
Je donne ma langue au chat !
J'ai passé des heures à chercher : j'y arrive pas!
Pourtant c'est vraiment bête, mais pas moyen.
Je dois donc parvenir à insérer une ligne si ma cellule ne contient pas "Non assigné" et si le contenu de ma cellule est différent de ma cellule +1 ou -1 selon le sens de la boucle, mais systématiquement j'ai une ligne indésirable ajoutée sous "Non assigné"
Sub test3()
Dim dernièreLigne As Long
Dim i As Long
' Trouver la dernière ligne avec des données dans la colonne AX
dernièreLigne = Cells(Rows.Count, "AX").End(xlUp).Row
' Parcourir les lignes de la dernière à la cinquième ligne (en sens inverse)
For i = dernièreLigne To 5 Step -1
If Range("AX" & i).Value <> "Non assigné" And Range("AX" & i + -1).Value <> Range("AX" & i).Value Then Range("AX" & i).EntireRow.Insert
Next i
End SubJ'ai essayé dans tous les sens, je ne trouve pas....
Vous seriez des anges de m'apporter une solution.
PS : après j'ai beaucoup d'autres choses à faire sur ces lignes, comme additionner les valeurs de la colonne D de la ligne insérée précédemment +1 jusqu'à la nouvelle ligne insérée -1, donc j'aurai besoin de conserver le i pour ma formule, ça je pense que ça devrait aller, mais je m'énerve à buter sur cette étape ci (depuis ce matin à vrai dire)
Bon sang ! Je savais que c'était une connerie.
Comme quoi quand on reste le nez sur un problème toute la journée on fini par ne plus rien voir.
Il m'a suffit de 30 minutes de pause, et 5 minutes plus tard j'avais compris
Sub test3()
Dim dernièreLigne As Long
Dim i As Long
' Trouver la dernière ligne avec des données dans la colonne AX
dernièreLigne = Cells(Rows.Count, "AX").End(xlUp).Row
Debug.Print dernièreLigne
' Parcourir les lignes de la dernière à la cinquième ligne (en sens inverse)
For i = dernièreLigne To 5 Step -1
If Range("AX" & i).Value <> Range("AX" & i - 1).Value And Range("AX" & i - 1).Value <> "Non assigné" And Range("AX" & i).Value <> "Non assigné" Then Range("AX" & i).EntireRow.Insert
Next i
End SubLa prochaine fois que je bute sur un problème je me ferai des crêpes ;)
Re,
Bien joué !
Sub test3()
Dim dernièreLigne As Long
Dim i As Long
With Sheets("Rentabilité")
' Trouver la dernière ligne avec des données dans la colonne AX
dernièreLigne = .Cells(Rows.Count, "AX").End(xlUp).Row
Debug.Print dernièreLigne
' Parcourir les lignes de la dernière à la cinquième ligne (en sens inverse)
For i = dernièreLigne To 5 Step -1
If .Range("AX" & i).Value <> "Non assigné" And _
.Range("AX" & i - 1).Value <> "Non assigné" And _
.Range("AX" & i - 1).Value <> .Range("AX" & i).Value Then
.Range("AX" & i).EntireRow.Insert
End If
Next i
End With
End SubBonne continuation,
et si ça intéresse quelqu'un voici la même chose mais en boucle inversée, du haut vers le bas, pour permettre de conserver la valeur de i et l'incrémenter dans une formule
Sub test4()
Dim dernièreLigne As Long
Dim i As Long, lignePrecedente As Long
' Trouver la dernière ligne avec des données dans la colonne AX
dernièreLigne = Cells(Rows.Count, "AX").End(xlUp).Row
lignePrecedente = 4
' Parcourir les lignes de la dernière à la cinquième ligne (en sens inverse)
For i = 5 To dernièreLigne
If Range("AX" & i).Value <> Range("AX" & i + 1).Value And Range("AX" & i + 1).Value <> "Non assigné" And Range("AX" & i).Value <> "Non assigné" Then
Range("AX" & i + 1).EntireRow.Insert
Range("D" & i + 1).FormulaR1C1 = "=SUM(R" & lignePrecedente & "C:R[-1]C)"
i = i + 1
lignePrecedente = i + 1
End If
Next i
End SubMerci xorsankukai ;)
C'est fou comme je peux parfois tourner en rond sur des choses toutes simples !
