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.
 
Re,
Ce qui n'est pas explicite pour moi et j'ai compris ainsi
Ligne gardée
VB:
Dim MONFICHIER As Workbook
Ligne supprimée
Code:
MONFICHIER = Dir(FICHIER_REPORTING)

Serait-ce l'inverse, ce qui du coup changerait tout 🤭
Ce que je n'avais pas mis dans le début de la macro c'est ceci qui vient après :
VB:
Do Until MONFICHIER = ""
     Workbooks.Open Filename:=MONFICHIER, UpdateLinks:=3

Donc si je supprime
Code:
MONFICHIER = Dir(FICHIER_REPORTING)
le fichier ne s'ouvre pas car la valeur MONFICHIER est vide

Pour résumer ce que la macro doit faire : on ouvre les fichiers 1 par 1 qui se trouvent dans le répertoire <span>"X:\Dossiers reçus\"</span>, on récupère certaines données que l'on met dans un fichier récup, le fichier se ferme et l'on passe au suivant tant qu'il y a des fichiers dans le répertoire dossiers reçus. J'essaie d'être clair mais ce n'est pas évident. Ma question de départ était plutôt pourquoi ce qui marche sur un PC ne fonctionne pas sur un autre.
 
Dernière édition:
Re,

Après test, je n'ai absolument aucun souci 🤔

Si vous rajoutez un debug.print
VB:
Sub fichiers()
  repertoire_fichiers = "X:\Dossiers reçus\"
  Debug.Print repertoire_fichiers
  FICHIER_REPORTING = "*dossier 2023.xlsm"
End Sub
Que vous donne la valeur dans la fenêtre dexécution ?

A quoi pensez-vous que vous sert le code donné initialement ?

Pouvez-vous nous mettre le VRAI code, en masquant le chemin réseau si vous le souhaitez

A+
 
bonjourJe reprécise que tout fonctionnait avant ce changement de PC!!
Dim MONFICHIER As Workbook
MONFICHIER = Dir(FICHIER_REPORTING)

tout fonctionnait avant!!?????? ; et ma sœur fait du tricot avec la laine de lama de tanzanie

VB:
Sub fichiers(repertoire_fichiers, FICHIER_REPORTING) 'pas de dimension sur les variables c'est une passerelle
    'il faudra quand même m'expliquer l'utilité d'un passerelle quand même hein !!! mais bon je juge pas LOL
    repertoire_fichiers = "X:\Dossiers reçus\"'attention veiller a l'antislash a la fin
    FICHIER_REPORTING = "*dossier 2023.xlsm"
End Sub

Sub recup_TOUT()
    Dim repertoire_fichiers
    Dim FICHIER_REPORTING
    Dim mafeuille As Worksheet
    Dim fichier_recap As String
    Dim MONFICHIER As String 'string et porte jartelle pas burk de bouc
    fichier_recap = ActiveWorkbook.Name
    
    'on instruit les variable par la sub fichier avec les variable en passerelle (un peu tiré par les cheveux mais bon je juge pas
    Call fichiers(repertoire_fichiers, FICHIER_REPORTING)
    
    'ensuite je ne sais pas a quoi ça te sert mais bon
    'd 'abords on fait un chdrive sinon le chdir ne fonctionnera pas si le disque n'est pas celui du system
    ChDrive Left(repertoire_fichiers, 1)
    'ensuite on fait un chdir
    ChDir repertoire_fichiers
    
    chemin = repertoire_fichiers & FICHIER_REPORTING
    'avant de faire des triple loop en veux tu en voilà on teste si un dir dit quelque chose
    If Dir(chemin) <> "" Then
        
        Lig = 0
        d = Dir(chemin)
        While d <> ""
            Lig = Lig + 1 ' on fait quoi avec lig ??,
            d = Dir
        Wend
    End If
    
    
    'et alors là c'est le must y a pas le chemin de base
    MONFICHIER = Dir(FICHIER_REPORTING) 'wrong!! wrong !! wrong !!
