Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Filename ne renvoie pas le chemin. (Résolu)

T77XDD

XLDnaute Occasionnel
Bonsoir,
Je cherche à créer un hyperlien à la suite de plusieurs opérations
soit: Création document, impression et enregistrement de ce document.
J'y arrive comme ceci
Code:
Public Sub Fax()

Selection.Copy
   Sheets("FAX").Select
   Range("I2").Select
   ActiveSheet.Paste
   Range("I3").Select

With ActiveSheet
    .PageSetup.BlackAndWhite = True
    .PrintOut
End With

Dim DPnum$, Ents$, Obj$, NomFichierPDF, Filename As String
ActiveCell.CurrentRegion.Select

DPnum = Sheets("FAX").Range("I1")
Ents = Sheets("FAX").Range("F14")
Obj = Sheets("FAX").Range("C25")

NomFichierPDF = "Fax" & " " & DPnum & " " & Obj & " " & Ents
Sheets("FAX").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\DP\Fax\" & Ents & "\" & NomFichierPDF & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

End Sub
et pour créer l'hyperlien j'ai trouvé sur le forum ceci
Code:
Public Sub Hyperliens()

Dim Bat As String
Dim App As String
Dim Loc As String
Dim Ents As String
Dim DPnum As String
Dim Obj As String
Dim NomFichierPDF As String
Dim Filename As String
Dim i As Integer

With Sheets("Récap DP")
For i = 2 To .Range("A65535").End(xlUp).Row
    Bat = .Range("H" & i)
    App = .Range("G" & i)
    Loc = .Range("I" & i)
    Ents = .Range("O" & i)
    DPnum = .Range("X" & i)
    Obj = .Range("R" & i)
    

If Left(.Range("X" & i), 1) = "F" Then
    'enr Fax
    NomFichierPDF = "Fax" & " " & DPnum & " " & Obj & " " & Ents
    Filename = "C:\DP\Fax\" & Ents & "\" & NomFichierPDF & ".pdf"
    
Else
    'enr DP Parties communes
    If App = "0" Then
    NomFichierPDF = "DP" & " " & DPnum & " " & Loc & " " & Ents
    Filename = "C:\DP\PartiesCommunes\" & Ents & "\" & NomFichierPDF & ".pdf"
    
Else
    'enr DP Locataires
    NomFichierPDF = "DP" & " " & DPnum & " " & Loc & " " & Ents
    Filename = "C:\DP\" & Bat & "\" & App & "\" & NomFichierPDF & ".pdf"
    End If
End If
    
ActiveCell.Hyperlinks.Add _
    Anchor:=Range("Z" & i), _
    Address:=Filename, _
    TextToDisplay:=NomFichierPDF
   Next i
End With

End Sub
J'ai donc rajouté au 1er code
Code:
ActiveCell.Hyperlinks.Add _
    Anchor:=Range("Z" & [Z65000].End(xlUp).Row + 1), _
    Address:=Filename, _
    TextToDisplay:=NomFichierPDF
ça fonctionne sauf que, dans mon classeur l'info bulle de cet hyperlien m'affiche "C\DP\le titre du classeur" et que l'hyperlien n'est pas créé bien que le fichier existe et au bon endroit.
J'ai bien avancé grace à vous mais là...
 
Dernière édition:

T77XDD

XLDnaute Occasionnel
Re : Filename ne renvoie pas le chemin.

Désolé mais j'ai essayé de m'exprimer au mieux,
je veux juste dire que au lieu de "C\DP\Bt 45\190\NomfichierPDF.pdf" j'ai C\DP\BDD-ESSAI" si la base de données sur laquelle je travaille est BDD-ESSAI.
 
C

Compte Supprimé 979

Guest
Re : Filename ne renvoie pas le chemin.

Bonjour T77XDD

Pour moi il y a une erreur au niveau de l'ajout du lien

Le code ne doit pas être
Code:
ActiveCell.Hyperlinks.Add Anchor:=Range("Z" & i), Address:=Filename, TextToDisplay:=NomFichierPDF

mais
Code:
ActiveSheet.Hyperlinks.Add Anchor:=Range("Z" & i), Address:=Filename, TextToDisplay:=NomFichierPDF

Remplacer ActiveCell par ActiveSheet

A+
 

T77XDD

XLDnaute Occasionnel
Re : Filename ne renvoie pas le chemin.

Merci pour ta réponse Bruno,
je vais essayé de creuser mais n'étant pas au bureau je ne vais pas pouvoir le faire tout de suite (moi Linuxien).
Pour cette partie de code elle fonctionne et me renvoie un chemin complet et juste.

Par contre avec ce code qui ajoute l'hyperlien au moment de la création de la ligne j'obtiens "C\DP\BDD-ESSAI" dans l'info bulle au lieu de "C\DP\Bt 46\123\NomFichierPDF"
Code:
Public Sub Fax()
Selection.Copy
   Sheets("FAX").Select
   Range("I2").Select
   ActiveSheet.Paste
   Range("I3").Select
