Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 problème CHDIR

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

phil75016

XLDnaute Occasionnel
Bonjour j'ai beaucoup de macros avec l'instruction ChDir et depuis que l'on m'a changé mon ordi toutes mes macros qui contiennent cette instruction plantent. Ce que je ne comprends pas c'est que des collègues qui sont sensés avoir le même PC n'ont pas de plantage. D'où cela peut il venir? Est-ce une option? une version d'excel? J'ai ceci : Microsoft® Excel® pour Microsoft 365 MSO (Version 2507 Build 16.0.19029.20136) 64 bits
Je vous remercie car je suis dans la panade si je dois réécrire toutes mes macros.
 
VB:
ChDir "X:\Dossiers reçus"
Chemin = "X:\Dossiers reçus\*dossier comptable 2020.xlsm"
Lig = 0
D = Dir(Chemin)
While D <> ""
    Lig = Lig + 1
    D = Dir
Wend
MONFICHIER = Dir("* - dossier comptable 2020.xlsm")
Stop
Quand tu exécutes la macro, quelle est la valeur de Lig au moment où la macro se met en pause ?
Et la variable MONFICHIER est-elle vide ou pas ?
 
Dernière édition:
ma fois je sais pas tu nous dit que ça marchait avant tel que tu nous l'a présenté (2 fois + ou - la même selon toi )
nous on te dit que c'est impossible
c'est comme si tu me jurais que les saucissons ça poussait sur les arbres
tu es conscient que non on est d'accords? 🙃

je vois inscrit depuis juillet 2006
ça veut dire que tu fait du vba passionnément ou par parcimonie depuis 19 ans
19 ans de pratique pour ne pas comprendre les bases des plus basiques

je voulais donc dire par plan B faire du tricot, la pêche, la peinture bref tout a fait autre chose
par ce que pour le vba après 19 ans c'est mort là ça rentrera plus si ça n'est pas déjà rentré

dis nous textuellement ce que tu veux faire dans cette macro
avec un langage français , on te la fera et on ira plus vite

en l’occurrence en l’état il n'y a rien a corriger ,ce code n'a ni queue ni tête

si tu savais interpréter chaque bloc de ton code ,tu te rendrais compte que ça n'a pas de sens
 
aben on s'en doute t inquiet que c'est du carapistolage au pistolet colle

alors je vais être plus clair sans humour cette fois ci
quand tu code ceci
MONFICHIER =Dir("* - dossier comptable 2020.xlsm")
c'est comme si tu cherchais
MONFICHIER =Dir("trucbidulechouette - dossier comptable 2020.xlsm")
ou encore
MONFICHIER =Dir("je devrais fairedutricot - dossier comptable 2020.xlsm")
sauf qu'il n'y a aucune racine!!!!!!
donc a supposer que ta variable MONFICHIER soit enfin déclarée en string et non workbook
monfichier renverra toujours empty ou vbnullstring car un dir sans racine ben y dit toi aller voir ailleurs si_ j'y suis
c'est bon tu a compris là

donc un exemple pour que les ampoule s'allument un peu sous la casquete

voici un exemple valide de recherche de fichier (with part of name
dim MONFICHIER As string'!!!!!!!!
MONFICHIER=dir(c:\mondossier\unsousdossier\* - dossier comptable 2020.xlsm")
If MONFICHIER <> "" then
do while MONFICHIER<>""
'blablablabla
'blablabla
MONFICHIER=dir 'recursivité
loop
end if
et là on aura la dernière occurence trouvée avec cette partie de nom
tu vois de quoi je parle quand je disais racine maintenant ?

c'est bon? 2025 c'est la bonne année ça va rentrer on est tous avec toi

ok d'accords je sort
 
Dernière édition:
Bonsoir.
C'est faux, ça. Dir sans chemin précisée cherche sur le chemin qu'on peut retrouver par CurDir, lui même défini par ChDrive suivi de ChDir ou par L'API SetCurrentDirectory.
Remarque importante: ChDir change le dossier courant du lecteur précisé, mais ne change pas forcément CurDir si le lecteur courant est différent du lecteur précisé. Pour changer à coup sûr CurDir il faut aussi ChDrive. Inutile de tronquer l'argument de ce dernier à 1 seul caractère: c'est assumé automatiquement.
 
Dernière édition:
re
désolé les gars chez moi ça ne fonctionne pas tout a fait comme ça d'autant plus qu'en effet le curdir n'est pas le dossier en question
pourquoi dire "si j'ai de la chance" plutôt que " ce chemin là et puis c'est tout"
des fois hein ............
à méditer

Patrick
 
Encore une fois CurDir peut ne pas avoir été changé par ChDir s'il n'y a pas aussi eu un ChDrive.
Pour un dossier de réseau l'API SetCurrentDirectory change toujours CurDir.
VB:
Declare Function PtrSafe SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" _
   (ByVal lpPathName As String) As Long
 
Dernière édition:
Re à tous😉,
Le message #10 (de ma part) évoquait déjà cette possibilité, non ?
nota : quand on a galéré autant quand on a été confronté à cette situation alors on s'en souvient par la suite... Le 'on' c'est moi😅.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…