Comparer les valeurs de 2 listes
gwendu12345
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
gwendu12345 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
gwendu12345 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je sollicite votre aide pour comparer 2 listes et faire une action si une valeur est présente dans les 2 listes.
J'ai dans la feuille 1: La liste des tâches présentes dans une notice d'utilisation
Dans la feuille 2: Les tâches associées à une personne (liste PERSONNEL)
Je voudrais comparer ces 2 listes et si une tâche est présente dans la liste NOTICE et dans la liste PERSONNEL, ajouter dans la feuille3 la notice en face de la personne concernée
J'ai essayé de comparer les 2 listes "Notice de la machine 1" et la 1ère personne "DUPONT" mais sans succès...
Voilà le code que j’ai créé :
Je voudrais donc vous demander :
1) Comment modifier mon code pour n'ajouter que les notices qui contiennent au moins une tâche de la liste "DUPONT"
2) (si possible) Comment boucler pour le faire pour chaque personne?
Merci d'avance pour votre aide
Cordialement.
Je sollicite votre aide pour comparer 2 listes et faire une action si une valeur est présente dans les 2 listes.
J'ai dans la feuille 1: La liste des tâches présentes dans une notice d'utilisation
Dans la feuille 2: Les tâches associées à une personne (liste PERSONNEL)
Je voudrais comparer ces 2 listes et si une tâche est présente dans la liste NOTICE et dans la liste PERSONNEL, ajouter dans la feuille3 la notice en face de la personne concernée
J'ai essayé de comparer les 2 listes "Notice de la machine 1" et la 1ère personne "DUPONT" mais sans succès...
Voilà le code que j’ai créé :
Public Sub Start()
Dim CompteurColonneFeuille1
Dim CompteurColonneFeuille2
Dim NomFeuille1
Dim ContenuCaseFeuille1 'Contenu d une case
NomFeuille1 = "Feuil1"
NomFeuille2 = "Feuil2"
NomFeuille3 = "Feuil3"
LigneAScruterFeuille1 = 2
LigneAScruterFeuille2 = 1
CompteurColonneFeuille1 = 3
Do
L = Sheets(NomFeuille3).Cells(1, Cells.Columns.Count).End(xlToLeft).Column + 1 'Permet de se positionner sur la dernière colonne de tableau NON VIDE
Sheets(NomFeuille1).Select
ContenuCaseFeuille1 = Cells(LigneAScruterFeuille1, CompteurColonneFeuille1).FormulaR1C1
Sheets(NomFeuille2).Select
CompteurColonneFeuille2 = 3
Do
ContenuCaseFeuille2 = Cells(LigneAScruterFeuille2, CompteurColonneFeuille2).FormulaR1C1
If ContenuCaseFeuille1 = ContenuCaseFeuille2 Then
Sheets(NomFeuille3).Cells(1, L).Value = Worksheets(NomFeuille1).Range("B2").Value
Exit Do
End If
CompteurColonneFeuille2 = CompteurColonneFeuille2 + 1
Loop While Len(ContenuCaseFeuille2) > 0
CompteurColonneFeuille1 = CompteurColonneFeuille1 + 1
Loop While Len(ContenuCaseFeuille1) > 0
Worksheets(NomFeuille3).Select
MsgBox ("Terminé")
End Sub
Je voudrais donc vous demander :
1) Comment modifier mon code pour n'ajouter que les notices qui contiennent au moins une tâche de la liste "DUPONT"
2) (si possible) Comment boucler pour le faire pour chaque personne?
Merci d'avance pour votre aide
Cordialement.
A voir également:
- Comparer les valeurs de 2 listes
- Supercopier 2 - Télécharger - Gestion de fichiers
- Excel liste de valeurs - Guide
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- Faire 2 colonnes sur word - Guide
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, d'abord, je te suggère:
- d'ajouter option "explicit" en début de code, ce qui te forcera à déclarer toutes tes variables
- de préciser le type de tes variables, par exemple:
- d'utiliser "notice" et "personnel" au lieu de feuille1 et feuille2, dans les noms des variables
- de ne pas faire de .Select
- de sortir l'assignation de L (L=...) de la boucle Do
ensuite:
- réfléchir à pourquoi, au lieu d'ajouter dans la feuille3 la notice en face de la personne concernée, tu fais ceci:
que pourrais-tu faire d'autre?
- d'ajouter option "explicit" en début de code, ce qui te forcera à déclarer toutes tes variables
- de préciser le type de tes variables, par exemple:
Dim LigneAScruterFeuille1 As Long, LigneAScruterFeuille2 As Long Dim L As Long
- d'utiliser "notice" et "personnel" au lieu de feuille1 et feuille2, dans les noms des variables
- de ne pas faire de .Select
- de sortir l'assignation de L (L=...) de la boucle Do
ensuite:
- réfléchir à pourquoi, au lieu d'ajouter dans la feuille3 la notice en face de la personne concernée, tu fais ceci:
Sheets(NomFeuille3).Cells(1, L).Value = Worksheets(NomFeuille1).Range("B2").Value Exit Do
que pourrais-tu faire d'autre?
Bonne soirée