Je souhaite faire une Macro qui ira chercher les valeurs de deux cellules. Une comparaison est faite et en fonction de cette comparaison je voudrais insérer une ligne vierge d'une taille défini (exemple 5 de haut).
For i = 2 To 6
y = i - 1
If Cells(i, 1).Value <> Cells(y, 1).Value Then
Cells(i, 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
Next
Mon problème
Le problème c'est que dans cette situation ma Macro va ajouter des lignes entre "Ville" et "Pays". tandis que je voudrais séparer les valeurs qui ne sont pas identitique.
J'avoue bloquer, mais je suis sûr que la solution n'est pas si complexe !
Je vous remercie d'avance pour le temps passé à me lire et peut-être même à me répondre !
Re : [VBA] Détecter la valeur d'une formule, et insérer une ligne vierge
Bonjour dodoritfort,
Quand tu insères des lignes dans la feuille de calcul, il renumérote les lignes suivantes
il est donc beaucoup plus simple de parcourir les lignes de bas en haut
Re : [VBA] Détecter la valeur d'une formule, et insérer une ligne vierge
Merci beaucoup tototiti ! J'arrive à présent à ce que je veux sur une feuille Excel simple.
Mais je bloque sur un autre petit problème...
Lorsque j'entre manuellement des valeurs dans Excel et que j'utilise donc la Macro ci-dessous tout fonctionne parfaitement.
Code:
For i = 12 To 2 Step -1
If Cells(i, 1).Value <> Cells(i - 1, 1).Value Then
Cells(i, 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
Next
Sur ma feuille Excel les cellules sont remplis par des formules... et la Macro n'insère pas de ligne.
J'ai l'impression que Cells().Value ne teste pas le résultat de la formule ?
Re : [VBA] Détecter la valeur d'une formule, et insérer une ligne vierge
Donc je me suis trompé dans mon analyse !
Il teste bien la valeur de la formule, cependant il faut sélectionner la cellule dont on teste la valeur pour insérer la nouvelle ligne sinon cela n'a pas d'effet. Et de plus si on ne sélectionne qu'une cellule, ce sera une insertion de cellule dans la colonne.
Pour insérer une ligne entière en testant deux valeurs...
Voici la Macro corrigée :
Code:
For i = NbLignes To 2 Step -1
If Cells(i, 7).Value <> Cells(i - 1, 7).Value Then
Rows(i).EntireRow.Select ' C'est ici qu'était mon erreur !
Selection.Insert Shift:=xlDown
End If
Next
Merci beaucoup tototiti, avec ton aide j'ai pu résoudre ton problème !
Re : [VBA] Détecter la valeur d'une formule, et insérer une ligne vierge [RESOLU]
Est-ce que si l'on ne sélectionne pas le temps d'exécution est significativement plus rapide ?
Si c'est bien le cas comme je l'imagine c'est vraiment génial !
Je vais me renseigner plus particulièrement à ce sujet !