Rechercher des données dans un tableau à partir d'un autre

Fermé
Maestro_4M Messages postés 12 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 16 octobre 2012 - 12 oct. 2012 à 15:00
PHILOU10120 Messages postés 6400 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 17 janvier 2025 - 16 oct. 2012 à 17:01
Bonjour,

Dans le cadre de mon boulot j'aurais besoin de retrouver des données contenues sous Excel 2003 dans un Tableau 1 à partir d'un second Tableau 2.

Pour mieux vous illustrer la situation, le premier tableau contient toutes les infomations sur les employés: Nom, Adresse, Téléphone, Date d'embauche ...

Le second tableau contient uniquement des noms de Rues.

J'aurais besoin de retrouver tous les employés référencés dans le Tableau 1 (plusieurs milliers) qui résident dans les Rues mentionnées dans le Tableau 2 (plusieurs centaines).

Un grand merci d'avance !

A voir également:

5 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
12 oct. 2012 à 15:14
Si l'info du tableau 2 ne se situe pas dans le tableau 1 ça va être difficile !
L'adresse est-elle décomposée (n°, Rue, CP, Ville) ?
0
Maestro_4M Messages postés 12 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 16 octobre 2012
12 oct. 2012 à 15:31
Dans le premier dans lequel je dois retrouver des données l'adresse et du type N° et rue/Ville/code postal dans 3 colones séparées.
Dans le second il s'agit simplement du nom des Rues.

En fait il ne s'agit pas d'un nom de Rue à retrouver dans le Tableau 1 mais de plusieurs centaines.

Est-il possible de retrouver les ligne du Tableau 1 qui contiennent les noms des rues du Tableau 2 ?
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
13 oct. 2012 à 21:08
Il faudrait pouvoir extraire le partie "rue" du champ "N° et rue" ce qui ne sera pas facile à cause des Bis, Ter et autre n° particuliers.
De plus, si les deux sources de données ne sont pas harmonisées j'ai bien peur que les résultats ne soient pas très bons : par exemple il sera difficile d'identifier la «Rue du Général de Gaulle» à l'adresse «13 Bis, Rue du Gal de Gaulle»
0
Maestro_4M Messages postés 12 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 16 octobre 2012
15 oct. 2012 à 09:53
Auriez-vous une formule qui permettrait d'effectuer ces recherches ? Même s'il y a des erreur (comme cité avec l'exemple de Rue du Gal de Gaulle). Il me faudrait au moins un résultat approximatif ...
0
PHILOU10120 Messages postés 6400 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 17 janvier 2025 812
15 oct. 2012 à 10:00
Bonjour

Il faut préparer votre tableau 1 pour pouvoir l'exploiter
pouvez-vous ajouter des colonnes dans ce tableau
et par formule extraire le N°, les indices (bis,ter,...) et le nom de la rue
une fois le traitement éffectué faire un copier coller valeurs sur les colonnes créés pour supprimer les formules ayant servis à l'extraction.
Vous pourez mettre un filtre automatique sur votre base et filtrer sur le nom de la rue et là vous aurez toutes les personnes habitant cette rue
0
Maestro_4M Messages postés 12 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 16 octobre 2012
15 oct. 2012 à 10:18
Est-ce possible d'extraire en une seule fois les personnes résidants non plas dans une seule rue mais dans une liste de rues ? (environ 550 rues)
0
PHILOU10120 Messages postés 6400 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 17 janvier 2025 812
Modifié par PHILOU10120 le 15/10/2012 à 10:54
Oui cela est possible avec le filtre il est possible de choisir ce que l'on veut
cela va être fastidieu vu la quantité de nom à sélectionner (550)
est ce que ces rues font parties d'un arrondissement ou un quartier défini pouvant être retrouvé dans votre base pour simplifier le filtre
0
Maestro_4M Messages postés 12 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 16 octobre 2012
15 oct. 2012 à 11:05
Malheureusement non ce sont des rues précises, il n'y a aucun arrondissement qui est pris dans sa totalité.
Je dois extraire du fichier du personnel tous ceux qui risident dans ces rues. Pourriez-vous m'indiquer la marche à suivre ?
Merci d'avance !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
Modifié par michel_m le 15/10/2012 à 10:59
Bonjour,

Le mieux serait de joindre un extrait du classeur , ne serait ce pour voir la ou les colonnes de l'adresse avec des noms bidons (par ex. : zaza1,zaza2......) dans les 2 tableaux.

pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse

apparemment, vu les nombres annoncés, on peut penser à une solution par VBA mais...


Michel
0
Maestro_4M Messages postés 12 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 16 octobre 2012
15 oct. 2012 à 11:16
Bonjour,

Ci-dessous le lien cjoint:

https://www.cjoint.com/?3JplpLYQQak

Merci d'avance !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
Modifié par michel_m le 15/10/2012 à 11:35
OK,

Dans le tableau1, je suppose qu'il faut chercher dans les 2 colonnes (2 & 3) comme par exemple ligne 24: Boulevard Marcel Sauvaire ?

As tu des noms avec des références parcellaires ?

Pourquoi parfois des parenthèses dans le tableau 2: on distingue ou pas ? par ex: route de Galice lignes 12 et 18

Solution VBA vu les nombres (plusieurs milliers de nom) et 550 rues...

Je serais absent une partie de l'après midi...donc, patience
0
Maestro_4M Messages postés 12 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 16 octobre 2012
15 oct. 2012 à 11:41
En effet, l'idéal serait de chercher dans les deux colones ...

Qu'est-ce que des noms avec des références parcellaire ?

Les parenthèses ne représentent rien, pas la peine de les distinguer, les noms des rues sont bien à prendre en compte.

En attendant merci pour le coup de pouce !
0
Maestro_4M Messages postés 12 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 16 octobre 2012
15 oct. 2012 à 11:42
Certains noms de rues qui sont en fait des "périmètres" ne donneront sûrement rien lors de la recherche, mais ce n'est pas grave
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
15 oct. 2012 à 13:44
..."merci pour le coup de pouce3...

disons plutôt
"merci pour l'usine à gaz!" :o)
0
PHILOU10120 Messages postés 6400 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 17 janvier 2025 812
16 oct. 2012 à 11:11
Bonjour

