Recherche partielle

Fermé
Oly - 3 mars 2017 à 17:16
 Oly - 6 mars 2017 à 18:10
Bonjour,

voici mon problème sur excel.

J'ai deux fichier assez volumineux contenant des titres de produits.

Les deux fichier n'utilisent pas les même noms de produits exact mais en réalité ce sont les même produits.

Par exemple ; Fichier 1 : pâte à dent à la menthe poivré. Fichier 2 : Dentifrice à la menthe.

Mon but est de faire un ménage pour uniformiser le tout. Cependant je ne peux pas faire de rechercheV et si je regarde les doublons mot par mot cela me prendrait une éternité.

Il y a t'il un moyen de faire des recherches partielles sans avoir de mots clés spécifique. Je veux simplement qui retrouve des mots similaires dans les deux tables.

Merci.

A voir également:

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
2
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
5 mars 2017 à 14:03
Salut Éric,

Tu le télécharges et l'installes comment cet addin ?
0
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 à 15:06
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
5 mars 2017 à 17:00
Salut Éric,
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" ?
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
6 mars 2017 à 00:15
C'est sûr...
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
0
Très intéressant comme outil, c'est exactement ce que je cherchais. Merci beaucoup.
0
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
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...

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...
0
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?
0
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
bonjour, peux-tu approfondir ton exemple? que souhaites-tu obtenir avec "pâte à dent à la menthe poivré" et "Dentifrice à la menthe"?
0
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
0
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
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.
0