VBA excel, problème de path pour ouvrir un fichier [Résolu]

Nabouk 3 Messages postés mercredi 18 octobre 2006Date d'inscription 30 juillet 2007 Dernière intervention - 27 juil. 2007 à 11:23 - Dernière réponse : Nabouk 3 Messages postés mercredi 18 octobre 2006Date d'inscription 30 juillet 2007 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 28 juil. 2007 à 00:31
3
Merci
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

Merci cs_MPi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_MPi
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 27 juil. 2007 à 11:46
0
Merci
Tu auras de la difficulté à gérer ce genre de programme...
D'une part, le chemin des applications peut être différent d'un PC à l'autre. Tes chemins sont tous dans C:\Program Files
Chez, c'est dans D:\  donc ça ne pourrait pas fonctionner

D'autre part, le chemin des photos (si j'ai bien compris) devraient se trouver dans le même répertoire que ton Application et dans un sous-répertoire
\Liste_sujets\Thème_A\A0_propriété_intellectuelle\

Donc, si ton appli est sur le bureau, tu devras créer un répertoire sur le bureau ayant le même chemin que celui du code. Ou bien tu changes tous les chemins pour ceux dont tu as besoin.

Le mieux serait d'utiliser un CommonDialog ou encore la méthode Application.GetOpenFilename pour déterminer les chemins des applis (Excel, Word, ...) et aussi pour déterminer le chemin des images. Une fois que tu a déterminé ces chemins, tu les sauvegardes dans un fichier ou dans la base de registre pour les prochaines sessions.

Évite toujours de mettre des chemins en dur si tu veux que ce soit portable sur un autre PC.

en espérant aider un peu...

MPi
Commenter la réponse de cs_MPi
Nabouk 3 Messages postés mercredi 18 octobre 2006Date d'inscription 30 juillet 2007 Dernière intervention - 27 juil. 2007 à 12:04
0
Merci
Hum oui je vois, mais je pense pas que ca puisse resoudre mon problème, l'aplication étant sur un serveur, dans cet exemple d'erreur, c'est par ce que je l'avait copier sur mon pc pour pouvoir le trifouiller sans deranger le travail de l'entreprise, les pc etant tous formater avec le meme master, ils tous la meme arborescence ect...

l'erreur ce produit également quand on le lance du serveur. Etant donné qu'avant ca fonctionait sour nt4, je me demande s'il n'y  a pas une fonction qui difère, ou qui est altérée sous xp, ou entre les diférentes versions d'office.

Comme ce n'est pas moi qui ai dev cette macro au debut, je comprends bien l'histoire des chemins en dur ;) mais le monde n'est pas parfait, je vais deja essayer ca.
Merci bien
Commenter la réponse de Nabouk
Nabouk 3 Messages postés mercredi 18 octobre 2006Date d'inscription 30 juillet 2007 Dernière intervention - 30 juil. 2007 à 12:41
0
Merci
Merci, mon problème est reglé, tu m'a bien aidée!
C'etait en fait un problème lié au fait que NT ne pouvais pas avoir des noms de plus de 8 caractères et sans espace, du coup ca posait des problèmes avec les "documents and" les "fichier de machin".

Voili Voilou bonne journée
Commenter la réponse de Nabouk

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.