VBA supprimer ligne si valeur non trouvée sur une autre feuille

cheribibi33

XLDnaute Nouveau
Bonjour,

Je cherche comment on peut supprimer des lignes d'une Feuil2 si dans la Feuil1 les données d"une cellule (par exemple cellule D) n'est plus présente dans cette la Feuil1

Cdt
 

vgendron

XLDnaute Barbatruc
Re : VBA supprimer ligne si valeur non trouvée sur une autre feuille

bonjour

avec une boucle du style
pour chaque valeur de la feuille1
si n'existe pas dans feuille2 alors
supprimer valeur dans feuille1
fin si
prochaine valeur

tu vas me dire. ok, mais le code, c'est quoi?
ce à quoi je répond: sans fichier exemple, je ne me lancerai pas dans du codage qui a de fortes chances de ne pas correspondre à ton besoin réel.

sinon. les mots clés / fonctions qui seront utilisés

for each...next
fonction find()
entirerow.delete
 

cheribibi33

XLDnaute Nouveau
Re : VBA supprimer ligne si valeur non trouvée sur une autre feuille

Bonjour,

Voici ci-joint un exemple :
Dans la Feuil1 les lignes des Réf commande C000006 et C000013 n'existent plus.
Je voudrais avec une VBA que sur la Feuil2 les lignes correspondantes soient automatiquement supprimées.

Cdt
 

Pièces jointes

  • test.xls
    34.5 KB · Affichages: 46
  • test.xls
    34.5 KB · Affichages: 30

vgendron

XLDnaute Barbatruc
Re : VBA supprimer ligne si valeur non trouvée sur une autre feuille

Hello

avec ce code

Code:
Sub sup()


Set Init = Sheets("Feuil2").UsedRange
Init.Select
Set Final = Sheets("Feuil1").UsedRange
'Final.Select

For i = Init.Rows.Count To 1 Step -1
    Init.Item(i, 4).Select
    Set c = Final.Find(Init.Item(i, 4))
    If c Is Nothing Then
        Init.Item(i, 4).EntireRow.Delete
    End If
    
Next i

End Sub
 

vgendron

XLDnaute Barbatruc
Re : VBA supprimer ligne si valeur non trouvée sur une autre feuille

Re

pas besoin de tous les select.. c'était pour moi, pour vérifier le code au fur et à mesure

Code:
Sub sup()


Set Init = Sheets("Feuil2").UsedRange
Set Final = Sheets("Feuil1").UsedRange

For i = Init.Rows.Count To 1 Step -1
    Set c = Final.Find(Init.Item(i, 4))
    If c Is Nothing Then
        Init.Item(i, 4).EntireRow.Delete
    End If
Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 136
Membres
103 129
dernier inscrit
Atruc81500