XL 2016 Lancement Macro

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 !

jeromeN95

XLDnaute Impliqué
Bonsoir à tous,
je n'arrive pas à finir ma macro.

Principe :
Lancer un Userform pour faire une recherche de correspondance entre un code postal et une ville
Ci-joint fichier

Quand clique en C7 de la feuille "Choix"
Lance Userform
Résultat si clique sur VALIDER à mettre en C7 Ville et E7 code postal
Puis sélectionne C8 de la feuille "Choix"


J'aimerais également pouvoir faire une recherche dans l'autre sens :
Quand clique en E7, lance l'Userform
on renseigne le nom de la ville et le code postal et trouver.


Si une bonne âme pouvais m'aider….

D'avance merci.
Jérôme
 

Pièces jointes

re
de plus perso je vais a l'économie
je te propose un seul combobox dans le quel tu peux taper soit des lettre soit des numero

mais attention tout de même
filter filtre la présence et non le debut !!!!!!!!!
donc les codes postals seront bon qu'a partir de 3 chiffres environ
j'avais donné a jacques me semble t il un code filtre ( filter include,filter exclude , commence par , xlpart)

mais pour l'heure voici ton model avec filter et une seul combo
 

Pièces jointes

re
et si tu veux vraiment tout les "COMMENCE PAR combo.value "
change l'evenement change listetwo par celle ci
VB:
Private Sub listetwo_Change()
    Dim tablo, I&, tablo2, a&
    tablo = Filter(liste, Me.listetwo.Text, True, vbTextCompare)
    ReDim tablo2(UBound(tablo))
    For I = LBound(tablo) To UBound(tablo)
        If IsNumeric(listetwo.Value) Then
            If Left(Split(tablo(I), ": ")(1), Len(listetwo.Value)) = listetwo.Value Then
                tablo2(a) = tablo(I): a = a + 1
            End If
        Else
            If Left(Split(tablo(I), " :")(0), Len(listetwo.Value)) = listetwo.Value Then
                tablo2(a) = tablo(I): a = a + 1
            End If
        End If
    Next
    listetwo.List = tablo2
    Me.listetwo.DropDown
End Sub

Alors OUI !! je filtre avec filter et refiltre avec test left
pourquoi?
et bien par ce qu'avec ta liste relativement longue, si je teste le left directement dans la liste complete j'ai donc un temps de latence (avant re dessin sur combobox) beaucoup plus long
voila 😉


je ne te dis pas comment mettre que les villes ou les codes postals je pense que tu va comprendre tout seul 😉 😉
 
Dernière édition:
Pour la procédure ajoutée, d'accord, elle est un peu pointue. Mais les autres procédures de l'UserForm, ça va, non ?
Mais j'ai en préparation un autre système qui, à part les instructions déclaratives dans la UserForm_Initialize ne requièrera plus aucune programmation du tout dans l'UserForm, puisqu'il prendra même en charge les CommandButton.
 
re
oui pour moi ca va et tout lecteur un minimum expérimentés
j'en ai une autre dans la tete aussi qui reprends l'idée de base que j'ai donné mais avec les deux combo séparée
je pense pas que ce soit la difficulté du procédé (il y a diverses façons d'y arriver) mais la rapidité du repaint userform qui pause problème avec cette longue liste on le vois bien avec son premier exemple
après perso je sais pas si la recherche intuitive est de mise on a juste besoins des correspondance ville/ code
mais j'aime bien ton code ca va m'amuser pendant un moment a le décortiquer
 
Pour les lignes de code dans l'UserForm, voir la page d'aide de cette ressource.
La programmation de service n'est pas à étudier.
 
- 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
3
Affichages
583
Réponses
10
Affichages
666
Réponses
2
Affichages
583
Retour