Recherche V (à partir d'un USERFORM) avec plusieurs critères

BONJOUR A TOUS.

Je suis encore là, avec un obstacle bien difficile à franchir, pour mon niveau de programmation.

Ils'agit de la RECHERCHE V avec plusieurs critères. Si je ne m'en sors pas c'est dû au fait que je veux effectuer cette recherche à partir dun USERFORM. C'est vraiment du nouveau pour moi. Et je me demande s'il est POSSIBLE de le faire.

Les critères de recherche sont portés dans ma ListBox1, ComboBox1 et ComboBox2.

La ListBox1 porte le nom de la plante dont on cherche les résultats. .

La ComboBox1 porte le nom de la ZONE (feuil) dans laquelle la recherche doit s'effectuer

La ComboBox2 porte le nom du trimestre (ListObject) dans laquelle la recherche doit s'effectuer.

A l'issue de la recherche (pour le nom saisi dans la listbox1), le résultat est copié sur le UserForm dans la listbox2 pour (la date de stokage), listbox3 pour (longueur des plantes), listbox4 pour (la largeur des feuilles), listbox5 pour (début floraison), listbox6 pour (fin floraison).

J'ai pu écrire le code qui imprime et celui qui charge les ComboBox. Et je n'ai pas pu avancer pour le code de la recherche.

Avec le fichier joint, vous me comprendriez bien plus j'espère.merci de votre aide.

18aide-2.xlsm (55.02 Ko)

Bonjour

Ci joint ma solution

16aide-2.xlsm (48.52 Ko)

A+ François

Bonjour à tous les deux.

Et ici la mienne.
PS : j'ai remplacé les 5 TextBox par des Labels parce que les TB ne sont pas faites pour cela.

21aide-2.xlsm (46.71 Ko)

Bonjour à Fanfan 38 et à Optimix.

voilà maintenant plus de 24h que j'essaie d'adapter votre solution à mon obstacle, mais en vain. J'ai fini par comprendre que le classeur que j' ai fourni en exemple pour solliciter votre aide n'était pas structuré comme il se devait car mon classeur original est un peu différent de ce dernier.

En effet, dans mon classeur original, mes tableaux sont placés sur la ligne A5. ET de la ligne (A1 à A4), j'ai des cellules fusionnées et non fusionnées. En plus, les feuilles portent des noms très différents (" 6e1, 5a1, 6m1, 5h1, ...)

Fanfan38,Votre code;

au cours de son exécution, il s'arrête au niveau de

With sheets (Me combobox1.Value). Listobjects (mavar).

Il me revient

erreur d'exécution '9': l'indice n'appartient pas à la sélection

Et lorsque je pointe le curseur sur (mavar), il me sort en filigrane :

mavar= "T_Zone14tri1"

*******

PHILIPPE. au cours de l' exécution votre code, il s'arrête au niveau de:

Set wS = sheets (combobox1.text)

Et le message suivant apparaît :

Sheets (combobox1.text)=<l'indice n'appartient pas à la sélection.>

*Pourtant quand je met le curseur sur le combobox1, la zone est bien choisie.

Aussi, au niveau de

Offset= combobox2.ListIndext * 9+2

je ne comprends pas le rôle de 9+2.

Merci bien 🙏🙏

Bonjour

Les tableaux sur la feuille Zone 1 ont été renommé en T_Zone1tri1 pour le trimestre 1... mavar correspond au nom de ses tableaux

Mais moi je n'ai pas de tableau T_Zone14tri1...

A+ François

Oui, je vois. En fait, c'est dans le code adapté à mon classeur qu'il me ressort T_Zone14tri1.

le problème, c'est dû au fait que les différentes feuilles de mon classeur sont nommés autrement que (zone1, zone2, zone3 etc.)

Comment dois-je réécrire le"T_Zon1tri1" dans mon code pour qu'il marche ?

merci

Je ne m'appelle pas Philippe, mais Michel peu importe.

Dans l'UF que vous nous avez proposée, vos listes contiennent les trimestres 1, 2 et 3. Mais dans les onglets Zone 1, 2 et 3 vous n'êtes pas allé jusqu'au 3e trimestre. Je l'ai donc ajouté dans ma solution. Dans ces onglets, les trimestres 2 et 3 sont décalés de 9 colonnes par rapport au précédent, ce qui explique le +9. Et comme la date de repiquage (qui sert de repère pour le reste) se trouve dans la 2e colonne (B2), cela donne :

offSet = ComboBox2.ListIndex * 9 + 2 ('offset = colonne de la date de repiquage)
- si on sélectionne le 1er trimestre (index=0) offset prend la valeur 2 ;
- si on sélectionne le 2e trimestre (index=1) offset prend la valeur 11 ;
- et si on sélectionne le 3e trimestre (index=2) offset prend la valeur 20.

Si vous avez une erreur, c'est probablement parce que vous n'avez pas mis le 3e trimestre dans vos onglets.

avec l'userform d'Optimix

Private Sub CommandButton5_Click()
     Dim wS As Worksheet
     Dim j As Variant, LO

     If ComboBox1 = "" Then
          MsgBox "Vous devez sélectionner une zone.", vbCritical + vbOKOnly, "Saisie incomplète"
          ComboBox1.SetFocus
          Exit Sub
     End If

     If ComboBox2 = "" Then
          MsgBox "Vous devez sélectionner une période.", vbCritical + vbOKOnly, "Saisie incomplète"
          ComboBox2.SetFocus
          Exit Sub
     End If

     Set wS = Sheets(ComboBox1.Text)
     wS.Select

     Set LO = wS.Cells(2, ComboBox2.ListIndex * 9 + 2).ListObject     'le tableau qui correspond avec zone et trimestre en supposant que tous les tableaux commencent dans la ligne 2
     j = Application.Match(TextBox1.Value, LO.ListColumns("nom des plantes").DataBodyRange, 0)     'rechercher plante

     If Not IsNumeric(j) Then                'plante n'existe pas
          MsgBox "Plante non trouvée.", vbCritical + vbOKOnly, "Saisie incomplète"
     Else
          With LO.DataBodyRange              'dans ce TS
               Label1.Caption = .Cells(j, 1)
               Label2.Caption = .Cells(j, 2)
               Label3.Caption = .Cells(j, 3)
               Label4.Caption = .Cells(j, 4)
               Label5.Caption = .Cells(j, 6)
          End With
     End If
End Sub

Ca n'a rien à voir avec le nom de la feuille...

par contre si dans combobox1 la feuille c'est Zone 1 et que en réalité la feuille c'est 6éme... Là il y aura un probleme...

  mavar = "T_Zone" & Me.ComboBox1.ListIndex + 1 & "tri" & Me.ComboBox2.ListIndex + 1
  Me.ComboBox3.Clear
  With Sheets(Me.ComboBox1.Value).ListObjects(mavar)
'explication mavar est égale au nom du tableau concerné soit ici
"T_Zone" suivi du n° du choix du combobobox1 +1 (le choix1=0) suivi de "tri" et du choix du combobobox2 +1 

A+ François

Bonjour à vous. Optimix, Fanfan38, BsAvl.

Merci à vous pour le temps que vous m'accordez à chacune de mes sollicitations.

Une fois de plus, votre aide m'a permise de m'en sortir et surtout d'apprendre beaucoup de choses sur la programmation. Certes, il me reste encore beaucoup à faire.

BREF, les 3 codes que vous m'aviez proposés; ( suivis de vos différentes explications) m'ont permis d'adapté chacun d'eux à mon classeur. Et tout marche CORRECTEMENT.

Grandement merci à vous🙏🙏🙏🙏

Alors les objectifs sont atteints : régler un problème et donner envie d'aller plus loin. Bon courage.

Merci bien. By

Rechercher des sujets similaires à "recherche partir userform criteres"