Nabouk
Messages postés3Date d'inscriptionmercredi 18 octobre 2006StatutMembreDernière intervention30 juillet 2007
-
27 juil. 2007 à 11:23
Nabouk
Messages postés3Date d'inscriptionmercredi 18 octobre 2006StatutMembreDernière intervention30 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 :
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.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 27 juil. 2007 à 11:46
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.
Nabouk
Messages postés3Date d'inscriptionmercredi 18 octobre 2006StatutMembreDernière intervention30 juillet 2007 27 juil. 2007 à 12:04
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
Nabouk
Messages postés3Date d'inscriptionmercredi 18 octobre 2006StatutMembreDernière intervention30 juillet 2007 30 juil. 2007 à 12:41
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".