VBA excel, problème de path pour ouvrir un fichier

Résolu
Nabouk Messages postés 3 Date d'inscription mercredi 18 octobre 2006 Statut Membre Dernière intervention 30 juillet 2007 - 27 juil. 2007 à 11:23
Nabouk Messages postés 3 Date d'inscription mercredi 18 octobre 2006 Statut Membre Dernière intervention 30 juillet 2007 - 30 juil. 2007 à 12:41
Bonjour,
Je ne connais que très peu VB et je doit modifier une macro pour excel qui permet d'ouvrir un fichier, à partir d'un path que l'on recupere auparavant.
Cette macro a été a prioris dev sous nt4, et lors du passage a xp, elle n'a pas particulierement aprecier.

Je pense que le problème vient du path qui est mal concatener ou mal recuperer, et je ne sais pas coment faire pour régler ce problème, étant donné mon ignorence totale des fonctions de VB, malgré l'aide de vb et mes nombreuses recherches.
Je précise que cette macro recupere le nom du fichier dans une colone, puis son extension dans la colone adjacente droite.Quand j'essaye d'executer cette macro il ouvre bien le logiciel specifié, mais après il ne trouve pas le chemin du fichier : ca me donne cette erreure la  : "le chemin d'accès ou le nom du fichier c:\documents n'est pas valide, verifié votre saisie" apres avoir cliqué sur ok " le chemin d'accès ou le nom du fichier c:\documents and settings\nom_d'utilisateur\mes documents\and n'est pas valide, verifié votre saisie" (je n'ai pas de documents qui s'appel "and", et ce n'est meme pas dans mes documents que le fichier se trouve, le fichier se trouve le bureau) puis (encore un autre) "le chemin d'accès ou le nom du fichier c:\documents and settings\nom_d'utilisateur\mes documents\settings\nom_d'utilisateur\bureau\copie\ n'est pas valide, verifié votre saisie"

Voivi un morceau du code, ou je pense que le problème ce cache :

      ' VOIR DOUMENTS DE REFERENCE
                              
Const visuword = "C:\Program Files\Microsoft Office\Office11\winword.exe " 'appli pour voir photos
Const visuexcel = "C:\Program Files\Microsoft Office\Office11\excel.exe " 'appli pour voir photos
Const visupowerpnt = "C:\Program Files\Microsoft Office\Office11\powerpnt.exe " 'appli pour voir photos
Const visupdf6 = "C:\Program Files\Adobe\Acrobat 6.0\ReaderAcroRd32.exe"
Const visupdf5 = "C:\Program Files\Adobe\Acrobat 5.0\Acrobat\acrobat.exe " 'appli pour voir photos



Sub voirdocref()
    ThisWorkbook.Sheets(1).Range("A1").Formula = ThisWorkbook.Path
    chemin = ThisWorkbook.Sheets(1).Range("A1").Text
    ligneactuelle = ""
    ligneactuelle = ActiveCell.Row
    numérocolonne = ActiveCell.Column
   
    nomfeuille = ActiveSheet.Name
 
If nomfeuille = "A0" Then
        docref = chemin & "\Liste_sujets\Thème_A\A0_propriété_intellectuelle" & ActiveCell.Text ' assigne à docref le contenu de la cellule active

If numérocolonne <> 10 Or ligneactuelle < 9 Then
        MsgBox " Attention, la cellule sélectionnée ne correspond pas à un nom de fichier" ', vbInformation + vbOKOnly, "Fichier"
    ElseIf Cells(ligneactuelle, 13).Text = ".doc" Then
        Shell visuword & docref & ".doc", vbNormalFocus
    ElseIf Cells(ligneactuelle, 13).Text = ".xls" Then
        Shell visuexcel & docref & ".xls", vbNormalFocus
    ElseIf Cells(ligneactuelle, 13).Text = ".ppt" Then
        Shell visupowerpnt & docref & ".ppt", vbNormalFocus
    ElseIf Cells(ligneactuelle, 13).Text = ".pdf" Then
        Shell visupdf5 & docref & ".pdf", vbNormalFocus
    Else:
        MsgBox "Attention ! , le fichier n'existe pas ou il manque l'extension du fichier dans la cellule adjacente à droite" ', vbInformation + vbOKOnly, "Fichier"
    End If
   
    On Error GoTo 0
    End Sub
    End If






Merci de votre atention, j'éspère que quelqu'un poura me venir en aide.

4 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
28 juil. 2007 à 00:31
Effectivement, le monde n'est pas parfait et les programmes non plus ... Quelquefois il faut savoir faire avec...

Comme chaque système des PC provient d'une "image" identique, les applications (Word, Excel,...) devraient donc toutes être au même endroit d'un PC à l'autre, donc pas de problème à mettre les chemins en dur pour cette partie.

Le problème que je vois est le Thisworkbook.Path
    ThisWorkbook.Sheets(1).Range("A1").Formula = ThisWorkbook.Path
    chemin = ThisWorkbook.Sheets(1).Range("A1").Text
Donc, chemin = le répertoire où est l'application (Thisworkbook.Path)

If nomfeuille = "A0" Then
        docref =
chemin & "\Liste_sujets\Thème_A\A0_propriété_intellectuelle" &
ActiveCell.Text ' assigne à docref le contenu de la cellule active
Donc, là où est l'application, il devra y avoir les sous-répertoires qui suivent "chemin"

Si tous ces répertoires existent, il faudra aussi vérifier les " \ " au cas où ils se doubleraient ou encore seraient absents
Un MsgBox affichant docref devrait suffire à valider ce chemin

MPi
3
Rejoignez-nous