Userform ... Boutton validation

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Bonjour.
Mais quand vous exécutez déjà la macro, il s'affiche un Fiche technique.xls ? Ou Fiche technique.pdf ? Ou autre ? Sinon c'est qu'il n'en existe aucun de ce nom dans le dossier où se trouve le classeur.
Si les fichiers peuvent se trouver sur des tas de dossiers différents, le mieux serait de remplacer tous les liens hypertexte de la feuille de départ par la référence complète du fichier.

Cette procédure devrait permettre de faire le plus gros automatiquement :
VB:
Sub SupprimerLiensHT()
Dim LHT As Hyperlink
For Each LHT In ActiveSheet.Hyperlinks
   LHT.Range.Cells(1, 1).Value = LHT.Address
   LHT.Delete
   Next LHT
End Sub
En les éliminant on élimine du coup leurs gros inconvénient qui est de dépendre du dossier du classeur. Combien j'en ai vu se plaindre que leurs liens hypertextes ne fonctionnaient plus après l'avoir changé de place !
 
Dernière édition:

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Bonjour,


Je n'ai aps encore essayer mais jsute pour vous dire que j'ai bien range les fichier pdf dans tes dossier et sous dossier qui ne bougeront plus donc le lien ne changera pas j'ia deja essayer en enregistrant le travail sur une cle usb et de l'ouvrir sur un nouveau pc et le lien hypertexte marche toujours.

Concernant le nom du fichier effectivement je l'ai change car le chemienment serait beaucoup trop long ... en fait sur mon tableau de base de donne je mets un lien hypertexte sur la colonne A avec le fichier ou je change le nom je mets "Fiche technique" puis quand je retourne dans mon usf je fais valider le resultat il me mets le resultat et sur la colonne A il met bien "Fiche technique" mais sans le lien
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Vous n'êtes pas obligé de mettre la référence du fichier en colonne A dans la base de donnée.
Il pourrait y avoir une formule qui renvoie "Fiche technique" seulement si une référence de fichier existe tout à la fin, en colonne X ou Y. Personnellement je préfèrerais qu'il y ait au moins le nom du fichier, mais bon…
Si les fichiers ont une racine commune, elle pourrait être figée dans les macros.
Il serait possible d'installer une nouvelle référence de fichier ou d'en modifier une existante au moyen de la méthode GetOpenFilename. Elle permettrait de le chercher dans l'arborescence des dossiers. Le must serait bien sûr que les noms des sous dossiers et du fichier lui même dépendent de renseignements portés par ailleurs dans la ligne de sorte qu'on pourrait le reconstituer en les examinant.
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Je sais pas pourquoi mais les codes que vous m'avez passé ne marche pas ...

Aucun lien hypertexte ne se met...
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

C'est normal, je ne veux pas mettre de lien hypertexte, je veux les enlever et les remplacer par autre chose.
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

CA me derange pas que ca arrive par mail mais cela ne marceh pas ...

Puis je quand meme avoir le code pour le lien hypertexte pour avoir au moins cette solution qui marche si vous plait ?

MErci

Cordialement,
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Bonjour.

Qu'est ce que vous parlez encore de mail ??? Il n'essaye sûrement plus d'envoyer un mail depûis que vous avez remplacé "MailTo:" par "File:" dans la macro et au lieu de Target un truc du genre Target.EntireRow.Columns("ZZ"), ZZ étant l"entête de colonne portant les références des fichiers à ouvrir.
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Bonjour,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 1 Then Exit Sub ' À adapter
On Error Resume Next
ThisWorkbook.FollowHyperlink "File:" & Target.EntireRow.Columns("A")
End Sub

C'set bien ca qu'il faut rentrer ? car rien ne s'effectue je n'ai aucun lien hypertexte qui se produit afin d'ouvrir mon PDF
 

Dranreb

XLDnaute Barbatruc
Re : Userform ... Boutton validation

Ben non, ça, ca ne sert à rien, réfléchissez un tout tout petit peu: on teste si la cellule cible est dans la colonne 1, donc A.
L'intersection de la ligne entière de la cible et de la colonne A est donc toujours la colonne A. C'est la cible, c'est pareil que Target !
Je vous dis de mettre les références des fichiers dans une autre colonne, parce que vous avez dit que vous préféreriez avoir un texte court dans la colonne A. Remarquez, juste le nom du fichier, même sans l'extension, serait peut être assez court, non ? Encore faudrait-il trouver un moyen de savoir dans quel dossier il se trouve. S'ils ont une racine commune on pourrait à la rigueur le chercher dans tous ses dossiers et sous dossiers.
 

Cap_ou_pas_cap

XLDnaute Junior
Re : Userform ... Boutton validation

Quand je dis un texte court c'est que par exemple sur ma base de donnée sur la colonne a je veux mettre un ficher PdF et au lieu d'afficher tout le nom du pacours du dossier je mets jsute "Fiche technique" dans texte a afficher et je voudrais juste que quand je recehrche un resultat le lien suive tout simplement...

Je vous avoue etre perdu la dans les differents code ...
 

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:

Discussions similaires


Haut Bas