Résolu XL 2016 Lancement Macro

jeromeN95

XLDnaute Occasionnel
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
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

GALOUGALOU

XLDnaute Occasionnel
bonjour jeromeN95
j'avais réalisé pendant mes occupations professionnelles un classeur code postaux
ci dessous un lien pour le telecharger pendant 15 jours
je pense que vous serez agréablement surpris

cordialement galougalou
 

jeromeN95

XLDnaute Occasionnel
Bonoir Syvlanu,
oui je tiens à utiliser une Userform, j'ai pas beaucoup de place dans le fichier d'origine.

Bonsoir Galougalou,
Ce fichier est très lourd. Et j'ai bien peur de ne pas réussir à l'intégrer dans mon classeur.

Ne pourriez vous pas résoudre mon problème de syntaxe dans un premier temps SVP?
Tampi pour la fonction inverse sinon.
 

patricktoulon

XLDnaute Accro
bonjour
perso je me demande ce qu'est sensé faire cet userform
je parle même pas du code a l’intérieur qui est incohérent
fait moi plaisir vire tout ce code de cet userform et refait moi un code digne de ce nom et surtout cohérent avec la demande

en plus cet userform devrait être lancé par le click sur feuille choix et non la données
sinon a quoi ca sert de passer par le userform
quelque chose me dit que ce projet n'est pas présenté dans sa totalité

et (entre parenthèses)un fichier avec 36000 lignes sur deux colonnes qui met autant de temps a s'ouvrir a certainement un soucis dans son xml interne donc selon moi il est déjà corrompu
 

jeromeN95

XLDnaute Occasionnel
Bonsoir,
j'ai modifier.
J'y suis presque mais il y a un "bug" qui s'affiche lorsque je renseigne un second chiffre.

Je ne parviens pas encore à identifier l'origine et j'aimerai un avis svp?
 

Fichiers joints

patricktoulon

XLDnaute Accro
re
ben oui l'erreur de dépassement de capacité aurait du te mettre la puce a l'oreille

révise tes cours sur le type de variable
notamment observe la différence entre "integer" et "long"
;)
tu a 2 chose a changer ;)
demo3.gif
 

sylvanu

XLDnaute Accro
Supporter XLD
Bonsoir Jérome, Patrick,
L'integer est limité à 32768 et votre base fait 39213. D'où l'erreur quand on cherche la taille du tableau.
Le "long" étant limité à 2 147 483 647 ça vous laisse de la marge pour votre database ! :)
Et comme le montre Patrick, ça marche mieux en Long.
 

patricktoulon

XLDnaute Accro
bonsoir sylvanu
j'aurais préféré qu'il fasse la recherche c'est pour ca que je ne l'ai pas dis directement ;)

par exemple ici il aurait trouvé avec une recherche sur gogolito

et pour être honnête je me demande bien a quoi peut bien servir le type integer
perso je ne m'en sert jamais (peut etre un tord je ne sais pas)
 

sylvanu

XLDnaute Accro
Supporter XLD
Bonsoir Patrick,
C'est une façon de voir.
Mais il est possible de ne pas faire le lien immédiat entre Integer et la taille de la database.
"L'integer est limité à 32768 et votre base fait 39213. " Ça me semble plus aisément compréhensible.
Errare Humanum Est. Je ne le ferait plus.
 

patricktoulon

XLDnaute Accro
re
ya pas de mal sylvanu
c'est comme ça que j'ai appris avec des cadors dans un autre forum et ici aussi
et c'est comme ça que je transmet (ne jamais tout faire)
voir même laisser une coquille dans le code pour stimuler le demandeur ;)
 

jeromeN95

XLDnaute Occasionnel
Bonsoir,
Merci beaucoup, j’ai trouvé.
Au début, je vous en ai voulu un petit peu car j’attendais une réponse.
Mais je vous remercie car j’ai trouvé de l’aide.

À ce propos, auriez-vous une idée pour que je puisse utiliser la fonction dans le sens inverse ?
C’est-à-dire renseigner la ville et obtenir le code postal ?
 

sylvanu

XLDnaute Accro
Supporter XLD
Bonjour,
Le mieux est de refaire la même chose en inversant Ville et Code Postal dans le UserForm et de déclencher par clic sur E7.
Ce sera beaucoup plus simple je pense que d'en faire une unique combinant les deux choix.
 

patricktoulon

XLDnaute Accro
re
bonjour
fait moi plaisir
fait une recherche avec le pseudo boisgontierjacques sur google et cherche ses sources et démo sur les combobox avec filtres de variable tableaux dynamiques c'est déjà tout prêt a l'emplois

ca serait peut etre moins contraignant que d'utiliser des textboxs

je dis ca moi je dis rien

@sylvanu
e mieux est de refaire la même chose en inversant Ville et Code Postal dans le UserForm et de déclencher par clic sur E7.
Ce sera beaucoup plus simple je pense que d'en faire une unique combinant les deux choix.
alors je récapitule
  1. tu clic sur sur c7 et ouvre le userform
  2. tu tape dans le textbox code postal et ca te sort les villes
  3. tu clic sur e7 ca ouvre le userform
  4. tu tape dans le textbox ville et ca te sort les codes postal
  5. et tout ca avec le même userform (soit deux textbox et une listbox )
y a pas abus de manipulation la ??????

j'ai pas le temps aujourd'hui mais si je rentre pas trop tard je ferais une demo de mon point de vue

mais faite quand même cette recherche ;)
 

jeromeN95

XLDnaute Occasionnel
Bonsoir,
j'ai trouver beaucoup d'info interessante, j'ai passer 2h à télécharger des fichiers car précieux !

J'ai donc retravailler entièrement le fichier.
Le code est nettement plus simple mais je n'arrive toujours pas à faire dans l'autre sens.

Edit : en faite je l'ai fait dans l'autre sens !
J'aimerais une petite aide svp.
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonsoir.
Avec deux ComboBox et quelques pièces de ma fourniture "ComboBox liées et contrôles associés"
Attention: Quelque codes postaux correspondent à plusieurs villes. Il faut alors choisir laquelle.
 

Fichiers joints

patricktoulon

XLDnaute Accro
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
 

Fichiers joints

patricktoulon

XLDnaute Accro
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:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas