A voir également:
- Recherche partielle
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche adresse - Guide
- Recherche musique - Guide
- Recherche par image - Guide
- Recherche privée - Guide
4 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
5 mars 2017 à 09:34
5 mars 2017 à 09:34
Bonjour,
tu as l'addin fuzzy logic qui fait ça : http://www.emarketeur.fr/ressources/productivite/comparaison-listes-excel-fuzzy-logic-donne-coup-de-vieux-vlookup/
eric
tu as l'addin fuzzy logic qui fait ça : http://www.emarketeur.fr/ressources/productivite/comparaison-listes-excel-fuzzy-logic-donne-coup-de-vieux-vlookup/
eric
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
4 mars 2017 à 11:42
4 mars 2017 à 11:42
Bonjour Oly, bonjour le forum,
Avec le peu d'infos que tu daignes fournir, sans les fichiers, voici ce que je te propose :
Dans un des deux fichiers (au choix), tu crées une UserFom nommée Userform1 avec :
- 1TextBox nommée TextBox1
- 2 Labels nomées Label1 et Label2
- 2 ListBoxes nommées ListBox1 et ListBox2
Tu y copies le code ci-dessous en adaptant les noms (classeur2, onglet1 et onglet2). Le fichier devra être enregistrer sous avec l'extension .xlsm pour conserver le code...
Il faut que les deux classeurs soient ouverts.
Tu lances l'UserForm1 (soit tu crées bouton soit une macro avec le code : UserForm1.Show).
Tu tapes le texte recherché et au fur et à mesure que tu édites les caractères les deux ListBoxes se remplissent t'indiquant l'emplacement du mot dans les deux fichiers...
Si tu n'y arrives pas, envoie les deux fichiers...
Avec le peu d'infos que tu daignes fournir, sans les fichiers, voici ce que je te propose :
Dans un des deux fichiers (au choix), tu crées une UserFom nommée Userform1 avec :
- 1TextBox nommée TextBox1
- 2 Labels nomées Label1 et Label2
- 2 ListBoxes nommées ListBox1 et ListBox2
Tu y copies le code ci-dessous en adaptant les noms (classeur2, onglet1 et onglet2). Le fichier devra être enregistrer sous avec l'extension .xlsm pour conserver le code...
Private C1 As Workbook 'déclare la variable C1 (Classeur 1) Private C2 As Workbook 'déclare la variable C1 (Classeur 1) Private O1 As Worksheet 'déclare la variable O1 (Onglet 1) Private O2 As Worksheet 'déclare la variable O2 (Onglet 2) Private TV1 As Variant 'déclare la variable TV1 (Tableau des Valeurs de l'onglet 1) Private TV2 As Variant 'déclare la variable TV2 (Tableau des Valeurs de l'onglet 2) Private I1 As Long 'déclare la variable I1 (Incrément 1) Private I2 As Long 'déclare la variable I2 (Incrément 2) Private J1 As Integer 'déclare la variable J1 (incrément 1) Private J2 As Integer 'déclare la variable J2 (incrément 2) Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm Set C1 = ThisWorkbook 'définit le classeur C1 Set C2 = Workbooks("second_classeur.xlsm") 'définit le classeur C2 (à adapter à ton cas) Set O1 = C1.Sheets("Feuil1") 'définit l'onglet O1 (à adapter à ton cas) Set O2 = C2.Sheets("Feuil2") 'définit l'onglet O2 (à adapter à ton cas) Me.Caption = "RECHERCHE" 'définit le titre de l'UserForm Me.Label1.Caption = C1.Name & " - " & O1.Name 'renvoie dans l'étiquette Label1 le nom du classeur C1 et le nom de l'onglet O1 Me.Label1.Caption = C2.Name & " - " & O2.Name 'renvoie dans l'étiquette Label2 le nom du classeur C2 et le nom de l'onglet O2 TV1 = O1.Range("A1").CurrentRegion 'définit le tableau des valeurs TV1 TV2 = O2.Range("A1").CurrentRegion 'définit le tableau des valeurs TV2 End Sub Private Sub TextBox1_Change() 'au changement dans la TextBox1 Me.ListBox1.Clear 'vide la ListBox1 Me.ListBox2.Clear 'vide la ListBox2 If Me.TextBox1.Value = "" Then Exit Sub 'si la Textbox1 est effacée, sort de la procédure For I1 = 1 To UBound(TV1, 1) 'boucle 1 : sur toutes les lignes I1 du tableau des valeurs TV1 For J1 = 1 To UBound(TV1, 2) 'boucle 2 : sur toutes les colonnes J1 du tableau des valeurs TV1 'condition : si le texte édité dans la TextBox1 est contenu dans la donnée ligne I1 colonne J1 du tableau des valeurs TV1 If InStr(1, TV1(I1, J1), Me.TextBox1.Value, vbTextCompare) > 0 Then 'ajoute la donnée à la ListBox1 en mentionnant sa ligne et sa colonne Me.ListBox1.AddItem "Ligne " & I1 & " / Colonne" & J1 & " - " & TV1(I1, J1) End If 'fin de la condition Next J1 'prochaine colonne de la boucle 2 Next I1 'prochaine ligne de la boucle 1 For I2 = 1 To UBound(TV2, 1) 'boucle 1 : sur toutes les lignes I2 du tableau des valeurs TV2 For J2 = 1 To UBound(TV2, 2) 'boucle 2 : sur toutes les colonnes J2 du tableau des valeurs TV2 'condition : si le texte édité dans la TextBox1 est contenu dans la donnée ligne I2 colonne J2 du tableau des valeurs TV2 If InStr(1, TV2(I2, J2), Me.TextBox1.Value, vbTextCompare) > 0 Then 'ajoute la donnée à la ListBox2 en mentionnant sa ligne et sa colonne Me.ListBox2.AddItem "Ligne " & I2 & " / Colonne" & J2 & " - " & TV2(I2, J2) End If 'fin de la condition Next J1 'prochaine colonne de la boucle 2 Next I1 'prochaine ligne de la boucle 1 End Sub
Il faut que les deux classeurs soient ouverts.
Tu lances l'UserForm1 (soit tu crées bouton soit une macro avec le code : UserForm1.Show).
Tu tapes le texte recherché et au fur et à mesure que tu édites les caractères les deux ListBoxes se remplissent t'indiquant l'emplacement du mot dans les deux fichiers...
Si tu n'y arrives pas, envoie les deux fichiers...
ok ouais je comprends, mais y aurait-il moyen de le faire sans que j'ai à éditer les caractères mais plutôt que excel fasse une recherche de mot doublon.
Car j'ai beaucoup trop de lignes dans le fichier et par exemple sur un fichier il peut y avoir le nom de matelas inc. et dans l'autre ils s'appelle les matelas inc. mais je veux qu'il fasse le lien que c'est la même entreprise?
Car j'ai beaucoup trop de lignes dans le fichier et par exemple sur un fichier il peut y avoir le nom de matelas inc. et dans l'autre ils s'appelle les matelas inc. mais je veux qu'il fasse le lien que c'est la même entreprise?
yg_be
Messages postés
23399
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 décembre 2024
Ambassadeur
1 556
4 mars 2017 à 12:35
4 mars 2017 à 12:35
bonjour, peux-tu approfondir ton exemple? que souhaites-tu obtenir avec "pâte à dent à la menthe poivré" et "Dentifrice à la menthe"?
bonjour, en fait je cherche à faire des jumelages avec par exemple le mot menthe. Mais ok peut être que mon exemple n'était pas le meilleur. Par exemple dans un fichier j'ai une compagnier qui s'appelle Les matelas Inc. et la dans les autres colonnes j'ai toutes ses informations produits vendus, prix etc. et dans l'autre fichier l'utilisateur à nommé l'entreprise Les matelas, sans le Inc. alors je veux jumeler ces deux champs meme si les noms ne sont pas exactement les mêmes. Comme une rechercheV mais avec une valeur partielle de mot
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 711
4 mars 2017 à 16:44
4 mars 2017 à 16:44
Bonjour,
J'ai peut-être une idée pour t'aider dans ton souci mais j'aimerais pour la tester que tu nous donnes une vingtaine de noms (non personnels) de chacun de tes classeurs comme les 2 que tu as mis. Cela éviterai de créer un jeu d'essai bidon nécessairement inadapté à ton cas.
J'ai peut-être une idée pour t'aider dans ton souci mais j'aimerais pour la tester que tu nous donnes une vingtaine de noms (non personnels) de chacun de tes classeurs comme les 2 que tu as mis. Cela éviterai de créer un jeu d'essai bidon nécessairement inadapté à ton cas.
5 mars 2017 à 14:03
Tu le télécharges et l'installes comment cet addin ?
5 mars 2017 à 15:06
5 mars 2017 à 17:00
Merci pour le lien, je n'arrivais pas à mettre la main dessus.
Cela à l'air de bien fonctionner même si je reste persuadé qu'il serait plus judicieux de vérifier à la saisie les informations.
Ne risque-t-on pas de marier "les matelas de Nouvelle-Zélande" avec "les matelas de la nouvelle Lozère" ?
6 mars 2017 à 00:15
Mais des fois tu hérites d'un vieux fichier, et il faut le remettre d'équerre avant de pouvoir verrouiller un peu mieux les saisies.
Mais bon, comme ça n'a pas trop l'air d'intéresser le demandeur.
eric
6 mars 2017 à 18:10