Userform ... Boutton validation

Cap_ou_pas_cap

XLDnaute Junior
Bonjour a tous !

Je me retourne vers vous car depuis 1 mois j'essaye de comprendre userform .. je dois pas etre tres doué d'ailleurs ... Je vis donc exposer mon probleme ... j'essaye de creer un userform a partir de donnée d'un tableau dans mon exel, j'ai creer mon formulaire remplie mes combobox avec des code ainsi que mes listeBox (d'ailleurs je voudrais savoir si c'etait possbile de mettre des crois pour pouvais faire selectionner plusieurs choix ?) Puis j'ai creeer un boutton command pour lancer le formulaire mis j'ai l'impression que ca marche pas. Je m'explique je voudrais savoir si c'etait possible en remplissant le formulaire en appuyant avec les diffrents combobox et listebox et en appuyant sur un boutton recherche ou validez qu'il me ressorte a partir de mon tableau exel (tableau des donné donc que j'ai rentree pour faire mon userform) tout les produits qui correspont a partir des donnée de mon formulaire ... je pense que c'etait possible mais ca fait 1semaine que je reste bloque alros je perd un peu espoir ...

Desole si c'est brouillon ..

Cordialement,

Bonne journée

P.J : j'ai creer 1er userfom a partir de la feuille "FP" par la suite j'aimerais en creer plusieurs avec differente donné si cela est realisable.
 

Pièces jointes

  • Logiciel Variante.xls
    243 KB · Affichages: 151
  • Logiciel Variante.xls
    243 KB · Affichages: 159
  • Logiciel Variante.xls
    243 KB · Affichages: 152

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Qu'est ce que vous avez mis dans le Redim au lieu de 19 ?
Notez que vous pourriez le replacer par LbxSélect.ColumnCount - 1 si vous avez pris soin de mettre ce ColumnCount à 7 dans la fenêtre de propriété.
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Mettez On Error Resume Next devant, vous comprendrez peut être mieux en voyant ce qui vient ou pas dans la ListBox…
Avec le dernier code du poste #108, où vous n'avez pas prévu en premier la colonne 1, il faut 6 comme UBound(Ts, 2) et pas plus, car il n'y a que 7 numéros de colonnes spécifiés, le premier étant 2, derrière l'index C + 1 désiré. Donc ça plante pour C = 7 parce que 7 + 1 = 8.
0C + 1 = 1Choose(1, 2, 3, 4, 15, 17, 18, 19) = 2Ts(Ls, 0) = Te(Le, 2)
1C + 1 = 2Choose(2, 2, 3, 4, 15, 17, 18, 19) = 3Ts(Ls, 1) = Te(Le, 3)
2C + 1 = 3Choose(3, 2, 3, 4, 15, 17, 18, 19) = 4Ts(Ls, 2) = Te(Le, 4)
3C + 1 = 4Choose(4, 2, 3, 4, 15, 17, 18, 19) = 15Ts(Ls, 3) = Te(Le, 15)
4C + 1 = 5Choose(5, 2, 3, 4, 15, 17, 18, 19) = 17Ts(Ls, 4) = Te(Le, 17)
5C + 1 = 6Choose(6, 2, 3, 4, 15, 17, 18, 19) = 18Ts(Ls, 5) = Te(Le, 18)
6C + 1 = 7Choose(7, 2, 3, 4, 15, 17, 18, 19) = 19Ts(Ls, 6) = Te(Le, 19)
7C + 1 = 8Choose(8, 2, 3, 4, 15, 17, 18, 19) = NullPlantage
Finalement vous y arriverez peut être plus facilement avec une demi douzaine d'affectations individuelles telles qu'elles figurent dans la dernière colonne du tableau ci dessus. J'ai eu tort de croire que ça vous serait plus simple d'indiquer la liste des colonnes qu'il vous fallait à partir du second paramètre d'un Choose (vu que le premier c'est simplement l'index).
 
Dernière édition:

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Bonjour,

Merci pour votre aide ...

Je vais essayer ..

Du coup on peut reprendre le meme schema pour les resultats a affiché sur la feuille exel si je ne veux pas les 15 premier valeurs de la colonne mais plutot choisir comme on le fait pour la listbox ?

Cordialement,
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Je remet en piece joint l'exel est le code pour voir si vous trouvez l'erreur qui se produit ...

Merci,

Cordialement,
 

Pièces jointes

  • Logiciel Variante test Version 3 (ComboBox) (Enregistré automatiquement).xls
    290 KB · Affichages: 92
  • Logiciel Variante test Version 3 (ComboBox) (Enregistré automatiquement).xls
    290 KB · Affichages: 98
  • Logiciel Variante test Version 3 (ComboBox) (Enregistré automatiquement).xls
    290 KB · Affichages: 93

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Bonjour.
Il n'y a pas de '(C)' à mettre à la fin. Ça ce serait avec Array pas Choose. C'est soit Array(…)(C) soit Choose(C+1,…)
Ensuite ça plante en essayant de récupérer Te(Le, 15) alors que vous n'en avez initalisé que 8 colonnes à partir de la plage CL.PlgTablo ! J'ai vraiment l'impressiopn que vous ne chercher pas tu tout à réfléchir à la cohérence de ce que vous faites !
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Desole c'est moi j''ai envoye un mauvais dossier !!!
rivate Sub CL_Résultat(Lignes() As Long)
Dim Te(), Le&, Ts(), Ls&, C&
TLgn = Lignes
Te = CL.PlgTablo.Resize(, 19).Value
ReDim Ts(0 To UBound(TLgn) - 1, 0 To 7)
For Ls = 0 To UBound(Ts, 1)
Le = Lignes(Ls + 1)
For C = 0 To UBound(Ts, 2)
Ts(Ls, C) = Te(Le, Array(1, 2, 3, 4, 13, 15, 16, 17)(C))
Next C, Ls
Me.LbxSélect.List = Ts
CommandButton1.Enabled = False
End Sub

Mon code etant celui ci pour la liste box celui ci marche !!

Mais pour le resultat il ne marche pas :

Private Sub CommandButton1_Click()
Dim Te(), Le&, Ts(), Ls&, C&, N&, Cible As Range
Te = CL.PlgTablo.Resize(, 19).Value
ReDim Ts(1 To 500, 1 To Choose(1, 2, 3, 4, 13, 15, 16, 17))
For N = 0 To LbxSélect.ListCount - 1
If LbxSélect.Selected(N) Then
Le = TLgn(N + 1): Ls = Ls + 1
For C = 1 To Choose(1, 2, 3, 4, 13, 15, 16, 17): Ts(Ls, C) = Te(Le, C): Next C
End If: Next N
Set Cible = PlgUti(Feuil1.[A1])
Cible.Offset(Cible.Rows.Count).Resize(Ls, 8).Value = Ts
End Sub

Car sur la feuille exel il me marque bien les deux premiere colonne mais pour la suite il me mets #N/A
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Mais non, vous ne pouvez pas employer le Choose comme ça voyons !
Faites comme dans la CL_Résultat, sauf qu'il faut prendre Array(…)(C - 1). En effet la borne inférieure des dimensions des tableaux définis par Array c'est 0, comme pour les lignes et colonnes de début des propriétés List des ListBox et ComboBox, contrairement à ceux correspondant aux Value des Range, lesquels commencent à 1. Ou alors prenez Choose(C,… pour cette procédure, là c'est bon.
 

Discussions similaires

Réponses
33
Affichages
3 K