With ActiveSheet
    .PageSetup.BlackAndWhite = True
    .PrintOut
End With
Dim DPnum$, Ents$, Obj$, NomFichierPDF, Filename As String
ActiveCell.CurrentRegion.Select
DPnum = Sheets("FAX").Range("I1")
Ents = Sheets("FAX").Range("F14")
Obj = Sheets("FAX").Range("C25")
NomFichierPDF = "Fax" & " " & DPnum & " " & Obj & " " & Ents
Sheets("FAX").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\DP\Fax\" & Ents & "\" & NomFichierPDF & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
ActiveCell.Hyperlinks.Add _
    Anchor:=Range("Z" & [Z65000].End(xlUp).Row + 1), _
    Address:=Filename, _
    TextToDisplay:=NomFichierPDF
End Sub
Merci bonne journée, je rajoute un fichier exemple DQP.
 

T77XDD

XLDnaute Occasionnel
Re : Filename ne renvoie pas le chemin.

Bonjour,
Voilà le casseur comme promis!
Pour son fonctionnement:
  • Créer les dossiers "C:\DP\Fax\Apple", "C:\DP\Fax\Debian", "C:\DP\Fax\Microsoft" (Désolé sait pas créer les dossiers s'ils n'existent pas)
  • Enregistrer "Classeur2" dans "C:\DP"
  • Aller sur "Récap DP"
  • Choisir la 1ère cellule (X2) de la colonne "X"
  • Cliquez sur "Imp Enr"
  • Pareil pour 2eme valeur (X3) et 3eme valeur (X4).
La colonne "Z" est créer avec le bouton "Hyperliens" -> l'infobulle est OK & il ouvre bien le document
La colonne "AB" est créer avec le bouton "Imp Enr" -> l'infobulle indique c:\DP\Classeur2.xlsm", le doc est bien crée au bon endroit mais ne l'ouvre pas bien sûr.
Merci de me sortir de là de me faire comprendre pourquoi.
 

Pièces jointes

  • Classeur2.xlsm
    62.4 KB · Affichages: 52
  • Classeur2.xlsm
    62.4 KB · Affichages: 61
  • Classeur2.xlsm
    62.4 KB · Affichages: 50
C

Compte Supprimé 979

Guest
Re : Filename ne renvoie pas le chemin.

Salut T77XDD

Ton problème vient du fait que tu ne définis pas ta variable "Filename" qui figure dans ton lien hypertext !?
ActiveCell.Hyperlinks.Add _ Anchor:=Range("Z" & i), _
Address:=Filename, _
TextToDisplay:=NomFichierPDF


Voici le code
VB:
Sub Fax()
  Dim sPath As String


  Selection.Copy
  Sheets("FAX").Select
  Range("I2").Select
  ActiveSheet.Paste
  Range("I3").Select


  'With ActiveSheet
  '    .PageSetup.BlackAndWhite = True
  '    .PrintOut
  'End With


  Dim DPnum As String
  Dim Ents As String
  Dim Obj As String
  Dim NomFichierPDF As String
  Dim Filename As String
  With Sheets("Fax")


    DPnum = Sheets("FAX").Range("I1")
    Ents = Sheets("FAX").Range("F14")
    Obj = Sheets("FAX").Range("C24")


    sPath = ThisWorkbook.Path & "\Fax" & Ents & "\"
    NomFichierPDF = "Fax" & " " & DPnum & " " & Obj & " " & Ents & ".pdf"


    Sheets("FAX").ExportAsFixedFormat Type:=xlTypePDF, _
                                      Filename:=sPath & NomFichierPDF, _
                                      Quality:=xlQualityStandard, _
                                      IncludeDocProperties:=True, _
                                      IgnorePrintAreas:=False, _
                                      OpenAfterPublish:=False


    Sheets("Récap DP").Select
    ActiveCell.Hyperlinks.Add _
        Anchor:=Range("AB" & [AB65000].End(xlUp).Row + 1), _
        Address:=sPath & NomFichierPDF, _
        TextToDisplay:=NomFichierPDF
  End With
End Sub

A+
 
Dernière modification par un modérateur:

T77XDD

XLDnaute Occasionnel
Re : Filename ne renvoie pas le chemin.

Merci beaucoup,

  • ce que j'ai compris: ThisWorkbook.Path permet d'enregistrer le doc dans le dossier à partir duquel on ouvre le document.
  • Ce que je ne comprends pas: Pourquoi est ce que cela fonctionne dans "Hyperliens" comme avec tous les autres documents que je créé avec cette feuille "Récap DP" (soit 5 autres cas).

En tout cas cette méthode est plus Pro que celles rencontrées auparavant, je rajoute un terme à mon vocabulaire VBA.
Il me reste (pour le moment) la création automatique du dossier qui se fera donc dans "le dossier à partir duquel on ouvre le document."
Encore merci, Bonsoir.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
591
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…