Bonjour
J'ai crée une macro qui ouvre selon la valeur d'une cellule un fichier donné.
je vais donc solliciter l'ouverture d'une dizaine de fichiers.
La macro utilise le chemin de ces fichiers qui sont contenus dans un répertoir sur le bureau.
J'ai peur que mon code soit trop fragile, puisque à chaque fois que l'utilisateur change la position des fichiers lus le chemin change et donc la macro ne marche plus!!!
Je veux faire en sorte que lorse que la macro est déclenchée une recherche du fichier en paramêtre s'effectue et le chemin est récupéré ainsi ma macro se ra exécutée même si le path change.
Je suis extremement débutante en VBA et je vois vraiment pas une façon de faire je trouve que c'est trop compliqué!!!
Pourrez vous m'aider ?????
voila le code de ma macro
et dans le module
Merci de votre aide
J'ai crée une macro qui ouvre selon la valeur d'une cellule un fichier donné.
je vais donc solliciter l'ouverture d'une dizaine de fichiers.
La macro utilise le chemin de ces fichiers qui sont contenus dans un répertoir sur le bureau.
J'ai peur que mon code soit trop fragile, puisque à chaque fois que l'utilisateur change la position des fichiers lus le chemin change et donc la macro ne marche plus!!!
Je veux faire en sorte que lorse que la macro est déclenchée une recherche du fichier en paramêtre s'effectue et le chemin est récupéré ainsi ma macro se ra exécutée même si le path change.
Je suis extremement débutante en VBA et je vois vraiment pas une façon de faire je trouve que c'est trop compliqué!!!
Pourrez vous m'aider ?????
voila le code de ma macro
Code:
Sub OpenFile()
Dim strFileName As String
Dim X
Dim Y
If Cells(18, 6) = "F" Then
strFileName = " Le chemin du fichier"
X = OuvrirDocument(strFileName)
End If
End sub
et dans le module
Code:
Option Explicit
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Function OuvrirDocument(strChemin As String)
'Déclaration des variables
Dim strErreur As String
Select Case ShellExecute(0, "open", strChemin, vbNullString, vbNullString, 1)
Case 0: strErreur = "Le système manque de mémoire ou de ressources, l'exécutable est corrompu ou réallocations non valides."
Case 2: strErreur = "Fichier non trouvé."
Case 3: strErreur = "Chemin non trouvé."
Case 5: strErreur = "Une tentative a été faite pour se lier dynamiquement à une tache, ou il y a eu une erreur de partage ou de protection réseau."
Case 6: strErreur = "La librairie requiert des segments de données séparés pour chaque tâche."
Case 8: strErreur = "Il n 'y a pas assez de mémoire disponible pour lancer l'application."
Case 10: strErreur = "Version de Windows incorrecte."
Case 11: strErreur = "Le fichier exécutable n'est pas correct, il se peut que ce ne soit pas une application Windows, ou qu'il y ait une erreur dans le fichier .EXE;"
Case 12: strErreur = "L'application a été conçue pour un autre système d'exploitation."
Case 13: strErreur = "L'application a été conçue pour MS-DOS 4.0."
Case 14: strErreur = "Le type de fichier exécutable est inconnu."
Case 15: strErreur = "Tentative de chargement d'une application en mode réel."
Case 16: strErreur = "Tentative de charger une seconde instance d'un fichier exécutable contenant plusieurs segments de données qui ne sont pas marqués en lecture seule."
Case 19: strErreur = "Tentative de charger un fichier exécutable compressé. Le fichier doit être décompressé avant d'être chargé."
Case 20: strErreur = "Fichier de librairie liée dynamiquement (DLL) incorrect, une des DLLs requise pour exécuter cette application est corrompue."
Case 21: strErreur = "L 'application requiert les extensions Microsoft Windows 32-bit."
Case 31: strErreur = "Il n 'y a pas d'association pour le type de fichier spécifié, ou il n'y a pas d'association pour l'action choisie pour le type de fichier choisi."
End Select
If strErreur <> "" Then
MsgBox strErreur, vbCritical, "Erreur"
End If
End Function
Merci de votre aide