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

Quel est le nom du parcours du dossier des fichiers ?
On en revient à l'idée précédente: si vous tenez à ce que la colonne A contienne toujours "Fiche technique", il faut que soit dans une autre colonne, éventuellement masquée, le minimum nécessaire à reconstituer l'identification complète du fichier, sans les parties fixes qui peuvent être définies dans la macro, et éventuellement sans la fin du nom de fichier s'il se termine par des infos de version par exemple, ou si c'est toujours .pdf … ou pas d'ailleurs.
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

"..\Fiche technique pour Variante\Faux plafond\Fibre\Armstrong Optima.pdf" et pour pas laisse tout ce nom je nomme le nom par fiche technique. Pourquoi il faut que ca soit dans une colnne masqué ? si il faut qu'elle ne soit pas dans la meme colonne cela veut dire qu'il faut charnger le code de la lstSélect non ? car c'est elel qui defini les resultats et qui place directement les resultats dans les colonnes du fichier exel ? je sais aps si vous arrivez a me comprendre ?
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Oui j'arrive à peu près à comprendre la question.
En tout état de cause non, car je me fiche de ce qu'il y a dans une ligne de la ListBox. La seule chose qui m'intéresse dans le code du bouton c'est de savoir si elle est sélectionnée ou non. Mais je repars des données sources: Te = CL.PlgTablo.Resize(, 15)
Augmentez ce 15 si vous ajoutez une colonne pour les infos du fichier (non il n'est pas nécessaire de la masquer, sauf si ça vous donne des boutons de l'y voir). "Armstrong Optima" suffira sur une ligne si tous les fichiers sont sur ce même dossier et sont tous des pdf.

J'ai un doute: ne m'avez vous volontairement donné que la fin du chemin, ou commence-t-il par ".." ?
Dans ce dernier cas il s'agit d'une référence relative au dossier contenant le classeur. À un niveau plus haut pour être précis.

Installez cette procédure dans un module ordinaire, touche F5 dessus, et dites moi ce qui se passe
VB:
Sub Test()
Const CheminRelatif = "..\Fiche technique pour Variante\Faux plafond\Fibre"
Dim Z As String
ChDrive ThisWorkbook.Path: ChDir ThisWorkbook.Path
MsgBox "Dossier courant :" & vbLf & CurDir, vbInformation, "Test"
On Error Resume Next
ChDir CheminRelatif
If Err Then MsgBox "ChDir """ & CheminRelatif & """" & vbLf & _
   "==> erreur " & Err.Number & vbLf & Err.Description, _
   vbCritical, "Test": Exit Sub
MsgBox "Youpi !" & vbLf & "Dossier courant :" & vbLf & CurDir
Z = Dir("Armstrong Optima.*")
If Z = "" Then MsgBox "Ce dossier ne contient pas de ""Armstrong Optima.*"".", _
   vbExclamation, "Test": Exit Sub
ThisWorkbook.FollowHyperlink "File:" & Z
End Sub
 
Dernière édition:

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Bonjour,

Avant tout Merci de votre aide,

Pour le nombre des colonne par la suite j'aimerai la reduire est mettre certaine colonne precise mais bon comme vous m'avez dit tout au debut question par question.

Pour le cheminement du fichier c'est bien le debut, Concernant les Pdf De plus tout les fichier sont a partir de fiche technique pour fiche variante apres tout dependra de la base de donné qu'on traite et des produits. Mais pour cette userform tout les fichier seront dans a Partir du dossier "Faux plafond"

Concernant votre code je l'ai mis sur un module de base en appuyant sur F5 il marque
"Dossier courant : C:\Users\LO.TANG\Desktop\PFE\Exel"
Puis
Youpi !
"Dossier courant : C:\Users\LO.TANG\Desktop\PFE\Fiche technique pour Variante\Faux plafond\fibre"
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Boujour.

Mais ensuite ? Dit-il 'Ce dossier ne contient pas de "Armstrong Optima.*".' ou bien ouvre-t-il un Armstrong Optima.pdf ?
Il faudra préciser le dernier sous dossier alors soit dans une cellule devant soit dans la même : Fibre\Armstrong Optima.pdf
Si aucun des deux ne se produit, ce que je n'avais même pas envisagé, ajouter encore cette instruction à la fin :
VB:
If Err Then MsgBox "FollowHyperlink ""File:" & Z & """" & vbLf & _
   "==> Erreur " & Err.Number & vbLf & Err.Description, _
   vbCritical, "Test"
 
