Comparer les valeurs de 2 listes

Fermé
gwendu12345 Messages postés 2 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 4 juillet 2017 - 4 juil. 2017 à 17:51
gwendu12345 Messages postés 2 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 4 juillet 2017 - 4 juil. 2017 à 21:29
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éé :

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:

1 réponse

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
Modifié le 4 juil. 2017 à 21:03
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:
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?
1
gwendu12345 Messages postés 2 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 4 juillet 2017
4 juil. 2017 à 21:29
Merci déjà pour ces conseils, je vais continuer de le travailler.

Bonne soirée
0