Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Code VB de recherche dans un tableau

  • Initiateur de la discussion Initiateur de la discussion limofab
  • 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 !

L

limofab

Guest
Bonjour à tous,

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".

Merci d'avance pour votre aide
 

Pièces jointes

Dernière modification par un modérateur:
Re : Code VB de recherche dans un tableau

Bonjour,
..."CORREZE CANTAL"; effectuer un affichage de la liste des communes uniquement du département 15 et 19...
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
 
Re : Code VB de recherche dans un tableau

Bonjour Limofab, bonjour 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.

@+

Gael
 

Pièces jointes

Dernière édition:
Re : Code VB de recherche dans un tableau

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.

Cordialement
 
Re : Code VB de recherche dans un tableau


Bonjour Kjin,

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.

Cordialement
 
Re : Code VB de recherche dans un tableau

Bonjour à tous,

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.

Relance le Fil si problème avec un exemple.

@+

Gael
 
Re : Code VB de recherche dans un tableau

Ok merci pour ces précieuses informations 😉
Je vais regarder ça le week end prochain.
Je relance le fil si j'ai un prob
Encore merci !
 
Re : Code VB de recherche dans un tableau

Re Bonsoir,

Juste une ptite question.
Comment lancer uniquement l'USF sans lancer les feuilles Excel en arrière plan ?

Cordialement
 
Re : Code VB de recherche dans un tableau

Bonsoir à tous, le Forum,
Peut être avec la fonction Minimize :

utiliser les événements suivants

Worksheet_Activate()
Worksheet_Deactivate()

et

Workbook_Activate()
Workbook_Deactivate()

Si tu veux que toutes les feuilles de ton classeur soient en "Fullscreen" :

Private Sub Workbook_Activate()
Application.DisplayFullScreen = True
End Sub

Private Sub Workbook_Deactivate()
Application.DisplayFullScreen = False
End Sub

Si tu veux avoir seulement une feuille en "Fullscreen" :

Private Sub Worksheet_Activate()
Application.DisplayFullScreen = True
End Sub

Private Sub Worksheet_Deactivate()
Application.DisplayFullScreen = False
End Sub

dans le module de la feuille concernée.

Cordialement
 
Re : Code VB de recherche dans un tableau

Bonsoir,

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

Cordialement
 
Re : Code VB de recherche dans un tableau

Bonsoir,
Essaies à tes risques et périls (fait une petite recherche sur le forum)
Code:
Private Sub Workbook_Open()
Application.Visible = False
accueil.show
End Sub
A+
kjin
 
- 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.

Discussions similaires

Réponses
1
Affichages
210
Réponses
32
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…