XL 2013 Problème avec une macro

Aloha

XLDnaute Accro
Bonsoir,

J‘ai un problème bien mystérieux.

J’ai une macro chargée d’ouvrir tous les fichiers “*.xls” se trouvant dans le dossier appelé TobeCopied qui se trouve sur le même chemin que le fichier avec la macro (Base).

Ce matin la macro a renvoyé un message d’erreur prétendant qu’il n’y avait pas un tel fichier dans le dossier, alors qu’il y en avait deux.

En analysant les noms des fichiers j’ai constaté que l’extension “.xls” n’était pas affichée. Je l‘ai ajoutée au nom de l‘un des deux fichiers, mais pas à l‘autre, et j‘ai relancé la macro qui a alors ouvert les deux fichiers.

J‘ai essayé encore sans l‘extension: aucun fichier trouvé, idem lorsque j‘ai rajouté l‘extension.

J‘ai redémarré Excel, puis l‘ordinateur, sans changement.

J‘ai alors ouvert le fichier contenant la macro (il se trouve sur un serveur et est nommé „Base“) sur un autre ordinateur: les fichiers sans l‘extension ont été ouverts sans problème.

Lors des essais échoués, j’ai exécuté la macro pas à pas avec F8, le chemin était le bon, mais Fname (les noms des fichiers à ouvrir) a affiché vide.

J‘en conclue que cela ne doit pas tenir ni au fichier avec la macro ni même à Excel.

Où pourrait résider le problème?

La partie concernée de la macro:
VB:
Set wbZiel = Workbooks("Base.xls")
Pfad = ActiveWorkbook.Path
SuchPfad = Pfad & "\TobeCopied"
ChDir SuchPfad

'---upfront check----
msg = "You are about to copy all data " & Chr(13) & _
        "from the folder" & Chr(13) & "<TobeCopied>" & _
        Chr(13) & "to the database list."
If MsgBox(msg, vbOKCancel) = vbCancel Then Exit Sub

'---check if there are files to be copied----
FNames = Dir("*.xls")
If Len(FNames) = 0 Then
    MsgBox "No files in the Directory"
    ChDir Pfad
    Exit Sub
End If

Bonne soirée
Aloha
 

Dranreb

XLDnaute Barbatruc
Peut être parce que sur cet ordinateur, selon les habitudes de l'utilisateur qui change de tâches, le lecteur courant n'est souvent plus celui du chemin du classeur auquel il revient ? …
Faites un MsgBox CurDir pour voir. Un ChDir d'un chemin sur un autre lecteur ne le change pas.
 

Aloha

XLDnaute Accro
Peut être parce que sur cet ordinateur, selon les habitudes de l'utilisateur qui change de tâches, le lecteur courant n'est souvent plus celui du chemin du classeur auquel il revient ?
Ok, je comprends, seulement, si j'exécute le code pas à pas et que, en déplaçant la souris sur "SuchPfad" [ce système fonctionne sans problèmes majeurs depuis 2005 et je crois que c'était un Suisse germanophone qui avait écrit cette macro, d'où les mots en allemand], et que le bon chemin est affiché -ce qui est le cas- cela ne saurait être la cause.

Qui plus est, j'étais sur place lorsque le problème a surgi, et on n'avait fait rien d'autre que de travailler sur ce fichier en Excel.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je n'ai pas dit que ce SuchPfad n'était pas bon, j'ai dit que si le dossier courant n'est pas sur le même lecteur que ce chemin, un ChDir ne suffit pas à le changer.
Qu'affiche un MsgBox CurDir après le ChDir SuchPfad ?
 

Aloha

XLDnaute Accro
Bonjour,
Il faudrait essayer cela sur l'ordinateur "incriminé" auquel je n'ai pas accès le WE. Je vais demander lundi à la personne qui travaille avec ce système de l'essayer.

Je ne comprends pas trop comment le dossier courant pourrait ne pas être le bon si on n'a fait rien d'autre sur l'ordinateur.
 

Dranreb

XLDnaute Barbatruc
Oui mais si on a fait autre chose dessus qui à changé le dossier courant vers un autre lecteur, puis qu'on est revenu sur le classeur avant d'exécuter la macro, ça peut s'expliquer.
Mais si ça se trouve c'est beaucoup plus bête que ça, genre vous auriez totalement oublié que sur cet ordi le classeur est ouvert depuis une clé USB, alors qu'il devrait tout de même travailler avec un dossier de son disque dur et non de la dite clé …
 

Aloha

XLDnaute Accro
On n'a fait rien d'autre que d'ouvrir le fichier depuis le serveur, j'y ai ajouté une feuille ainsi qu'un bouton et après on a testé si tout fonctionnait. Les autres tâches que ce fichier exécute ont fonctionné, mais pas celle-là.
Et j'étais moi-même tout le temps sur l'ordinateur.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Depuis le serveur. Ça vous ne l'avez pas dit, et ça change tout, À moins qu'une lettre de lecteur virtuel lui soit affectée. Un ChDrive et ChDir me marche pas avec un chemin commençant par "//".
Vous pouvez remplacer les deux instructions par un appel à l'API SetCurrentDirectory.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Oui mais je n'avais pas accroché parce que vous aviez ajouté que c'était le classeur contenant la macro alors j'ai imaginé que c'était un classeur différent du classeur actif ouvert en dernier.
En tout cas on en revient toujours au même point: Si l'argument d'un ChDir commence par une lettre suivi de ':' il change seulement le dossier courant du lecteur identifié par cette lettre sans changer le lecteur courant, donc sans changer le dossier courant s'il n'est pas sur ce même lecteur. De plus tout ça ne marche plus avec des chemins de réseau, pour cela il faut le SetCurrentDirectory.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Vous n'arrivez décidément pas à comprendre que ce n'est pas SuchPfad qui ne contient pas le bon chemin mais le ChDir SuchPfad qui ne le définit pas en tant que CurDir parce que son lecteur n'est pas actif à ce moment là
Conseil: corrigez comme suit le second MsgBox de votre code :
VB:
MsgBox "No files in this directory :" _
    & vbLf & CurDir, VbExclamation
 
Dernière édition:

Aloha

XLDnaute Accro
Je vous crois, faute de le savoir mieux!
Votre proposition précise donc le message de la MsgBox en affichant le chemin du dossier considéré comme vide.

Je viens de parler à la personne qui gère le système. En premier lieu je lui ai demandé d'essayer si par hasard la macro arrivait à nouveau "d'elle-même" à fonctionner, ce qui est le cas!

Il a ajouté MsgBox CurDir qui n'affiche pas le chemin, que ça marche ou pas, ce qui était le cas au deuxième essai d'importer!
Voici le MsgBox affiché:.
Lorsque j'exécute la même macro à la maison sur mon ordi j'ai un MsgBox avec le chemin!
 

Pièces jointes

  • IMG_3073.jpg
    IMG_3073.jpg
    100.5 KB · Affichages: 19
Dernière édition:

Discussions similaires

Réponses
1
Affichages
729

Statistiques des forums

Discussions
312 107
Messages
2 085 359
Membres
102 874
dernier inscrit
Petro2611