Bibliothèque de composant, transfère et vérification de donnée entre 2 docs
Bonjour,
Je suis bloqué depuis quelques jours sur un petit projet de bibliothèque de composant, qui se sépare en deux documents le premier où l'on rentre les informations et le seconde qui les récupère (je suis obligé d'avoir deux documents.).
Je cherche a :
1. Comparer un group de 3 cellules par exemple : C2 | D2 | E2 a une liste qui se trouve dans la même configuration X | X | X mais dans un autre fichier "BIBLIOTHÈQUE" et envoyer un message si il trouve une ligne qui contient exactement C2 | D2 | E2 avec dans le message les informations de B2, C2, D2 et E2
2. Ajouter B2 | C2 | D2 | E2 en bas de la liste de l'autre fichier "BIBLIOTHÈQUE" dans la page que correspond A2
(puis faire la même chose pour les lignes 3 et 4)
J'espère avoir été assez clair, je vous laisse un exemple dans mes Excel.
Encore merci
Je vais prendre les problèmes un par un ça m'aidera sûrement pour avoir de l'aide, pour commencer, je cherche à comparer 3 cellules à des colonnes et à envoyer un msg dans les cas où les 3 valeurs sont trouvées sur la même ligne. Actuellement, ça fonctionne, mais ça ne prend pas en compte que les valeurs soient sur la même ligne ou non :/
Bonjour Max
Bonne idée de décomposer les besoins
Voici un code qui devrait vous convenir, j'espère,
Private Sub CommandButton1_Click()
Dim Lig As Long, dLig1 As Long, Lig1 As Long
Dim ShtE As Worksheet, ShtM As Worksheet
Dim Found As Boolean, MemLig As Long
' Intialiser le FLAG
Found = False: MemLig = 0
Set ShtE = ThisWorkbook.Sheets("ENTRER")
' Parcourir les lignes de la feuille
For Lig = 2 To 4
' Définir la feuille
Set ShtM = ThisWorkbook.Sheets(ShtE.Range("A" & Lig).Value)
dLig1 = ShtM.Range("A" & Rows.Count).End(xlUp).Row
For Lig1 = 2 To dLig1
If ShtE.Range("C" & Lig) = ShtM.Range("B" & Lig1) And _
ShtE.Range("D" & Lig) = ShtM.Range("C" & Lig1) And _
ShtE.Range("E" & Lig) = ShtM.Range("D" & Lig1) Then
' Les 3 colonnes correspondent
MemLig = Lig1
Found = True
End If
Next Lig1
If Found Then
MsgBox "Les 3 valeurs de la ligne ENTRER n° " & Lig & " correspondent à la ligne n° " & MemLig
Found = False: MemLig = 0
Else
MsgBox "Aucune valeur trouvée la ligne ENTRER:" & Lig
End If
Next Lig
Set ShtE = Nothing: Set ShtM = Nothing
End Sub
On peut faire plus optimiser, mais celui-ci est compréhensible je pense
A+
Bonjour Bruno,
Merci de votre répons, je n'ai malheureusement pas réussi à faire fonctionner votre code. (aucune valeur trouvée dans tous les cas.)
Je vous joins une doc avec des couleurs qui sera sûrement plus claire et vous donne un exemple d'erreur à signaliser en rouge (la range C2:E2 de la page ENTRER et trouver en copie dans ça liste (donc ligne2 c'est la page "MONTANT_DROITE) et on retrouve donc les mêmes valeurs en B3:D3)
Re,
C'était très clair pour moi, j'ai juste un bug dans le code apparemment
Je viens de modifier le code de mon précédent post
A+
Ah d'accord effectivement, je ne pensait pas que vous aviez déjà pris en compte mes 3 pages