Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion apdf
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

apdf

XLDnaute Occasionnel
Bonjour,

Je recherche un code pour alimenter mon User. Je m'explique: je rechercher une ville en fonction du code postal ainsi que son département, sa région, sous préfecture et préfecture.

Ci joint mon fichier qui sera certainement plus explicit "Fichier réduit au maximun 38500 lignes au complet"

Je vous remercie d'avance et vous souhaite une bonne journée
 

Pièces jointes

Re : Recherche CP

Bonjour Max,

tu peux déjà essayer ceci mais attention aux noms de villes en double 😡
Code:
Private Sub ComboBox_ville_Change()
longueurtexte = Len(ComboBox_ville.Value)
For i = 2 To Sheets("Feuil1").Range("A65535").End(xlUp).Row
If Left(Sheets("Feuil1").Cells(i, 1), longueurtexte) = ComboBox_ville.Value Then
TextBox_CP.Value = Sheets("Feuil1").Cells(i, 2).Value
TextBox_dept.Value = Sheets("Feuil1").Cells(i, 3).Value
TextBox1.Value = Sheets("Feuil1").Cells(i, 4).Value
TextBox2.Value = Sheets("Feuil1").Cells(i, 5).Value
TextBox3.Value = Sheets("Feuil1").Cells(i, 6).Value
End If
Next i
End Sub

......... je n'ai pas le temps d'en faire plus, il y a des œufs en chocolat qui m'attendent dans la pelouse

à+
Philippe
 
Re : Recherche CP

Bonjour,


Voir PJ

Code:
Dim f
Private Sub UserForm_Initialize()
  Set f = Sheets("BD")
  temp = Range(f.[a2], f.[A65000].End(xlUp)).Value ' tableau 1 To n,1 To 1
  Call Tri(temp, 1, UBound(temp, 1))
  Me.ComboBox_ville.List = temp
  Set MonDico = CreateObject("Scripting.Dictionary")
  a = f.Range("b2:b" & f.[b65000].End(xlUp).Row) ' tableau a(n,1) pour rapidité
  For i = LBound(a) To UBound(a)
    If a(i, 1) <> "" Then MonDico(a(i, 1)) = ""
  Next i
  Me.ComboBox_Cp.List = MonDico.keys
End Sub

Private Sub ComboBox_ville_click()
  Set c = f.[A:A].Find(what:=Me.ComboBox_ville)
  If Not c Is Nothing Then
    Me.TextBox_CP = c.Offset(, 1)
    Me.TextBox_dept = c.Offset(, 2)
  End If
End Sub

Private Sub ComboBox_Cp_click()
  Me.ComboBox_ville2.Clear
  Set c = f.[B:B].Find(what:=Me.ComboBox_Cp)
  If Not c Is Nothing Then
    premier = c.Address
    Do
      Me.ComboBox_ville2.AddItem c.Offset(, -1)
      Set c = f.[B:B].FindNext(c)
    Loop While Not c Is Nothing And c.Address <> premier
  End If
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
  ref = a((gauc + droi) \ 2, 1)
  g = gauc: d = droi
  Do
    Do While a(g, 1) < ref: g = g + 1: Loop
    Do While ref < a(d, 1): d = d - 1: Loop
    If g <= d Then
      temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
      g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call Tri(a, g, droi)
  If gauc < d Then Call Tri(a, gauc, d)
End Sub

JB
 

Pièces jointes

Dernière édition:
Re : Recherche CP

Bonjour Boisgontier,

Et merci beaucoup juste une petite chose, les textbox de Région, sous pref; et Prefecture ne foctionne pas.
Comment je doit les ajouter ?

merci d'avance
 
Re : Recherche CP

Code:
Dim f
Private Sub UserForm_Initialize()
  Set f = Sheets("BD")
  temp = Range(f.[a2], f.[A65000].End(xlUp)).Value ' tableau 1 To n,1 To 1
  Call Tri(temp, 1, UBound(temp, 1))
  Me.ComboBox_ville.List = temp
  Set MonDico = CreateObject("Scripting.Dictionary")
  a = f.Range("b2:b" & f.[b65000].End(xlUp).Row) ' tableau a(n,1) pour rapidité
  For i = LBound(a) To UBound(a)
    If a(i, 1) <> "" Then MonDico(a(i, 1)) = ""
  Next i
  Me.ComboBox_Cp.List = MonDico.keys
End Sub

Private Sub ComboBox_ville_click()
  Set c = f.[A:A].Find(what:=Me.ComboBox_ville)
  If Not c Is Nothing Then
    Me.TextBox_CP = c.Offset(, 1)
    Me.TextBox_dept = c.Offset(, 2)
    Me.TextBox1 = c.Offset(, 3)
  End If
End Sub

Private Sub ComboBox_Cp_click()
  Me.ComboBox_ville2.Clear
  Set c = f.[B:B].Find(what:=Me.ComboBox_Cp)
  If Not c Is Nothing Then
    premier = c.Address
    Do
      Me.ComboBox_ville2.AddItem c.Offset(, -1)
      Set c = f.[B:B].FindNext(c)
    Loop While Not c Is Nothing And c.Address <> premier
  End If
End Sub

Private Sub ComboBox_ville2_click()
  Set c = f.[A:A].Find(what:=Me.ComboBox_ville2)
  If Not c Is Nothing Then
   ' Me.TextBox_CP2 = c.Offset(, 1)
    Me.TextBox_dept2 = c.Offset(, 2)
    Me.TextBox1 = c.Offset(, 3)
  End If
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
  ref = a((gauc + droi) \ 2, 1)
  g = gauc: d = droi
  Do
    Do While a(g, 1) < ref: g = g + 1: Loop
    Do While ref < a(d, 1): d = d - 1: Loop
    If g <= d Then
      temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
      g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call Tri(a, g, droi)
  If gauc < d Then Call Tri(a, gauc, d)
End Sub

http://boisgontierjacques.free.fr/fichiers/Formulaire/CP5.xls

JB
 
Dernière édition:
Re : Recherche CP

Bonjour Numidia

Pourquoi ne pas créer deux combobox 1 pour faire la recherche a partir du CP et l'autre a partir de la ville ?

Mais je suis preneur de toute bonne idée....
 
copie de recherche_ville

bonjour
merci pour le fichier copier de recherche _ville
mais j'ai une question et je suis un debutant dans vba
comment ajouter un bouton de validation dans userform pour ajouter la ville sur la feuille ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
376
Réponses
4
Affichages
561
Réponses
17
Affichages
1 K
Réponses
17
Affichages
1 K
  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
520
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…