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

Bonjour.

Quand vous avez une erreur de compilation "Type défini par l'utilisateur non défini" il faut regarder quel est le nom de ce type dans l'instruction surlignée. C'est bien souvent aussi le nom d'un module de classe qu'on vous a dit d'installer ou dont le code est contenu dans une DLL dont on vous a dit d'ajouter la référence.
Quand vous avez "Sub ou Function non définie", même démarche sauf que ce n'est pas un module de classe qui peut manquer mais un module ordinaire.

P.S. Une fois les 5 modules de service installés et la référence "Microsoft Scripting Runtime" cochée dans la liste Références disponibles, menus Outils, Références… il n'y a plus d'erreur de compilation. Mais une erreur d'exécution, cette fois, "Objet requis" survient sur l'instruction CL.Plage FP.Rows(3). Cela ne serait pas arrivé si vous ne vous étiez considérablement compliqué les choses en vous accordant le droit de ne pas déclarer des variables.
Option Explicit étant donc ajouté tout en tête du module de l'userform, cela se retransformera sûrement en erreur de compilation "Variable non définie", bien plus claire à comprendre. Mais tout d'abord, il s'en produit une dès le Set CL. En effet CL n'est pas déclaré. Il doit l'être en tête du module, juste derrière la Option Explicit, et non dans la Private Sub UserForm_Initialize car ce sera une variable globale dans tout l'Userform et non pas une variable locale dans cette procédure puisqu'elle devra être conservée en mémoire bien au delà de son exécution. Cela étant fait, on tombe effectivement sur le problème de FP qui n'est pas non plus défini. Il existe bien, dans Excel, une feuille qui porte ce nom, mais la constante de type Worksheet qui la représente c'est Feuil3, pas FP, voir rubrique Microsoft Excel Objets dans l'explorateur de projet.
Cette dernière erreur réparée, tout ce qui devait être fonctionnel à ce stade le devient enfin.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Bonjour.

Plus de nouvelles ? C'est résolu donc !
Je suppose que vous devez vous être lancé dans la suite de la programmation dans cet Userform alors.
Je voulais quand même m'assurer que vous avez bien compris que le fonctionnement harmonieux des ComboBox n'est pas le seul service que peut rendre un objet ComboBoxLiés. J'espère que vous ne vous êtes pas mis à écrire du code qui refait tout le travail qu'il a déjà fait, en parcourant toute la base et comparant les colonnes avec les valeurs des ComboBox ! Vous seriez passé complètement à coté du plus intéressant !
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Bonjour,

Merci de l'interete et de l'aide que vous portez a mon projet. Malheuresement je n'ai pas beaucoup de temps en ce moment entre le boulot et les etudes .. donc je n'ai pas beaucoup beaucoup avancé sur le sujet ... Mais des que je peux avancer je vous tiens au courant =).

Bonne journée
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Bonjour,

J'essaye d'appliquer au mieux tout les details que vous avez mis j'ai un peu de mal pour al derniere partie je suis pas sur de tout comprendre du coup je me demandais si vous pouvez m'aider.

Une fois les 5 mudules mis j'ai remis le code vb suivant :

Option Explicit
Dim WithEvents CL As ComboBoxLiés

Private Sub UserForm_Initialize()
Set CL = New ComboBoxLiés
CL.CorrespRequise = True
CL.Plage Feuil3.Rows(3)
CL.Add Me.ComboBox1, "F"
CL.Add Me.ComboBox2, "E"
CL.Add Me.ComboBox3, "N"
CL.Add Me.ComboBox4, "G"
CL.Add Me.ComboBox5, "J"
CL.Add Me.ComboBox6, "M"
CL.Add Me.ComboBox7, "H"
CL.Add Me.ComboBox8, "K"
CL.Actualiser
End Sub

il me met Erreur de compilation : " Attribut incorrect dans unecedure Sub ou function"

Je ne vois pas quel module faire ...

Une fois cette erreur reparer est ce que en faisant ma recherche sur certains critere et en appuyant sur le bouton recherche est ce que les resultats s'afficheront ?

Merci d'avance.
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Non, là je ne vois rien d'anormal. Quelle instruction est en erreur ? Joignez le classeur.
Non, il ne faut plus de bouton Rechercher parce que la recherche aura déjà été faite. Il faudrait un Label pour y indiquer le nombre de lignes connues s'y rapportant. Ensuite ça dépendra de ce que vous voudrez faire de ces lignes. Implantez les modèles de procédures qu'il vous faut à l'aide des deux larges listes déroulantes qui surmontent la fenêtre de code. Dans celle de gauche sélectionnez CL, dans celle de droite Résultat.

