Recherche particuliere

maval

XLDnaute Barbatruc
Bonjour

Voilà j'ai fichier avec une feuille nommer "Choix" avec une liste de races de chien et leurs correspondances
ex; Chien de berger, chien d'aveugle ect... de la colonne "D : T".
J'ai un formulaire avec des optionboutton et 3 combobox alimenter: 1 Groupe, 1 Taille, 1 Pays d'origine;
J'aimerai faire une recherche en fonction des critères sélectionner.
ex: je coche chien Militaire du groupe 1 par la combobox et j'aimerai avoir sur la feuille nommer "Résultat" tous les chiens militaire du groupe 1
Je vous remercie de votre aide
 

Pièces jointes

  • Aliment combobox sans doublon.xlsm
    147.4 KB · Affichages: 49

Modeste geedee

XLDnaute Barbatruc
Re : Recherche particuliere

Bonsour®
:( la notion d'origine n'est pas associée au tableau objet de la sélection .
:cool: la notion de taille devrait faire l'objet d'un seul champ avec pondération : (P)etit, (M)oyen ,(G)rand
pour les autres critères il conviendrait également de pondérer pour chaque animal, l'aptitude correspondante(0 à 9)

Un tableau croisé dynamique permettrait facilement alors une recherche par critère
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    39 KB · Affichages: 44
  • Capture.JPG
    Capture.JPG
    39 KB · Affichages: 47
  • Capture.JPG
    Capture.JPG
    39 KB · Affichages: 45
  • Capture.JPG
    Capture.JPG
    30.6 KB · Affichages: 46
  • Capture.JPG
    Capture.JPG
    30.6 KB · Affichages: 44
  • Capture.JPG
    Capture.JPG
    30.6 KB · Affichages: 44

Robert

XLDnaute Barbatruc
Repose en paix
Re : Recherche particuliere

Bonjour le fil, bonjour le forum,

Même remarque que Modeste geedee pour l'origine...
J'ai ajouté à la propriété Tag de chaque OptionButton le numéro de la colonne qui lui correspondait, puis j'ai utilisé des Filtres Automatiques.
Le code :
Code:
Private Sub CommandButton1_Click()
Dim c As Object 'déclare la variable c (onglet Choix)
Dim r As Object 'déclare la variable r (onglet Résiltats)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLAGE)
Dim pspl As Range 'déclare la variable pspl (Plage Sans Première Ligne)
Dim ctrl As Control 'déclare la variable ctrl (ConTRôLe)
Dim col As Byte 'déclare la variable col (COLonne)
Dim test As Boolean 'déclare la variable test

Set c = Sheets("Choix") 'définit l'onglet c
Set r = Sheets("Résultats") 'définit l'onglet r
r.Range("A6").CurrentRegion.Clear 'efface les éventuelles anciennes données de l'onglet r
r.Range("I1:I3").Clear 'efface les références de la recherche
dl = c.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A) de l'onglet c
Set pl = c.Range("A3:T" & dl) 'définit la plage pl
Set pspl = c.Range("A4:T" & dl) 'définit la plage pspl (Plage pl Sans la Première Ligne)
For Each ctrl In Me.Controls 'boucle sur tous les contrôles de l'UserForm
    If TypeOf ctrl Is msforms.OptionButton Then 'condition 1 : si le contrôle est un bouton d'option
        If ctrl = True Then 'condition 2 : si le bouton est coché
            col = CByte(ctrl.Tag) 'récupère la colonne dans la propriété "Tag" du contrôle
            test = True 'définit la variable test
            r.Range("I1") = ctrl.Caption 'place l'aptitude en I1 de l'onglet r
            Exit For 'sort de la boucle
        End If 'fin de la condition 2
    End If 'fin de la condition 1
Next ctrl 'prochain contrôle de la boucle
If c.FilterMode = True Then pl.AutoFilter 'si la plage pl est en mode filtre automatique, supprime le filtre automatique
If test = True Then pl.AutoFilter Field:=col, Criteria1:="X" 'filtre la plage par rapport au X dans la colonne col
If Me.ComboBox1.Value <> "" Then 'condition : si la ComboBox1 n'est pas vide
    pl.AutoFilter Field:=3, Criteria1:=Me.ComboBox1.Value 'filtre la plage pl par rapport au groupe
    r.Range("I2").Value = Me.ComboBox1.Value 'place le groupe en I2 de l'onglet r