Comme je vous l'avez dit c'est long et fastidieu pour mettre une base à jour
Par divers formules avec recherche, trouve, gauche, droite je suis arrivée au résultat ci-joint, je vous laisse le choix entre majuscule et minuscule, une fois un premier contrôle vous devrez faire un copier /coller valeur des colonnes vertes et supprimer en suite les colonnes C, D, & G inutiles (en rouge)
j'ai mis un contrôle sur la feuille ZUS et une seule rue a été trouvé je suis inquiet à vous de voir

le fichier https://www.cjoint.com/?3JqlfMr9PSK

Il y a encore beaucoup de travail à faire
0
Maestro_4M Messages postés 12 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 16 octobre 2012
16 oct. 2012 à 11:37
Bonjour,

Merci pour le tableau, j'y vois déjà beaucoup plus clair ! Le fait qu'il n'y est qu'un seul résultat ne m'étonne pas du tout.

A quoi corresponde les non des rues en rouge dans le tableau ZUS ?
0
PHILOU10120 Messages postés 6400 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 17 janvier 2025 812
Modifié par PHILOU10120 le 16/10/2012 à 11:52
sur ZUS des nom qui étaient entre parenthèses
sur base à des modifications faites manuellement pour obtenir le résultat escompté en minuscule (accent ou strophe ...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
Modifié par michel_m le 16/10/2012 à 15:24
ci joint macro proposée regroupant les habitants par rue dans la zone zus

Option Explicit  
Option Base 1  
Dim T_base, T_zus  

Sub selectionner_habitants()  
Dim T_ame()  
Dim Cptr As Integer, Lig As Integer, Col As Byte, Cpt As Integer, chmp As Byte  
     Application.ScreenUpdating = False  
     Call harmoniser_ecritures  
     ReDim T_ame(7, 1)  
       
     For Cptr = 1 To UBound(T_zus)  
          For Lig = 1 To UBound(T_base)  
               For Col = 2 To 4  
                    If InStr(T_base(Lig, Col), T_zus(Cptr, 1)) Then  
                         Cpt = Cpt + 1  
                         ReDim Preserve T_ame(7, Cpt)  
                         For chmp = 1 To 7  
                              T_ame(chmp, Cpt) = T_base(Lig, chmp)  
                         Next chmp  
                         Exit For  
                    End If  
               Next Col  
          Next Lig  
     Next Cptr  
       
     With Sheets(3)  
          With .Range("A2:G" & Cpt)  
               .Value = Application.Transpose(T_ame)  
               .Borders.Weight = xlThin  
          End With  
          .Select  
     End With  
End Sub  

Sub harmoniser_ecritures()  
Dim derlig As Integer, Lig As Integer, Col As Byte  
Dim zus As String  

With Sheets(1)  
     derlig = .Columns("A").Find("*", , , , , xlPrevious).Row  
     T_base = .Range("A2:G" & derlig).Value  
     For Lig = 1 To derlig - 1  
          For Col = 1 To 3  
               T_base(Lig, Col) = UCase(Trim(T_base(Lig, Col)))  
          Next Col  
     Next Lig  
End With  

With Sheets("zus")  
     derlig = .Columns("A").Find("*", , , , , xlPrevious).Row  
     T_zus = .Range("A2:A" & derlig).Value  
     For Lig = 1 To derlig - 1  
          zus = T_zus(Lig, 1)  
          T_zus(Lig, 1) = UCase(Trim(enlever_accents(zus)))  
     Next  
End With  
End Sub  

Function enlever_accents(texto As String) As String  
Dim accents As String * 14, caract As String * 1, lettre As String * 1  
Dim Cptr As Integer, pos As Integer  

     accents = "âäàêëéèîïôöûüù"  
     For Cptr = 1 To Len(texto)  
          caract = Mid(texto, Cptr, 1)  
           pos = InStr(accents, caract)  
           If pos > 0 Then  
               lettre = Choose(pos, "a", "a", "a", "e", "e", "e", "e", "i", "i", "o", "o", "u", "u", "u")  
                texto = Replace(texto, caract, lettre)  
          End If  
     Next  
     enlever_accents = texto  
End Function


Durée 1,43 sec pour 848 habitants (ram 512 Mo, proc 3Ghz)

maquette
https://www.cjoint.com/?3Jqpyld8LLg

Michel
0
PHILOU10120 Messages postés 6400 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 17 janvier 2025 812
16 oct. 2012 à 17:01
Bonjour Michel_m

j'ai lancé la macro sélection des habitants cela me donne une liste de 24 adresses comment paramétrer-vous pour avoir 848 ou qu'elle est la procédure
j'ai mis un bouton pour lancer la macro ne sachant pas la combinaison de touche à utiliser
mais c'est super boulot
0