Matcher champs
djul_87
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
via55 Messages postés 14512 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14512 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
sur un classeur1 j'ai 3 champs:
ID REFERENCE COULEUR
4533 15018A NOIR
4537 15015A NOIR
4541 15976B NOIR
4542 15977A NOIR
4543 15977A BLEU
4544 15977A COGNAC
4545 16265 NOIR
4546 16265 ROUGE
4547 16067 KAKI
4548 16067 MARINE
4549 16067 NOIR
4550 16067 TAUPE
4551 16266 TAUPE
4552 16266 KAKI
4553 16266 NOIR
4554 16266 MARINE
Sur un second classeur, j'ai les 3 même champs dont le champ ID vide:
ID reference Lib Couleur
15018A Marron
15018A Noir
15018A Prune
15015A Marron
15015A Noir
15015A Prune
15976B Bleu
15976B Cognac
15976B Noir
15977A Bleu
15977A Cognac
15977A Noir
16265 Noir
16265 Rouge
Pensez vous qu'il est possible de trouver une solution pour faire matcher les champs ID si REFERENCE et COULEUR sont identiques?
Merci d'avance pour votre aide,
sur un classeur1 j'ai 3 champs:
ID REFERENCE COULEUR
4533 15018A NOIR
4537 15015A NOIR
4541 15976B NOIR
4542 15977A NOIR
4543 15977A BLEU
4544 15977A COGNAC
4545 16265 NOIR
4546 16265 ROUGE
4547 16067 KAKI
4548 16067 MARINE
4549 16067 NOIR
4550 16067 TAUPE
4551 16266 TAUPE
4552 16266 KAKI
4553 16266 NOIR
4554 16266 MARINE
Sur un second classeur, j'ai les 3 même champs dont le champ ID vide:
ID reference Lib Couleur
15018A Marron
15018A Noir
15018A Prune
15015A Marron
15015A Noir
15015A Prune
15976B Bleu
15976B Cognac
15976B Noir
15977A Bleu
15977A Cognac
15977A Noir
16265 Noir
16265 Rouge
Pensez vous qu'il est possible de trouver une solution pour faire matcher les champs ID si REFERENCE et COULEUR sont identiques?
Merci d'avance pour votre aide,
A voir également:
- Matcher champs
- Word mettre à jour tous les champs - Forum Word
- Le nom du champs de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
- Champs calculé tcd formule si ✓ - Forum Excel
- Erreur: impossible d'enregistrer la configuration dns. merci de vérifier que: le sous-domaine n'est pas déjà utilisé par un enregistrement cname. un enregistrement cname n'est pas autorisé à coexister avec d'autres champs sur le même sous-domaine. ✓ - Forum Hébergement
- Afficher champs de tableau croisé dynamique - Guide
5 réponses
si REFERENCE et COULEUR sur le classeur1 sont identiques à REFERENCE et COULEUR du classeur2, alors ID du classeur2 est égal à ID du classeur1.
Sachant que comme dans l'exemple, il n'y a pas le même nombre de ligne dans les 2 classeurs.
Sachant que comme dans l'exemple, il n'y a pas le même nombre de ligne dans les 2 classeurs.
Grand merci pour ton aide.
Ce sont des exemples mais disons classeur1 / feuille1 et classeur2 / feuille1
Le champ ID à remplir étant dans classeur2 / feuille1
Ce sont des exemples mais disons classeur1 / feuille1 et classeur2 / feuille1
Le champ ID à remplir étant dans classeur2 / feuille1
Avec les deux classeur ouvert avec les noms de classeur et les noms de feuille strictement identique au code :
Soit :
1er classeur : classeur1.xlsm
1ère feuille : feuille1
2e classeur : classeur2.xlsm
2e feuille : feuille1
Vous copier celui dans un "Module1" de l'un des deux classeur et vous lancer la macro analyser.
Si vous ne savez pas comment faire je peux vous expliquer
Redites moi si vous avez des question !
Soit :
1er classeur : classeur1.xlsm
1ère feuille : feuille1
2e classeur : classeur2.xlsm
2e feuille : feuille1
Vous copier celui dans un "Module1" de l'un des deux classeur et vous lancer la macro analyser.
Si vous ne savez pas comment faire je peux vous expliquer
Sub Analyser() For L = 1 To Compter(Workbooks("classeur1.xlsm")) For LL = 1 To Compter(Workbooks("classeur2.xlsm")) If Workbooks("classeur1.xlsm").Sheets("feuille1").Cells(L, 2).Value = Workbooks("classeur2.xlsm").Sheets("feuille1").Cells(L, 1).Value And Workbooks("classeur1.xlsm").Sheets("feuille1").Cells(L, 3).Value = Workbooks("classeur2.xlsm").Sheets("feuille1").Cells(L, 2).Value Then Workbooks("classeur2.xlsm").Sheets("feuille1").Cells(L, 3).Value = Workbooks("classeur2.xlsm").Sheets("feuille1").Cells(L, 1).Value End If Next Next End Sub Function Compter(classeur As Workbook) As Integer Dim Compteur As Integer Compteur = 0 Dim L As Integer L = 1 Do While classeur.Sheets("feuille1").Cells(L, 1).Value <> "" L = L + 1 Loop Compter = L - 1 End Function
Redites moi si vous avez des question !
Bon nous avons adapté le code à notre situation, enregistré le classeur pour la prise en charge des macros etc, lancé le code, et là rien ne se passe. Voici le code adapté :
Sub Analyser()
For L = 1 To Compter(Workbooks("test_macro.xlsm"))
For LL = 1 To Compter(Workbooks("test_macro.xlsm"))
If Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 4).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 7).Value And Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 6).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 11).Value Then
Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 1).Value = Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 1).Value
End If
Next
Next
End Sub
Function Compter(classeur As Workbook) As Integer
Dim Compteur As Integer
Compteur = 0
Dim L As Integer
L = 1
Do While classeur.Sheets("Feuil1").Cells(L, 1).Value <> ""
L = L + 1
Loop
Compter = L - 1
End Function
pouvez-vous confirmer que ("test_macro.xlsm").Sheets("Feuil1").Cells(L, 4).value désigne bien la colonne D à l'index de ligne L? si c'est bien ça alors les références de nos valeurs sont bonnes et que rien ne soit écrit est très curieux, n'est-ce pas?
En tout cas merci pour le coup de main/pouce
Sub Analyser()
For L = 1 To Compter(Workbooks("test_macro.xlsm"))
For LL = 1 To Compter(Workbooks("test_macro.xlsm"))
If Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 4).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 7).Value And Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 6).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 11).Value Then
Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 1).Value = Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 1).Value
End If
Next
Next
End Sub
Function Compter(classeur As Workbook) As Integer
Dim Compteur As Integer
Compteur = 0
Dim L As Integer
L = 1
Do While classeur.Sheets("Feuil1").Cells(L, 1).Value <> ""
L = L + 1
Loop
Compter = L - 1
End Function
pouvez-vous confirmer que ("test_macro.xlsm").Sheets("Feuil1").Cells(L, 4).value désigne bien la colonne D à l'index de ligne L? si c'est bien ça alors les références de nos valeurs sont bonnes et que rien ne soit écrit est très curieux, n'est-ce pas?
En tout cas merci pour le coup de main/pouce
L représente la Ligne en coure dans la boucle for du 1er classeur
LL représente la ligne en coure dans la boucle for du 2e classeur
Mon erreur est toute bête voici la correction :
Essayer comme ça mais sans votre classeur il est difficile pour moi d'être sûr que ça soit juste.
Si vous voulez vous pouvez me transmettre des copies anonymisé de votre classeur via cjoint.com
LL représente la ligne en coure dans la boucle for du 2e classeur
Mon erreur est toute bête voici la correction :
Sub Analyser() For L = 1 To Compter(Workbooks("test_macro.xlsm").Sheets("Feuil1")) For LL = 1 To Compter(Workbooks("test_macro.xlsm").Sheets("Feuil2")) If Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 4).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(LL, 7).Value And Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 6).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(LL, 11).Value Then Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 1).Value = Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(LL, 1).Value End If Next Next End Sub Function Compter(feuille As sheets) As Integer Dim Compteur As Integer Compteur = 0 Dim L As Integer L = 1 Do While feuille.Cells(L, 1).Value <> "" L = L + 1 Loop Compter = L - 1 End Function
Essayer comme ça mais sans votre classeur il est difficile pour moi d'être sûr que ça soit juste.
Si vous voulez vous pouvez me transmettre des copies anonymisé de votre classeur via cjoint.com
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir
Une autre possibilté sans macro, par formule matricielle :
https://www.cjoint.com/?0IwvdGKFDI9
Cdlmnt
Une autre possibilté sans macro, par formule matricielle :
https://www.cjoint.com/?0IwvdGKFDI9
Cdlmnt