End If 'fin de la condition
If Me.ComboBox2.Value <> "" Then 'condition si la ComboBox2 n'est pas vide
    Select Case Me.ComboBox2.Value 'agit en fonction de la valeur de la ComboBox2
        Case "Petite Taille" 'cas "Petite Taille"
            col = 18 'définit la colonne col
            r.Range("I3").Value = "Petite Taille" 'place la taille en I3 de l'onglet r
        Case "Moyenne Taille" 'cas "Moyenne Taille"
            col = 19 'définit la colonne col
            r.Range("I3").Value = "Moyenne Taille" 'place la taille en I3 de l'onglet r
        Case "GrandeTaille" 'cas "GrandeTaille" (il n'y a pas d'espace ?)
            col = 20 'définit la colonne col
            r.Range("I3").Value = "Grande Taille" 'place la taille en I3 de l'onglet r
    End Select 'fin de l'action en fonction de ...
    pl.AutoFilter Field:=col, Criteria1:="X" 'filtre par rapport au X dans la colonne col
End If 'fin de la condition
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante
'copie les coloones A à C de la plage pspl visible dans A6 de l'onglet r (génère une erreur si la plage pspl visible est vide)
Application.Intersect(pspl.SpecialCells(xlCellTypeVisible), c.Columns("A:C")).Copy r.Range("A6")
If Err <> 0 Then MsgBox "Aucune chien trouvé avec ces critères" 'si une erreur a été générée, message
pl.AutoFilter 'supprime le filtre automatique
r.Select 'sélectionne l'onglet r
test = False 'initialise la variable test
End Sub
Le fichier :
 

Pièces jointes

  • Maval_v01.xlsm
    131.2 KB · Affichages: 37

maval

XLDnaute Barbatruc
Re : Recherche particuliere

Bonjour Robert,

Je te remercie beaucoup j'ai essayé sa fonctionne mais je ne comprend pas un truc a chaque fois que je click sur le bouton j'ai le message d'erreur
"If Err <> 0 Then MsgBox "Aucune chien trouvé avec ces critères" 'si une erreur a été générée, message" qui déclenche ?
Je vais bien voir....!

Merci beaucoup pour code

@+
 

maval

XLDnaute Barbatruc
Re : Recherche particuliere

Bonjour Robert

Si tu passe par la et que tu as cinq minutes j'ai mis le fichier au complet J’ESPÈRE.....

Merci et bonne journée
 

Pièces jointes

  • fichier recherche.zip
    417.4 KB · Affichages: 54
Dernière édition:

maval

XLDnaute Barbatruc
Re : Recherche particuliere

Bonsoir

J'ai réparé quelque problème , mais il me reste toujours le problème de la recherche par pays je m'explique.
ex: si je recherche toutes les races de "chien du groupe 9" dans la catégorie "Chien de compagnie " et de nationalité "Angleterre" sa ne fonctionne pas alors qu'il y a bien des races de chien avec tous c'est attribut.

Si quelqu'un peut m'aider le fichier se trouvant au Post #8 et le dernier que je viens de déposé

Je vous remercie beaucoup et bonne soirée
@+

Max
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Recherche particuliere

Bonjour Maval, bonjour le forum,

Aucun chien de compagnie dans le groupe 9 ! donc c'est normal que le résultat soit vide...
Je suis sur une version 2 intégrant les pays d'origine mais si tu donnes des exemples non significatifs on n'y arrivera pas...
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Recherche particuliere

Bonjour Maval, bonjour le forum,

Je ne comprends pas ton fichier. Quand un chien a un pays d'origine, il n'a rien d'autre (ni aptitude, ni taille) sauf le groupe. Il est donc logique qu'en recherchant un pays d'origine et n'importe qu'elle aptitude ou n'importe quelle taille tu aies un résultat vide...
 

maval

XLDnaute Barbatruc
Re : Recherche particuliere

Bonjour Robert

Alors que doit je faire....... je suis dessus depuis trois jours et j'avoue que je commence a me mélanger un peut les pinceaux!

Regarde ce lui la sa devrais être bon
 

Pièces jointes

  • Recherche par Option boutonBon (2).zip
    458.3 KB · Affichages: 44
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Recherche particuliere

Bonsour®
Bonjour Robert

Alors que doit je faire....... je suis dessus depuis trois jours et j'avoue que je commence a me mélanger un peut les pinceaux!

il te faut reviser comment est constitué une base de données.
pour un enregistrement ligne, un champ (ou colonne) est un objet qui doit être documenté ou non par une caractéristique de ce champ(valeur, code, texte)

ainsi pour le champ Origine la caractéristique est le pays
tout comme pour le champ groupe le contenu est un nombre

le renseignement de certains champs est obligatoire , d'autre non
chaque animal à un pays d'origine, une race
mais pas nécessairement une aptitude à la chasse, guide d'aveugle ou autre (l'absence d'aptitude se traduit par une valeur nulle ou 0)
 

Discussions similaires

Statistiques des forums

Discussions
312 193
Messages
2 086 059
Membres
103 110
dernier inscrit
Privé