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 !
J'ai actuellement un fichier Excel 2003 qui recense plusieurs communes de plusieurs départements. Je ne suis pas très bon dans le VB et je souhaiterais un peu d'aide 😱
Je souhaiterais dans un premier temps pouvoir en cliquant sur le bouton "COMMUNE"; renseigner la commune à rechercher dans la zone de texte puis retourner la ligne correspondante (commune, département, cp, fruit, couleur etc...) dans le Userform "resultat_commune" pour afficher la carte d'identité de cette dernière.
Dans un deuxième temps, je souhaiterais en cliquant sur le bouton "CORREZE CANTAL"; effectuer un affichage de la liste des communes uniquement du département 15 et 19. Ensuite l'utilisateur pourra sélectionner cette dernière et afficher la carte d'identité dans le Userform "resultat_commune".
Faut-il être infaillible sur les départements français pour utiliser ton fichier (ou peut-être fournis tu la liste à coté) ?
De même Clermont-Ferrant n'est pas un département, peut-être une agglo !
Plus sérieusement, peux-tu soit compléter ta base de données, ou seulement faire une recherche sur le numéro du département
A+
kjin
En dehors des problèmes départementaux, ci-joint un essai sur la base de ton exemple que tu pourras modifier pour l'adapter à ce que tu souhaites mais les enchaînements, listes et résultats sont opérationnels.
J'ai supprimé les différents userforms inutiles puisque la liste "commune" peut être initialisée pour chaque région dans le même userform.
Bonsoir,
La base de donnée n'est qu'un exemple, ce qui explique en partie les problèmes liés au département. J'ai regroupé volontairement certains départements comme le 63 sur Clermont-Ferrand car dans mon travail ils sont traités par cette ville.
Merci à toi Gael pour ta rapidité, c'est tout a fait ce que je cherchais !😀
Une seule petite chose, comment faire pour lancer directement l'Userform "Accueil" au démarrage (sans avoir à cliquer sur le bouton "MENU"). Et donc si c'est possible comment faire pour revenir après en mode "creation" afin de modifier le contenu du fichier.
En dehors des problèmes départementaux, ci-joint un essai sur la base de ton exemple que tu pourras modifier pour l'adapter à ce que tu souhaites mais les enchaînements, listes et résultats sont opérationnels.
J'ai supprimé les différents userforms inutiles puisque la liste "commune" peut être initialisée pour chaque région dans le même userform.
Peux tu m'expliquer la partie de code permettant de faire la recherche puis la mise en forme dans l'Userform (resultat_commune).
En effet, je souhaite appliquer ce code pour + de 2000 communes et environ 7 départements. Le projet final aura aussi une quinzaine de colonnes dans la feuille BD.
Le principe dans mon exemple est d'utiliser le filtre automatique d'Excel.
* Pour le USF "Accueil", aucune donnée n'est filtrée au départ.
* En fonction du bouton séléctionné, on filtre les enregistrements de la feuille "bd" avec le code suivant:
Code:
Private Sub CommandButton2_Click()
Range("A2").AutoFilter Field:=2, Criteria1:="=15", Operator:=xlOr, Criteria2:="=19"
commune.Show
End Sub
Le limite est de 2 critères (soit ici 2 départements), au-delà, il faudra faire différemment.
En fonction du bouton, tu mets dans un ou deux critères les départements à filtrer puis on appelle l'USF "Communes".
A l'initialisation, pour chaque commune visible dans la feuille (donc correpondant au filtre choisi) on crée un item supplémentaire dans le combobox pour générer la liste.
Code:
Sheets("bd").Activate
With Worksheets("bd")
For Each c In .Range("A2", [A65536].End(xlUp)).SpecialCells(xlCellTypeVisible)
ComboBox1.AddItem c.Value
Next c
End With
Puis une fois le choix effectué, on lance le dernier USF "Résultat-commune" qui va rechercher la ligne contenant la valeur sélectionnée dans la feuille Bd et récupérer les informations:
Code:
With ActiveSheet.Range("A2", [A65536].End(xlUp)).SpecialCells(xlCellTypeVisible)
Set c = .Find(commune.ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
End With
For i = 1 To 6
Me.Controls("Textbox" & i) = Cells(c.Row, 1).Offset(0, i - 1)
Next i
Si tu as 15 colonnes, rien ne change sauf "For i = 1 to 15" à condition que les "Textbox" soient numérotées de 1 à 15.
Le fait d'avoir 2000 communes ne change rien puisque l'instruction:
Code:
.Range("A2", [A65536].End(xlUp))
Va sélectionner la plage A2 jusqu'à la dernière ligne contenant une valeur.
J'ai l'impression que dans mon cas ça ne fonctionne pas.
L'USF que je souhaite lancer au demarrage est "accueil".
Je souhaite lancer uniquement cette USF au demarrage.
Quel serait le code VB ?
Private Sub Workbook_Open()
Application.DisplayFullScreen = False
accueil.show
End Sub
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.