VBA, supprimer une ligne en fonction de 2 conditions

Bonjour à tous,

Voilà je suis un peu novice sur VBA, et j'ai souvent des choses à faire dessus, je me débrouille comme je peux..

Aujourd'hui, j'ai une liste de contacts avec tout un tas d'informations, et je voudrais leur envoyer un courrier postal. Cependant, je voudrais supprimer quelques ligne car c'est la même adresse et le même nom, mais pas le même prénom (frère et sœur par exemple).

Je me suis donc lancé dans une maccro, mais je reçois constamment l'erreur suivante : "Erreur d’exécution '1004' : Erreur définie par l'application ou par l'objet.

Voilà ma maccro :

Sub eraseEntireRow()

Dim nbligne As Long

nbligne = Range("A1").CurrentRegion.Rows.Count

For i = nbligne To 1 Step -1

If (Cells(2, i).Value) = (Cells(2, i + 1).Value) And (Cells(6, i).Value) = (Cells(6, i + 1).Value) Then

Selection.EntireRow.Delete

End If

Next i

End Sub

Pour mieux comprendre, en 2 il y a les noms, en 6 il y a l'adresse. j'essaie donc de voir si la valeur de la cellule 2 de la ligne 1 par exemple est égale à la valeur de la cellule 2 de la ligne 2, pareil pour la cellule 6. Si c'est le cas, je supprime la ligne.

Help pls !

Merci !

Lambert

Bonjour et bienvenu(e)

Teste

Sub eraseEntireRow()
Dim nbligne As Long, I As Long
  nbligne = Range("A1").CurrentRegion.Rows.Count

  For I = nbligne To 2 Step -1
    If (Cells(2, I).Value) = (Cells(2,I - 1).Value) And (Cells(6, I).Value) = (Cells(6,I - 1).Value) Then
      Rows(I).Delete
    End If
  Next I
End Sub

Bonjour, dans un premier temps, précisez le nom des feuilles où doivent avoir lieu les manipulations, en complément des erreurs trouvées par banzaï

Merci pour vos réponses, je viens d'essayer ta maccro Banzai64, ça ne fonctionne pas, j'ai toujours le même message d'erreur : "Erreur d’exécution '1004' : Erreur définie par l'application ou par l'objet."

La feuille où doit avoir lieu la manipulation est Feuil1 à priori.


Fait que je n'avais pas noté, l'erreur se produit quand j'arrive à la ligne du "if".

If (Cells(2, I).Value) = (Cells(2,I - 1).Value) And (Cells(6, I).Value) = (Cells(6,I - 1).Value) Then"

Bonjour

Tu as bien modifier l’initialisation de la boucle ?

For I = nbligne To 2 Step -1

Sinon fournis un fichier anonymisé

Oui j'ai bien modifié l'initialisation de la boucle, j'ai toujours mon erreur, aussi j'ai essayé en rajoutant

Worksheets("Feuil1").Activate comme me disait ForceRouge mais cela ne change rien !

Pour ce qui est de donner un fichier anonymisé, j'en ai créé un rapidement pour l'exemple (l'autre fait 8000 lignes).


Bizarrement avec ce fichier ça fonctionne... Je ne comprends pas vraiment ce qu'il bug sur l'autre.

Merci pour vos réponses en tout cas !

53test.xls (17.50 Ko)

Pour mieux comprendre, en 2 il y a les noms, en 6 il y a l'adresse.

EN 6 ? En colonne 6 ou à la ligne 6 ?

Parce que les deux premières comparaisons sont sur la ligne 2, --> Cells(2... et la deuxième sur la ligne 6 --> Cells(6....

Avec un fichier mis en ligne ça m'interpelle.

C'est effectivement sur les colonnes 2 et 6, pas les lignes !! J'ai fait une boulette ?

Bonjour

Pas (trop) l'habitude de Cells

Essayes cette macro

Sub eraseEntireRow()
Dim nbligne As Long, I As Long
  nbligne = Range("A1").CurrentRegion.Rows.Count

  For I = nbligne To 2 Step -1
    If (Range("B" &  I).Value) = (Range("B" & I - 1).Value) And (Range("F" & I).Value) = (Range("F" & I - 1).Value) Then
      Rows(I).Delete
    End If
  Next I
End Sub

Mais tu compares même nom (colonne B - ou 2) et même date de naissance (Colonne F - ou 6)

Ben cells(6,i) et cells(2,i) ce ne sont pas les mêmes lignes,

I c'est un compte de lignes, et vous utilisez cette valeur pour les colonnes...

donc si vous avez 8000 lignes, excel n'ayant pas 8000 colonnes, forcément ça créer une erreur

Merci Banzai64 !!! Ça vient de marcher avec ta dernière maccro !!! Et effectivement j'ai du modifier F par G, c'était pas la bonne colonne, mais la maccro fonctionne parfaitement !

LambertCr a écrit :

Merci Banzai64 !!! Ça vient de marcher avec ta dernière maccro !!! Et effectivement j'ai du modifier F par G, c'était pas la bonne colonne, mais la maccro fonctionne parfaitement !

Rechercher des sujets similaires à "vba supprimer ligne fonction conditions"