Faire une recherche dans excel

Résolu/Fermé
goran_84 Messages postés 9 Date d'inscription mercredi 14 novembre 2012 Statut Membre Dernière intervention 28 mai 2013 - 14 nov. 2012 à 15:24
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 18 nov. 2012 à 09:07
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

A voir également:

3 réponses

goran_84 Messages postés 9 Date d'inscription mercredi 14 novembre 2012 Statut Membre Dernière intervention 28 mai 2013
14 nov. 2012 à 15:27
A savoir que j'utilise Excel 2007
0
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
0
goran_84 Messages postés 9 Date d'inscription mercredi 14 novembre 2012 Statut Membre Dernière intervention 28 mai 2013
14 nov. 2012 à 19:11
Bonsoir G_33

Merci pour l'interet que tu portes a mon "probleme".
Peux importe ou est ce que je vais afficher les commune commencant par P. Il faut juste quelles apparaissent ;)
qu'est ce que tu penses qu'il serait le mieux.
Merci d'avance et bonne soirée
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
15 nov. 2012 à 07:08
excusez moi de vous avoir dérangé avec ma proposition
0
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 code
Private 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
0
C'est un code trouvé sur comment ça marche fait par michel_m que j'ai adapté pour la conactenation du résultat
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
14 nov. 2012 à 19:08
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 



0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 16/11/2012 à 08:57
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
16 nov. 2012 à 08:54
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 standard
Public 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
0
Merci michel pour ton aide! ca marche tres bien!
voici le fichier en question.
le mdp est robien

http://www.cjoint.com/confirm.php?cjoint=0Kqs7xkSn7m
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
18 nov. 2012 à 09:07
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
0