Je ne comprends plus grand chose. Jai fait une macro pour tester l'effacement de certaines lignes par rapport
a certains mots clefs.
Ca marcher a un moment mais maintenant plus rien.
Imaginons par exemple un tableau qui va de A1 a K11.
Jai mis des mots clefs en colonne C, I et J
Jessaie donc d'effacer les lignes ou se trouvent ces mots clefs (Loubna, soulier et boite)
mais jai limpression que cest la notion de Activecell.offset (1,0) qui fait la difference car ca a marcher mieux en C2 par exemple).
Quelqu'un peut il m'aider svp et m'expliquer mieux la notion de Activate?
En fait je veux faire une boucle qui elimine les lignes avec mots clefs mais je ne sais trop comment la faire s'arreter.
Merci d'avance. Ci dessous la ligne de code.
Columns("K:K").EntireColumn.Delete
Range("C1").Select
Do While Not IsEmpty(ActiveCell)
If ActiveCell = "Loubna" Then
ActiveCell.EntireRow.Delete
End If
Loop
Range("C1").Select
Do While Not IsEmpty(ActiveCell)
If ActiveCell.Offset(0, 6) = "boite" Then
ActiveCell.EntireRow.Delete
End If
If ActiveCell.Offset(0, 7) = "soulier" Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(1, 0).Activate
Loop
Bonsoir Sadoul, le forum,
Pour tester, tu peux mettre un petit fichier exemple, sans données confidentielles.
Si non, essaies d’insérer cette condition dans une boucle :
If Cells(i, 3).Value = “ Loubna “ Or Cells(i, 9).Value = “soulier” Or Cells(i, 10).Value = “boite” Then Rows(i).Delete
Il y a des Do While mais une seule cellule de sélectionnée (range("C1").Select)
La boucle ne boucle pas longtemps.
Exécute le code en pas-à-pas en frappant F8 pour chacun des pas.
De plus, en pas-à-pas, en plaçant le curseur de souris sur une variable, l'info-bulle nous en montre sa valeur.
avec If ActiveCell.Offset(0, 6) = "boite" Then..., Si... la ligne est effacée,
tu testeras avec ActiveCell.Offset(0, 7)non pas la même ligne mais la suivante !
donc repart sur une autre boucle pour tester ce dernier cas.
Tu peux n'utiliser qu'une boucle ainSi...*
Code:
Range("C1").Select
Do While Not IsEmpty(ActiveCell)
With Selection
If .Value = "Loubna" Or .Offset(, 6).Value = "boite" Or .Offset(, 7).Value = "soulier" Then
.EntireRow.Delete
Else
.Offset(1, 0).Select
End If
End With
Loop
* indépendamment du fait que le test sur la première cellule non vide est fiable car la boucle s'arrête là même si plus bas tu as cellules remplies.