Lien Hypertexte dans une cellule variable suivant un lien variable
Bonjour à tous,
Je suis débutant en VBA et j'ai un peu de mal avec la partie hypertexte. Je vous explique mon soucis.
Je suis en train de créer pour mon taff un fichier de gestion de devis. Un userform me permet de créer un nouveau devis avec un système de recherche du dernier devis créé et une incrémentation de 1 à chaque fois (DT51 -> DT52...). On y renseigne divers informations: client, année, pays...
Ensuite la macro créé dans Windows un dossier pour y ranger les données du devis en faisant appel à un chemin défini dans une cellule plus des variables renseignées:
cheminDossier = Sheets("Employé(e)s").Cells(15, 4)
compilation = annee & "\" & Pays & "\" & "Devis technique " & numDevis
cheminDevis = cheminDossier & compilationUn fois toutes ces étapes terminées, la macro écrit une nouvelle ligne dans mon onglet "Devis" avec un récap des informations qui ont été rentrées dans le userform.
Voici une partie du code correspondant à cette opération:
'Ajout des informations
Sheets("Liste DT").Cells(ligneNouveauDevis, 2) = numDevis
Sheets("Liste DT").Cells(ligneNouveauDevis, 3) = Catégorie.Value
Sheets("Liste DT").Cells(ligneNouveauDevis, 5) = dateRecepDevis
Sheets("Liste DT").Cells(ligneNouveauDevis, 6) = dateRecepData
Sheets("Liste DT").Cells(ligneNouveauDevis, 7) = dateRepCible
Sheets("Liste DT").Cells(ligneNouveauDevis, 10) = Pays
Sheets("Liste DT").Cells(ligneNouveauDevis, 13) = Client"ligneNouveauDevis" est une variable qui sélectionne la ligne vide juste en dessous de la dernière ligne renseignée.
J'aimerai créer dans la colonne 14 de cette nouvelle ligne un lien hypertexte vers le dossier du devis dans laquelle il serait écrit "Voir dossier" & numDevis mais je n'y arrive pas. J'ai essayé sans succès:
Sheets("Liste DT").Cells(ligneNouveauDevis, 13) = cheminDevis
et
ActiveSheet.Hyperlinks.Add Anchor:=Sheets("Liste DT").Cells(ligneNouveauDevis, 13), Address:=cheminDevis, TextToDisplay:="Voir dossier" & Quelqu'un aurait-il une idée de la façon de coder cette ligne ?
Merci :)
bonjour,
Sheets("Liste DT").Cells(ligneNouveauDevis, 13) = cheminDevis
et
ActiveSheet.Hyperlinks.Add Anchor:=Sheets("Liste DT").Cells(ligneNouveauDevis, 13), Address:=cheminDevis, TextToDisplay:="Voir dossier" & mis à part un 13 qui doit être un 14 et une instruction incomplète (&), je ne vois rien d'anormal dans ce code. As-tu un message d'erreur ?
Bonjour h2so4,
Merci pour ta réponse.
Pour la première ligne, le 14 estn juste un oublie lors du Copier/Coller, mais cette formule donne rien, c'est à dire que ma case reste vide. Puis le soucis je pense c'est que la case aura le lien complet ce qui n'est pas hyper propre... Je m'oriente donc plutôt vers la seconde.
Pour la seconde ligne voici ce que j'avais fait:
ActiveSheet.Hyperlinks.Add Anchor:=Sheets("Liste DT").Cells(ligneNouveauDevis, 13), Address:=cheminDevis, TextToDisplay:="Voir dossier" & numDevisCette formule fonctionne affiche bien le "Voir dossier 51" mais le lien hypertexte ne suis pas me cheminDevis il me donne ce lien: file:///C:User\Heelflip\Liste des devis Spéciaux.xlsm. Ce qui est le lien vers mon fichier ainsi que son nom.
Ce qui est bizarre c'est que si je mets:
ActiveSheet.Hyperlinks.Add Anchor:=Sheets("Liste DT").Cells(ligneNouveauDevis, 14), Address:=cheminDossier & compilation, TextToDisplay:="Voir dossier " & numDevisCela ne fonctionne qu'en partie, c'est à dire que j'arrive sur cheminDossier mais la partie compilation n'a pas fonctionnée
cheminDossier = Sheets("Employé(e)s").Cells(15, 4)
compilation = annee & "\" & Pays & "\" & "Devis technique " & numDevis
cheminDevis = cheminDossier & compilationJ'avoue ne pas comprendre la subtilité.
bonjour,
peux-tu mettre un fichier exemple avec le contenu de Sheets("Employé(e)s").Cells(15, 4) et les macros ?
Voici un exemple, il faudra juste changer le chemin des devis, ligne 15 de l'onglet employé pour qu'il corresponde avec ton bureau afin de pouvoir créer les dossiers.
Désolé d'avance pour ma façon de programmer, je n'ai pas encore assez l'habitude pour faire cela dans les règles de l'art
Quand tu lance la macro via le bouton de l'onglet 1 il faut remplir obligatoirement toutes les case excepté la 3ème qui va chercher l'information de la dernière (Catégorie)
bonjour,
pas sûr d'avoir compris ce que tu veux faire et à quel moment. dans ton code les variables chemindevis et chemindossier ne sont pas initialisées au moment de l'exécution de l'instruction hyperlinks.add
en ajoutant ceci, cela fonctionne (mais est-ce que cela fonctionne comme tu le souhaites ?)
Sheets("Liste DT").Cells(ligneNouveauDevis, 13) = Client
'ajout
cheminDossier = Sheets("Employé(e)s").Cells(15, 4)
compilation = annee & "\" & Pays & "\" & "Devis technique " & numDevis
cheminDevis = cheminDossier & compilation
'fin ajout
ActiveSheet.Hyperlinks.Add Anchor:=Sheets("Liste DT").Cells(ligneNouveauDevis, 14), Address:=cheminDevis, TextToDisplay:="Voir dossier " & numDevisde plus, tu devrais peut-être ajouter un \ à la fin de chemindossier, si l'année est un sous-répertoire de chemindossier
Tu as tout à fait compris ce que je souhaitais
Mince je ne pensais pas devoir réinitialiser les variables, cela est du au fait que ma userform est fermée à cette étape ?
Sinon pour chemin dossier, le lien à bien un \ à la fin étant donné que le reste est effectivement composé de sous-dossiers.
Cela fonctionne parfaitement merci pour l'aide en tout cas.