Dernière édition:

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Il faut le mettre dans un module ordinaire et pas dans le Thisworkbook ? Car la on precise Armstrong optima mais si on rendre un autre resultat ca peut etre un armstrong perla ou encore quand je vais creerr un deuxieme userform pour un autre base de donne je pourrais avoir un cheminement different je sais aps si vous voyez ou je veux en venir
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Vous voulez bien dire très exactement :
FollowHyperlink "File:Armstrong Optima.pdf"
==> Erreur 5
Argument ou appel de procédure incorrect
Alors là je ne vois pas du tout ce qui ne va pas

Si la méthode FollowHyperlink de l'objet Workbook ne marche pas mieux que ça chez vous je ne pourrai pas vous aider davantage, désolé.
 
Dernière édition:

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Oui il me dit ca exactement le code que vous avez ecrit.

Je verrais ca plutard alors ... Car je n'avance pas du tout sinon ...

MErci en tout cas,

Pouvez vous m'eclaircir au niveau de la lsitbox ce que je dois changer au code si je veut fiare apparaitre des colonnes precine et non les 15 premieres comment je pourrais ecrire le code pour ne faire appaitre que certaine colonne ?
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Vous pourriez y écrire la boucle interne comme ça par exemple :
VB:
   For C = 0 To UBound(Ts, 2)
      Ts(Ls, C) = Te(Le, Choose(C + 1, 2, 4, 6, 8, …))
      Next C, Ls
Il faut autant de numéros derrière le C + 1, que de nombre de colonne dans Ts (sa 2ième dimension + 1)
Ne pas oublier de rectifier aussi en conséquence le ColumnCount de la ListBox.

À tout hasard essayez encore en précisant le dossier, mais je ne vois pas pourquoi ça marcherait mieux :
VB:
ThisWorkbook.FollowHyperlink "File:" & CurDir & "\" & Z
Si marche toujours pas essayez sans préciser "File:":
VB:
ThisWorkbook.FollowHyperlink CurDir & "\" & Z

Je commence à entrevoir pourquoi c'est une méthode de l'objet Workbook et non Worksheet ou Application, ce qui m'a toujours étonné. C'est peut être bien parce qu'il fabrique à l'intention du système une référence absolue en combinant avec sa propriété Path une référence relative précisée. Comme les liens hypertextes en somme. Quelle ânerie. Jamais ça continue de marcher après avoir déplacé le classeur vers un autre dossier. À moins de déplacer aussi les fichiers vers un dossier ayant, avec le nouveau du classeur, le même lien de parenté…
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Bonjour.

Effectivement :
La fonction Choose renvoie la valeur Null si index est inférieur à 1 ou supérieur au nombre de choix de la liste.
(Index étant évidemment le 1er paramètre, ici C + 1)

Vous pourriez aussi, je pense, l'écrire :
VB:
For C = 0 To UBound(Ts, 2)
   Ts(Ls, C) = Te(Le, Array(2, 4, 6, 8, …)(C))
   Next C, Ls
Vous auriez "index en dehors des limites" si là non plus vous ne spécifiiez pas suffisamment de colonnes.

Ou bien si, ce qui reviendrait au même dans les deux cas, au Redim Ts(…, la deuxième dimension était encore spécifiée trop grande par rapport à ce que vous voulez mettre dedans.
 
Dernière édition:

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Donc mon code etant comme le suivant :

Private Sub CL_Résultat(Lignes() As Long)
Dim Te(), Le&, Ts(), Ls&, C&
TLgn = Lignes
Te = CL.PlgTablo.Resize(, 20).Value
ReDim Ts(0 To UBound(TLgn) - 1, 0 To 19)
For Ls = 0 To UBound(Ts, 1)
Le = Lignes(Ls + 1)
For C = 0 To UBound(Ts, 2)
Ts(Ls, C) = Te(Le, Choose(C + 1, 2, 3, 4, 15, 17, 18, 19))
Next C, Ls
Me.LbxSélect.List = Ts
CommandButton1.Enabled = False
End Sub

il faut que je rajoute C+1 au lieu de C dans la ligne ou l'erreur est indiqué ? enfin c'est ce que j'ai compris mais cela me donne le meme resultat...

Cordialement
 

Discussions similaires

Réponses
33
Affichages
3 K