VBA / Activecell.offset (1,0) Probleme

Sadoul

XLDnaute Nouveau
Bonjour,

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
 
Dernière édition:

bbb38

XLDnaute Accro
Re : VBA / Activecell.offset (1,0) Probleme

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
Cordialement,
Bernard.
 
Dernière édition:

Gelinotte

XLDnaute Accro
Re : VBA / Activecell.offset (1,0) Probleme

Bonsoir,

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.


G
 

Si...

XLDnaute Barbatruc
Re : VBA / Activecell.offset (1,0) Probleme

salut

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.
 

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch