Faire une recherche dans excel
Résolu
goran_84
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je possède des données qui s'étendent de A1: D36 000 (4 colonnes et 36 000 lignes) avec dans la colonne
A - nom de commune
B - code postal de la commune
C- code postal du département
D- Le code de la zone Robien
J'ai besoin de faire une recherche par nom de commune pour savoir ensuite quel est le code postal de la commune, le code postal du département et le code de la zone Robien (colonne B,C,D).
Pour cela j'utilise la fonction excel recherchev et ça marche bien. Or ce que je souhaite faire maintenant c'est de pouvoir faire une recherche qui m'affiche tous les noms de communes qui commencent par les lettres qui ont été saisis.
Pouvez vous m'aider svp!
Merci
Je possède des données qui s'étendent de A1: D36 000 (4 colonnes et 36 000 lignes) avec dans la colonne
A - nom de commune
B - code postal de la commune
C- code postal du département
D- Le code de la zone Robien
J'ai besoin de faire une recherche par nom de commune pour savoir ensuite quel est le code postal de la commune, le code postal du département et le code de la zone Robien (colonne B,C,D).
Pour cela j'utilise la fonction excel recherchev et ça marche bien. Or ce que je souhaite faire maintenant c'est de pouvoir faire une recherche qui m'affiche tous les noms de communes qui commencent par les lettres qui ont été saisis.
Pouvez vous m'aider svp!
Merci
3 réponses
-
A savoir que j'utilise Excel 2007
-
Bonsoir
Quand tu dis
"Or ce que je souhaite faire maintenant c'est de pouvoir faire une recherche qui m'affiche tous les noms de communes qui commencent par les lettres qui ont été saisis. "
tu voudrais afficher toutes les communes qui commencent pa la lettre "L" par exemple et les afficher où ?? dans une boite de dialogue??
Au plaisir -
-
-
Bonjour
Alors je peux te proposer ce code que j'ai fait pour une appli identique à la tienne
Dans une feuille tu crées un bouton et tu affectes ce codePrivate Sub CommandButton1_Click() Load UserForm1 UserForm2.Show End Sub
tu vois qu'a ce stade il faut creer un Userform avec une Zone de texte que tu nommeras
"ZtxtCP"
une Listbox que tu nommeras
"ListboxVilles"
et tu associes le code qui suit à la zonede texte "ZtxtCP"Private Sub ZtxtCP_Change() 'cf : http://www.commentcamarche.net/forum/affich-14847865-recherche-semi-auto-dans-excel Dim Tablo Dim Tablo_1 Dim lettre As String, test As String Dim cptr As Integer, cptr_tablo As Integer, derLig As Integer lettre = UCase(ZtxtCP.Value) If lettre = "" Then Exit Sub ReDim Tablo(0) ReDim Tablo_1(0) ListboxVilles.Clear derLig = Sheets("Nom_DE_TA_FEUILLE").Range("A" & Rows.Count).End(xlUp).Row With Sheets("Nom_DE_TA_FEUILLE") For cptr = 1 To derLig test = .Cells(cptr, 1) If .Cells(cptr, 1) Like lettre & "*" Then' cherche la lettre Tablo(cptr_tablo) = .Cells(cptr, 1) ' capte le contenu de la cellule A Tablo_1(cptr_tablo) = .Cells(cptr, 2) 'capte le contenu de la cellule B cptr_tablo = cptr_tablo + 1 ReDim Preserve Tablo(cptr_tablo) ReDim Preserve Tablo_1(cptr_tablo) End If Next End With For cptr_tablo = LBound(Tablo) To UBound(Tablo) aaa = Tablo(cptr_tablo) & " - " & Tablo_1(cptr_tablo) ' concatene les données ListboxVilles.AddItem aaa ' les données sont affichées dans le Listbox Next End Sub
Bonne continuation -
-
-
Bonjour,
Une piste avec seulement le nom de communes ( la recherche cible de plus en plus suivant le nombre de lettres inscrites)
https://www.cjoint.com/?3KothUizTEx
pour les autres renseignements, ce n'est pas bien compliqué (mais pas avec recherchev!!)
donc, donne un extrait de ta base (500 ou 1000 lignes)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
-
Bonjour Goran
Ci joint proposition avec le classeur que tu m'as communiqué sur yahoo mail
boulot intéressant compte tenu des 36000 communes !
https://www.cjoint.com/?3KqiLAxDVAh
nota: dans la feiulles "communes, j'ai nommé deux plage: localité (colonne A)et base_fr (colonnes B-D)
Michel-
le classeur étant protégé par mdp
voici les codes
dans le module feuille "recherche (où il y a le textbox"Private Sub TextBox1_Change() Lettre = UCase(TextBox1.Value) Selectionner_communes End Sub
zt dans un modules standardPublic Lettre As String Sub Selectionner_communes() Dim Tcomm(), T_base(), T_out() Dim Critere As String Dim Nbre As Long, Lig As Long, Cpt As Long '------initialisations Range("C5:F37000").Clear If Lettre = "" Then GoTo Fin Critere = Lettre & "*" With Sheets("communes") 'mémorise en RAM les données des communes T_comm = Application.Transpose(Range("localite").Value) 'liste des localités T_base = Range("base_fr").Value 'liste des codes, départements, zone robien 'nombre de communes répondant au critere Nbre = Application.CountIf(Range("localite"), Critere) End With '-----recherche If Nbre = 0 Then GoTo Vide: 'pas de communes répondant au critère 'mémorise tableau des communes répondant au critère ReDim T_out(1 To Nbre, 1 To 4) Cpt = 1 For Lig = 1 To UBound(T_comm) If T_comm(Lig) Like Critere Then T_out(Cpt, 1) = T_comm(Lig) 'commune T_out(Cpt, 2) = T_base(Cpt, 1) 'code commune T_out(Cpt, 3) = T_base(Cpt, 2) 'code departement T_out(Cpt, 4) = T_base(Cpt, 3) 'zone Robien Cpt = Cpt + 1 If Cpt > Nbre Then Exit For 'sortie si le nbre est atteint End If Next '------restitution Application.ScreenUpdating = False With Sheets("Recherche").Range("C5").Resize(Nbre, 4) .Value = T_out .Borders.Weight = xlThin End With Exit Sub '-----gestion erreurs Vide: MsgBox "aucune commune commendant par " & Lettre & " dans la liste ", vbExclamation Exit Sub Fin: End Sub -
-
bonjour
classeur modifié suite à mes étourderies habituelles et rectifié ton tableau des codes insee et départements ( les 9 premiers départements); ajouté un bouton de remise à zéro
Avec mes excuses
https://www.cjoint.com/?3KsjhptPSyr
-