End Sub

je vais dire a ma soeur de changer de matière première

ok je sort
 
wDog66 tu as raison mais quand on me dis ça fonctionne sur les autre machine je mets pas en doute le demandeur et je me dis que c'est un pb d'environnement!

mais le demandeur avait peut-être résolut les diffèrent bug avant je de jeter son enceint PC aux ordures😆

perso je suis contant d'utiliser GUILAB!
 
Dernière édition:
Mais est-ce que ta variable FICHIER_REPORTING est déclarée en Global au moins ?
Voici un exemple complet qui ne fonctionne plus : (c'est quasi la même que j'ai mentionné au début)

VB:
Sub recup_mandataire()

fichier_recup = ActiveWorkbook.Name
Sheets("mandataires").Select
Range("a3:z500").ClearContents

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")
K = 1
     
Do Until MONFICHIER = ""
Application.StatusBar = "Ouverture en cours du fichier : " & MONFICHIER & " (Fichier n° " & K & "/" & Lig & ")"
Workbooks.Open Filename:=MONFICHIER
Sheets(1).Select
code = Cells(5, 1).Value
nom = Cells(5, 2).Value
       
Sheets("1 - Identification").Select
mandataire = Cells(43, 3).Value
fonctions = Cells(45, 3).Value

Windows(fichier_recup).Activate
Cells(1500, 1).Select
ActiveCell.End(xlUp).Select
ActiveCell.Offset(1, 0).Select

ActiveCell.Value = code
ActiveCell.Offset(0, 1).Value = nom
ActiveCell.Offset(0, 2).Value = mandataire
ActiveCell.Offset(0, 3).Value = fonctions

Windows(MONFICHIER).Activate
K = K + 1
ActiveWorkbook.Close False

MONFICHIER = Dir
Loop
End Sub
 
Dernière édition:
re
l'abus des coton tige, il faut faire attention
je répète
MONFICHIER = Dir("* - dossier comptable 2020.xlsm")
ou est la base( la racine du path )!!!!!!!!!!!!!!!??????????????????????
tu crois que ton "*" va faire le boulot à ta place? mauvaise nouvelle la réponse est non
 
re
l'abus des coton tige, il faut faire attention
je répète
MONFICHIER = Dir("* - dossier comptable 2020.xlsm")
ou est la base( la racine du path )!!!!!!!!!!!!!!!??????????????????????
tu crois que ton "*" va faire le boulot à ta place? mauvaise nouvelle la réponse est non
* est le code
re
l'abus des coton tige, il faut faire attention
je répète
MONFICHIER = Dir("* - dossier comptable 2020.xlsm")
ou est la base( la racine du path )!!!!!!!!!!!!!!!??????????????????????
tu crois que ton "*" va faire le boulot à ta place? mauvaise nouvelle la réponse est non
Merci pour ta bienveillance, pour ton info je n'utilise pas de cotons tiges (lol) et ne suis pas informaticien comme toi peut-être.
La syntaxe des fichiers est par exemple : T000 - Dossier comptable 2020.xlsm donc l'* est sensée remplacer "T000 - " dans mon exemple et donc la macro ouvre tous les fichiers qui finissent par Dossier comptable 2020.xlsm du répertoire où sont stockés les fichiers. Mais si tu as une autre manière de faire je suis preneur. Je fais des macros en autodidacte donc assez basique et en piochant à gauche et à droite sur internet.
 
.
VB:
dir(*.*) 'données tous les fichiers du répertoire courant.


'si j'ai fait au préalable un
mkdir "c:\toto" 'le dir retour tous les fichiers du répertoire Toto
Merci, je vais essayer d'appliquer cette méthode mais je ne pense pas que cela va résoudre mon problème. Je vais investiguer par moi-même. A la base j'espérais que quelqu'un me donne la solution pourquoi cela fonctionne sur un PC et pas sur un autre alors qu'ils sont sensés être paramétrés de la même façon!
 
- 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
Retour