Macro comparaison colonne et ajout ou suppression

  • Initiateur de la discussion Initiateur de la discussion jchap02
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jchap02

Guest
Bonjour,

Je cherche à faire une comparaison de données entre deux colonnes à l’aide d’une macro mais vu mon niveau de connaissance en VBA, c’est plus que difficile.
J’explique en détails :
Dans un classeur j’ai deux feuilles « Commande » et « Suivi Commande ».
A partir de la colonne « N° Commande » de la feuille « Suivi Commande » je souhaite vérifier si les différents numéros de commande sont présents dans la colonne « N° Commande » de la feuille « Commande ».
1.Si le numéro de commande est trouvé sur les deux feuilles alors on ne fait rien.
2.Si le numéro de commande n’est pas trouvé sur la feuille « Commande » alors on supprime la ligne correspondante au numéro de commande dans la feuille « Suivi Commande »
3. Si un numéro de commande est présent sur la feuille « Commande » et pas sur la feuille « Suivi Commande » alors on doit ajouter en bas du tableau de la feuille « Suivi Commande » une nouvelle ligne reprenant tous les détails de la commande.
J’espère avoir été suffisamment clair.
Merci d’avance pour votre aide.
 
Re : Macro comparaison colonne et ajout ou suppression

Bonjour et bienvenue sur le forum

Peux-tu déposer ta feuille avec des données non confidentielles que tu as. Avec tes explications, il faut la recréer (alors qu'elle existe).....

JP
 
Re : Macro comparaison colonne et ajout ou suppression

Bonjour JP et merci pour ton aide.
Le fichier est en pièce jointe.
Pour être un peu plus précis :
Il faut vérifier que les numéros de commande situés dans la colonne H de la feuille « Suivi Commande », sont présents ou pas dans la colonne J de la feuille « Commande ».
Si c’est le cas alors il ne faut rien faire.
Si un des numéros de commande de la feuille « Suivi Commande » n’est plus dans la feuille « Commande » alors il faut supprimer la ligne entière de la commande en question dans la feuille « Suivi Commande ».
Ensuite il faut rapatrier les nouvelles commandes dans « Suivi Commande », c'est-à-dire :
Tous les numéros de commandes de la feuille « Commande » qui ne sont pas présents dans « Suivi Commande », il faudrait ajouter une nouvelle ligne en bas du tableau de la feuille « Suivi Commande » qui recopie les données de la feuille « Commande ».
J’espère que c’est un peu plus clair.
Encore merci pour ton aide.
 

Pièces jointes

Re : Macro comparaison colonne et ajout ou suppression

Bonsoir

Ci dessous le code qui permet de faire le travail demandé.
A tester
Code:
Option Explicit


Sub travdem()
Dim Cellule1 As Range
Dim Cellule2 As Range
Dim plage2 As Range
Dim Nomfeuille1 As String
Dim Nomfeuille2 As String
Dim Col1 As String, Col2 As String
Dim I As Long
'parametre
' pour boucler sur la colonne 1
Nomfeuille1 = "Suivi Commande"
Nomfeuille2 = "Commande"
Col1 = "H"
Col2 = "J"
With Sheets(Nomfeuille2)
Set plage2 = .Range(Col2 & "2:" & Col2 & .Range(Col2 & .Rows.Count).End(xlUp).Row)
End With

With Sheets(Nomfeuille1)

For Each Cellule1 In .Range(Col1 & "2:" & Col1 & .Range(Col1 & .Rows.Count).End(xlUp).Row)

Set Cellule2 = plage2.Find(Cellule1, LookIn:=xlValues)
If Not Cellule2 Is Nothing Then
'Si c’est le cas alors il ne faut rien faire.
Else
'Si un des numéros de commande de la feuille « Suivi Commande » n’est plus dans la feuille « Commande » alors il faut supprimer la ligne entière de la commande en question dans la feuille « Suivi Commande ».
    Cellule1 = ""
End If
Next Cellule1

For I = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
    If .Range(Col1 & I) = "" Then .Rows(I).Delete Shift:=xlUp
Next I


End With


' on modifie la recherche
With Sheets(Nomfeuille1)
Set plage2 = .Range(Col1 & "2:" & Col1 & .Range(Col1 & .Rows.Count).End(xlUp).Row)
End With



With Sheets(Nomfeuille2)

For Each Cellule1 In .Range(Col2 & "2:" & Col2 & .Range(Col2 & .Rows.Count).End(xlUp).Row)

Set Cellule2 = plage2.Find(Cellule1, LookIn:=xlValues)
If Not Cellule2 Is Nothing Then

Else
I = Sheets(Nomfeuille1).Range("h" & Sheets(Nomfeuille1).Rows.Count).End(xlUp).Row + 1
Sheets(Nomfeuille1).Range("a" & I) = .Range("b" & Cellule1.Row)
Sheets(Nomfeuille1).Range("b" & I) = .Range("c" & Cellule1.Row)
Sheets(Nomfeuille1).Range("c" & I) = .Range("d" & Cellule1.Row)
Sheets(Nomfeuille1).Range("d" & I) = .Range("D" & Cellule1.Row)
Sheets(Nomfeuille1).Range("e" & I) = .Range("E" & Cellule1.Row)
Sheets(Nomfeuille1).Range("f" & I) = .Range("g" & Cellule1.Row)
Sheets(Nomfeuille1).Range("g" & I) = .Range("i" & Cellule1.Row)
Sheets(Nomfeuille1).Range("h" & I) = .Range("j" & Cellule1.Row)
Sheets(Nomfeuille1).Range("k" & I) = .Range("H" & Cellule1.Row)
Sheets(Nomfeuille1).Range("r" & I) = .Range("R" & Cellule1.Row)

    
End If
Next Cellule1

End With
End Sub


JP
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
455
Réponses
1
Affichages
150
  • Question Question
Microsoft 365 Tableau
Réponses
5
Affichages
253
Réponses
2
Affichages
196
Retour