Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Aide sur la Fonction DIR ; CHDIR

2 réponses
Avatar
Bidou
Bonjour,

Les instructions VBA suivantes ( que j'ai piquées sur ce forum un grand
merci à son auteur)figurant dans un classeur TEST.xls permettent ( si j'ai
bien compris) le balayage des fichiers à extensions xls commençant par toto
du dossier courant
ChDir ThisWorkbook.Path
var = Dir("toto*.xls") ' premier classeur
Do While var<> ""
Workbooks.Open Filename:=var
instructions

Next c
ActiveWorkbook.Close
var= Dir ' classeur suivant
Loop
Ca marche très bien dans le cas où les classeurs à analyser se trouvent dans
un seul dossier .
Mais comment faire s'ils figurent dans plusieurs sous-dossiers ??
par exemple :

C:\TOTAUX GENERAUX
TOTAUX JANV
toto1.xls
toto2.xls
toto3.xls
TOTAUX FEV
toto4.xls
toto5.xls
toto6.xls

Merci pour votre aide

2 réponses

Avatar
FFO
Salut Bidou

soit sous C:TOTAUX GENERAUX

les sous dossiers nommés:
TOTAUX JANV
TOTAUX FEV
TOTAUX MARS
Etc....

Ce code :

On Error Resume Next
For i = 1 To 12
Mois = UCase(Format(Mid(Date, 1, 3) & Format(i, "00") & Mid(Date, 6), "mmmm"))
If i = 2 Then
Mois = "FEVRIER"
End If
If Dir("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 3) & "", vbDirectory) <>
"" Then
ChDir ("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 3) & "")
Else
ChDir ("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 4) & "")
End If
Var = Dir("Fichiers*.xls") ' premier classeur
Do While Var <> ""
Workbooks.Open Filename:=Var
Var = Dir ' classeur suivant
Loop
Next i

j'ai par les lignes :

If Dir("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 3) & "", vbDirectory) <>
"" Then
ChDir ("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 3) & "")
Else
ChDir ("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 4) & "")
End If

pris en considération le mois du dossier sous forme de 3 lettres comme
TOTAUX FEV ou de sous forme de 4 lettres comme TOTAUX JANV

Il va de soit qu'une meilleur harmonisation dans le libellé des mois aurais
allégé le code

J'espère que certain mois n'auront pas un nombre de lettres différents

Par les lignes :

If i = 2 Then
Mois = "FEVRIER"
End If

j'ai traité à part le mois de février qui présente un E commercial avec
accent avec la ligne :

Mois = UCase(Format(Mid(Date, 1, 3) & Format(i, "00") & Mid(Date, 6), "mmmm"))


Voilà les quelques explications
C'est un peu lourd mais efficace

Dis moi !!!


Bonjour,

Les instructions VBA suivantes ( que j'ai piquées sur ce forum un grand
merci à son auteur)figurant dans un classeur TEST.xls permettent ( si j'ai
bien compris) le balayage des fichiers à extensions xls commençant par toto
du dossier courant
ChDir ThisWorkbook.Path
var = Dir("toto*.xls") ' premier classeur
Do While var<> ""
Workbooks.Open Filename:=var
instructions

Next c
ActiveWorkbook.Close
var= Dir ' classeur suivant
Loop
Ca marche très bien dans le cas où les classeurs à analyser se trouvent dans
un seul dossier .
Mais comment faire s'ils figurent dans plusieurs sous-dossiers ??
par exemple :

C:TOTAUX GENERAUX
TOTAUX JANV
toto1.xls
toto2.xls
toto3.xls
TOTAUX FEV
toto4.xls
toto5.xls
toto6.xls

Merci pour votre aide






Avatar
Gaetan FARRE
Bonjour
Je vais intégrer tes lignes dans ma macro et je tiens au courant

merci pour ton aide

"FFO" a écrit dans le message de news:

Salut Bidou

soit sous C:TOTAUX GENERAUX

les sous dossiers nommés:
TOTAUX JANV
TOTAUX FEV
TOTAUX MARS
Etc....

Ce code :

On Error Resume Next
For i = 1 To 12
Mois = UCase(Format(Mid(Date, 1, 3) & Format(i, "00") & Mid(Date, 6),
"mmmm"))
If i = 2 Then
Mois = "FEVRIER"
End If
If Dir("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 3) & "", vbDirectory)
<>
"" Then
ChDir ("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 3) & "")
Else
ChDir ("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 4) & "")
End If
Var = Dir("Fichiers*.xls") ' premier classeur
Do While Var <> ""
Workbooks.Open Filename:=Var
Var = Dir ' classeur suivant
Loop
Next i

j'ai par les lignes :

If Dir("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 3) & "", vbDirectory)
<>
"" Then
ChDir ("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 3) & "")
Else
ChDir ("C:TOTAUX GENERAUXTOTAUX " & Mid(Mois, 1, 4) & "")
End If

pris en considération le mois du dossier sous forme de 3 lettres comme
TOTAUX FEV ou de sous forme de 4 lettres comme TOTAUX JANV

Il va de soit qu'une meilleur harmonisation dans le libellé des mois
aurais
allégé le code

J'espère que certain mois n'auront pas un nombre de lettres différents

Par les lignes :

If i = 2 Then
Mois = "FEVRIER"
End If

j'ai traité à part le mois de février qui présente un E commercial avec
accent avec la ligne :

Mois = UCase(Format(Mid(Date, 1, 3) & Format(i, "00") & Mid(Date, 6),
"mmmm"))


Voilà les quelques explications
C'est un peu lourd mais efficace

Dis moi !!!


Bonjour,

Les instructions VBA suivantes ( que j'ai piquées sur ce forum un grand
merci à son auteur)figurant dans un classeur TEST.xls permettent ( si
j'ai
bien compris) le balayage des fichiers à extensions xls commençant par
toto
du dossier courant
ChDir ThisWorkbook.Path
var = Dir("toto*.xls") ' premier classeur
Do While var<> ""
Workbooks.Open Filename:=var
instructions

Next c
ActiveWorkbook.Close
var= Dir ' classeur suivant
Loop
Ca marche très bien dans le cas où les classeurs à analyser se trouvent
dans
un seul dossier .
Mais comment faire s'ils figurent dans plusieurs sous-dossiers ??
par exemple :

C:TOTAUX GENERAUX
TOTAUX JANV
toto1.xls
toto2.xls
toto3.xls
TOTAUX FEV
toto4.xls
toto5.xls
toto6.xls

Merci pour votre aide