P.S. Une petite puce m'a mis à l'oreille de vous dire que l'attribut WithEvents est incorrect pour les variables locales. Forcément ! les évènements décrétés par un objet volatile ne sauraient être interceptés, réfléchissez deux secondes. Ce n'est forcément possible qu'avec des variables objets globales, donc déclarées en tête de l'Userform et en aucun cas dans une Sub.
 
Dernière édition:

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Mon fichier est trop gros pour l'envoyer ...

Sinon merci j'ai regle ce soucis, effectivement il fallait le mettre en tete de l'user,

concernant les resultat oui je voudrais si possible d'un coté qu'on mette les resultats trouvé dans une lsitebox(par exemple? ) à l'aide des combobox(Cl) puis dans une autre listebox si c'est possible selectionné celle qu'on veut en fonction des resultats obtenue des Cbbox.

Merci

Cordialemen,
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Bonjour.

Oui pas de problème, CL étant sélectionné dans la liste de gauche, la sélection de Résultat dans celle de droite vous aura automatiquement implanté un modèle de Private Sub CL_Résultat(Lignes() As Long). C'est dans cette procédure que vous pouvez fabriquer un tableau à destination de la ListBox. Pour pouvoir, à la sélection de lignes dans celle ci, reprendre les données d'origine et non celles de la ListBox, vous auriez aussi intérêt à y noter dans un TLgn() As Long global une copie de Lignes.
Conseil: Utilisez CL.PlgTablo: ça garantira de bien repartir des bonnes lignes de la plage dont la 1ère ligne aura été indiquée au CL.Plage dans la UserForm_Initialize.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Non, je parlais des deux larges listes déroulantes qui surmontent la fenêtre de code dans l'éditeur VB. Celle de gauche (infobulle Objet) pour sélectionner l'objet à évènements dont on veut faire venir un modèle de procédure (Worksheet, Userform, ListBox, voire une variable globale déclarée avec l'attribut WithEvents), et celle de droite (infobulle Procédure) pour choisir la procédure qu'on veut installer (Activate, Initialize, Change, voire un évènement de module de classe y étant déclaré par l'instruction Event et déclenché par l'instruction RaiseEvent).
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Bonjour,

Houla désolé je suis pas sur de tout suivre ...

Je sais que comme ca a l'air simple mais c'est la 1er fois que j'utilise VBA enfin depuis que j'ia commencer a faire cette outils.
Donc les deux liste deroulante que vous parler c'est bien de la fenetre de propriété ? Je suis pas sur car je trouve pas les fonctions que vous me dites ...

Merci d'avance

Cordialement,
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Non, pas la fenêtre de propriété, la fenêtre de code. Celle où vous entrez des instructions. Observez la bien: elle ne commence pas immédiatement en dessous des barres de menu et d'outils: il y a d'abord deux listes déroulantes. Et bien ce n'est pas pour la décoration qu'elles sont là…
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

D'accord merci,

Effectivement je n'etais pas du tout sur ca.

Donc maitenant que j'ai selectionné CL a gauche et resultat a droite j'ai bien
Private Sub CL_Résultat(Lignes() As Long)
Qui s'affiche et je dois creer un code pour defenir les resultats que je veux dans une 1er listebox que je vais creer c'est ca ?
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Oui, c'est ça.
À titre purement indicatif, cette procédure enverrait les 10 1ères colonnes du résultat dans une ListBox de ColumnCount=10 nommée LbxSélect :
VB:
Private Sub CL_Résultat(Lignes() As Long)
Dim Te(), Le&, Ts(), Ls&, C&
Te = CL.PlgTablo.Resize(, 10).Value
ReDim Ts(0 To UBound(Lignes) - 1, 0 To 9)
For Ls = 0 To UBound(Ts, 1)
   Le = Lignes(Ls + 1)
   For C = 0 To UBound(Ts, 2)
      Ts(Ls, C) = Te(Le, C + 1)
      Next C, Ls
Me.LbxSélect.List = Ts
TLgn = Lignes ' pour usage ultérieur…
End Sub
 

Discussions similaires

Réponses
33
Affichages
3 K

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll