Je veux obtenir dans un classeur la liste des classeurs=20
Excel contenus dans un r=E9pertoire (et ses sous-r=E9pertoires)
et le nombre de feuillese que chacun d'eux contient.
J'arrive =E0 ce que je veux avec la macro suivante :
Sub TonCompteEstBon()
Application.ScreenUpdating =3D False
ClasseurCourant =3D ActiveWorkbook.Name
MonDossier =3D ActiveSheet.Range("Depart") 'ex. "C:\Mes Docs"
ActiveSheet.Range("NbClasseurs").ClearContents
ActiveSheet.Range("LesResultats").ClearContents
With Application.FileSearch
.NewSearch
.LookIn =3D MonDossier
.Filename =3D "*.xls"
.SearchSubFolders =3D True
.Execute
For i =3D 1 To .FoundFiles.Count
ClasseurCherche =3D .FoundFiles(i)
MaVal =3D Mid(.FoundFiles(i), Len(MonDossier) +2)
Workbooks.Open (ClasseurCherche)
MonNombre =3D ActiveWorkbook.Worksheets.Count
DateEnregistrement =3D _
ActiveWorkbook.BuiltinDocumentProperties(11)
ActiveWorkbook.Close SaveChanges:=3DFalse
Workbooks(ClasseurCourant).ActiveSheet.Range _
("B" & i + 3) =3D MaVal
Workbooks(ClasseurCourant).ActiveSheet.Range _
("C" & i + 3) =3D MonNombre
Workbooks(ClasseurCourant).ActiveSheet.Range _
("D" & i + 3) =3D DateEnregistrement
Next i
Workbooks(ClasseurCourant).ActiveSheet.Range _
("NbClasseurs") =3D .FoundFiles.Count
If .FoundFiles.Count =3D 0 Then
MsgBox "Aucun Classeur n'a =E9t=E9 trouv=E9."
End If
End With
End Sub
L=E0 o=F9 les choses se compliquent, c'est que certains=20
classeurs, cr=E9=E9s sur Mac, peuvent ne pas avoir=20
l'extension ".xls".=20
Pour pouvoir les prendre en compte, tout semble bien se=20
passer en rempla=E7ant=20
.Filename =3D "*.xls" par
.FileType =3D msoFileTypeAllFiles
=E0 condition qu'il n'y ait ni sous-r=E9pertoires, ni fichiers=20
autres que des classeurs Excel...
Et je n'arrive pas =E0 faire des boucles conditionnelles en=20
utilisant les r=E9sultats de FileSearch (un truc comme
test =3D Workbooks(.FoundFiles(i)).Application
donne une erreur). Grrr....
Si quelqu'un peut me dire comment prendre en compte=20
uniquement les fichiers Excel avec ou sans extensions, =E7a=20
m'int=E9resserait ;-)
peu être avec, .FileType = msoFileTypeExcelWorkbooks je ne sais pas si cela fonctionnera sous mac.
isabelle
Bonjour tout le monde,
Je veux obtenir dans un classeur la liste des classeurs Excel contenus dans un répertoire (et ses sous-répertoires) et le nombre de feuillese que chacun d'eux contient.
J'arrive à ce que je veux avec la macro suivante :
Sub TonCompteEstBon() Application.ScreenUpdating = False ClasseurCourant = ActiveWorkbook.Name MonDossier = ActiveSheet.Range("Depart") 'ex. "C:Mes Docs" ActiveSheet.Range("NbClasseurs").ClearContents ActiveSheet.Range("LesResultats").ClearContents With Application.FileSearch .NewSearch .LookIn = MonDossier .Filename = "*.xls" .SearchSubFolders = True .Execute For i = 1 To .FoundFiles.Count ClasseurCherche = .FoundFiles(i) MaVal = Mid(.FoundFiles(i), Len(MonDossier) +2) Workbooks.Open (ClasseurCherche) MonNombre = ActiveWorkbook.Worksheets.Count DateEnregistrement = _ ActiveWorkbook.BuiltinDocumentProperties(11) ActiveWorkbook.Close SaveChanges:úlse Workbooks(ClasseurCourant).ActiveSheet.Range _ ("B" & i + 3) = MaVal Workbooks(ClasseurCourant).ActiveSheet.Range _ ("C" & i + 3) = MonNombre Workbooks(ClasseurCourant).ActiveSheet.Range _ ("D" & i + 3) = DateEnregistrement Next i Workbooks(ClasseurCourant).ActiveSheet.Range _ ("NbClasseurs") = .FoundFiles.Count If .FoundFiles.Count = 0 Then MsgBox "Aucun Classeur n'a été trouvé." End If End With
End Sub
Là où les choses se compliquent, c'est que certains classeurs, créés sur Mac, peuvent ne pas avoir l'extension ".xls".
Pour pouvoir les prendre en compte, tout semble bien se passer en remplaçant .Filename = "*.xls" par .FileType = msoFileTypeAllFiles à condition qu'il n'y ait ni sous-répertoires, ni fichiers autres que des classeurs Excel...
Et je n'arrive pas à faire des boucles conditionnelles en utilisant les résultats de FileSearch (un truc comme test = Workbooks(.FoundFiles(i)).Application donne une erreur). Grrr....
Si quelqu'un peut me dire comment prendre en compte uniquement les fichiers Excel avec ou sans extensions, ça m'intéresserait ;-)
Merci
-- Bernard Rey / Toulouse
bonjour Bernard,
peu être avec,
.FileType = msoFileTypeExcelWorkbooks
je ne sais pas si cela fonctionnera sous mac.
isabelle
Bonjour tout le monde,
Je veux obtenir dans un classeur la liste des classeurs
Excel contenus dans un répertoire (et ses sous-répertoires)
et le nombre de feuillese que chacun d'eux contient.
J'arrive à ce que je veux avec la macro suivante :
Sub TonCompteEstBon()
Application.ScreenUpdating = False
ClasseurCourant = ActiveWorkbook.Name
MonDossier = ActiveSheet.Range("Depart") 'ex. "C:Mes Docs"
ActiveSheet.Range("NbClasseurs").ClearContents
ActiveSheet.Range("LesResultats").ClearContents
With Application.FileSearch
.NewSearch
.LookIn = MonDossier
.Filename = "*.xls"
.SearchSubFolders = True
.Execute
For i = 1 To .FoundFiles.Count
ClasseurCherche = .FoundFiles(i)
MaVal = Mid(.FoundFiles(i), Len(MonDossier) +2)
Workbooks.Open (ClasseurCherche)
MonNombre = ActiveWorkbook.Worksheets.Count
DateEnregistrement = _
ActiveWorkbook.BuiltinDocumentProperties(11)
ActiveWorkbook.Close SaveChanges:úlse
Workbooks(ClasseurCourant).ActiveSheet.Range _
("B" & i + 3) = MaVal
Workbooks(ClasseurCourant).ActiveSheet.Range _
("C" & i + 3) = MonNombre
Workbooks(ClasseurCourant).ActiveSheet.Range _
("D" & i + 3) = DateEnregistrement
Next i
Workbooks(ClasseurCourant).ActiveSheet.Range _
("NbClasseurs") = .FoundFiles.Count
If .FoundFiles.Count = 0 Then
MsgBox "Aucun Classeur n'a été trouvé."
End If
End With
End Sub
Là où les choses se compliquent, c'est que certains
classeurs, créés sur Mac, peuvent ne pas avoir
l'extension ".xls".
Pour pouvoir les prendre en compte, tout semble bien se
passer en remplaçant
.Filename = "*.xls" par
.FileType = msoFileTypeAllFiles
à condition qu'il n'y ait ni sous-répertoires, ni fichiers
autres que des classeurs Excel...
Et je n'arrive pas à faire des boucles conditionnelles en
utilisant les résultats de FileSearch (un truc comme
test = Workbooks(.FoundFiles(i)).Application
donne une erreur). Grrr....
Si quelqu'un peut me dire comment prendre en compte
uniquement les fichiers Excel avec ou sans extensions, ça
m'intéresserait ;-)
peu être avec, .FileType = msoFileTypeExcelWorkbooks je ne sais pas si cela fonctionnera sous mac.
isabelle
Bonjour tout le monde,
Je veux obtenir dans un classeur la liste des classeurs Excel contenus dans un répertoire (et ses sous-répertoires) et le nombre de feuillese que chacun d'eux contient.
J'arrive à ce que je veux avec la macro suivante :
Sub TonCompteEstBon() Application.ScreenUpdating = False ClasseurCourant = ActiveWorkbook.Name MonDossier = ActiveSheet.Range("Depart") 'ex. "C:Mes Docs" ActiveSheet.Range("NbClasseurs").ClearContents ActiveSheet.Range("LesResultats").ClearContents With Application.FileSearch .NewSearch .LookIn = MonDossier .Filename = "*.xls" .SearchSubFolders = True .Execute For i = 1 To .FoundFiles.Count ClasseurCherche = .FoundFiles(i) MaVal = Mid(.FoundFiles(i), Len(MonDossier) +2) Workbooks.Open (ClasseurCherche) MonNombre = ActiveWorkbook.Worksheets.Count DateEnregistrement = _ ActiveWorkbook.BuiltinDocumentProperties(11) ActiveWorkbook.Close SaveChanges:úlse Workbooks(ClasseurCourant).ActiveSheet.Range _ ("B" & i + 3) = MaVal Workbooks(ClasseurCourant).ActiveSheet.Range _ ("C" & i + 3) = MonNombre Workbooks(ClasseurCourant).ActiveSheet.Range _ ("D" & i + 3) = DateEnregistrement Next i Workbooks(ClasseurCourant).ActiveSheet.Range _ ("NbClasseurs") = .FoundFiles.Count If .FoundFiles.Count = 0 Then MsgBox "Aucun Classeur n'a été trouvé." End If End With
End Sub
Là où les choses se compliquent, c'est que certains classeurs, créés sur Mac, peuvent ne pas avoir l'extension ".xls".
Pour pouvoir les prendre en compte, tout semble bien se passer en remplaçant .Filename = "*.xls" par .FileType = msoFileTypeAllFiles à condition qu'il n'y ait ni sous-répertoires, ni fichiers autres que des classeurs Excel...
Et je n'arrive pas à faire des boucles conditionnelles en utilisant les résultats de FileSearch (un truc comme test = Workbooks(.FoundFiles(i)).Application donne une erreur). Grrr....
Si quelqu'un peut me dire comment prendre en compte uniquement les fichiers Excel avec ou sans extensions, ça m'intéresserait ;-)
Merci
-- Bernard Rey / Toulouse
Bernard Rey
Isabelle :
peu être avec, ..FileType = msoFileTypeExcelWorkbooks
Non, merci de ta réponse, mais j'ai déjà essayé et, hélas, ça teste visiblement sur l'extension ".xls". En tout cas, j'obtiens les mêmes résultats qu'avec "Filename = "*.xls".
je ne sais pas si cela fonctionnera sous mac.
C'est sous Windows que je fais ça. Mais certains des fichiers n'ont pas d'extension parce qu'ils ont été créés avec une version Mac. Ce n'est pas gênant pour les ouvrir avec "Workbooks.Open", mais le tout est justement d'arriver à les inclure dans les résutats de la recherche. C'est là-dessus que je cale ;-)
-- Bernard Rey / Toulouse
Bonjour tout le monde,
Je veux obtenir dans un classeur la liste des classeurs Excel contenus dans un répertoire (et ses sous- répertoires) et le nombre de feuillese que chacun d'eux contient.
J'arrive à ce que je veux avec la macro suivante :
ActiveSheet.Range("NbClasseurs").ClearContents ActiveSheet.Range("LesResultats").ClearContents With Application.FileSearch .NewSearch .LookIn = MonDossier .Filename = "*.xls" .SearchSubFolders = True .Execute For i = 1 To .FoundFiles.Count ClasseurCherche = .FoundFiles(i) MaVal = Mid(.FoundFiles(i),Len(MonDossier)+2) Workbooks.Open (ClasseurCherche) MonNombre = ActiveWorkbook.Worksheets.Count DateEnregistrement = _ ActiveWorkbook.BuiltinDocumentProperties(11) ActiveWorkbook.Close SaveChanges:úlse Workbooks(ClasseurCourant).ActiveSheet.Range _ ("B" & i + 3) = MaVal Workbooks(ClasseurCourant).ActiveSheet.Range _ ("C" & i + 3) = MonNombre Workbooks(ClasseurCourant).ActiveSheet.Range _ ("D" & i + 3) = DateEnregistrement Next i Workbooks(ClasseurCourant).ActiveSheet.Range _ ("NbClasseurs") = .FoundFiles.Count If .FoundFiles.Count = 0 Then MsgBox "Aucun Classeur n'a été trouvé." End If End With
End Sub
Là où les choses se compliquent, c'est que certains classeurs, créés sur Mac, peuvent ne pas avoir l'extension ".xls".
Pour pouvoir les prendre en compte, tout semble bien se passer en remplaçant .Filename = "*.xls" par .FileType = msoFileTypeAllFiles à condition qu'il n'y ait ni sous-répertoires, ni fichiers autres que des classeurs Excel...
Et je n'arrive pas à faire des boucles conditionnelles en utilisant les résultats de FileSearch (un truc comme test = Workbooks(.FoundFiles(i)).Application donne une erreur). Grrr....
Si quelqu'un peut me dire comment prendre en compte uniquement les fichiers Excel avec ou sans extensions, ça m'intéresserait ;-)
Merci
-- Bernard Rey / Toulouse .
Isabelle :
peu être avec,
..FileType = msoFileTypeExcelWorkbooks
Non, merci de ta réponse, mais j'ai déjà essayé et, hélas,
ça teste visiblement sur l'extension ".xls". En tout cas,
j'obtiens les mêmes résultats qu'avec "Filename = "*.xls".
je ne sais pas si cela fonctionnera sous mac.
C'est sous Windows que je fais ça. Mais certains des
fichiers n'ont pas d'extension parce qu'ils ont été créés
avec une version Mac. Ce n'est pas gênant pour les ouvrir
avec "Workbooks.Open", mais le tout est justement
d'arriver à les inclure dans les résutats de la recherche.
C'est là-dessus que je cale ;-)
--
Bernard Rey / Toulouse
Bonjour tout le monde,
Je veux obtenir dans un classeur la liste des classeurs
Excel contenus dans un répertoire (et ses sous-
répertoires) et le nombre de feuillese que chacun d'eux
contient.
J'arrive à ce que je veux avec la macro suivante :
ActiveSheet.Range("NbClasseurs").ClearContents
ActiveSheet.Range("LesResultats").ClearContents
With Application.FileSearch
.NewSearch
.LookIn = MonDossier
.Filename = "*.xls"
.SearchSubFolders = True
.Execute
For i = 1 To .FoundFiles.Count
ClasseurCherche = .FoundFiles(i)
MaVal = Mid(.FoundFiles(i),Len(MonDossier)+2)
Workbooks.Open (ClasseurCherche)
MonNombre = ActiveWorkbook.Worksheets.Count
DateEnregistrement = _
ActiveWorkbook.BuiltinDocumentProperties(11)
ActiveWorkbook.Close SaveChanges:=False
Workbooks(ClasseurCourant).ActiveSheet.Range _
("B" & i + 3) = MaVal
Workbooks(ClasseurCourant).ActiveSheet.Range _
("C" & i + 3) = MonNombre
Workbooks(ClasseurCourant).ActiveSheet.Range _
("D" & i + 3) = DateEnregistrement
Next i
Workbooks(ClasseurCourant).ActiveSheet.Range _
("NbClasseurs") = .FoundFiles.Count
If .FoundFiles.Count = 0 Then
MsgBox "Aucun Classeur n'a été trouvé."
End If
End With
End Sub
Là où les choses se compliquent, c'est que certains
classeurs, créés sur Mac, peuvent ne pas avoir
l'extension ".xls".
Pour pouvoir les prendre en compte, tout semble bien se
passer en remplaçant
.Filename = "*.xls" par
.FileType = msoFileTypeAllFiles
à condition qu'il n'y ait ni sous-répertoires, ni
fichiers autres que des classeurs Excel...
Et je n'arrive pas à faire des boucles conditionnelles
en utilisant les résultats de FileSearch (un truc comme
test = Workbooks(.FoundFiles(i)).Application
donne une erreur). Grrr....
Si quelqu'un peut me dire comment prendre en compte
uniquement les fichiers Excel avec ou sans extensions,
ça m'intéresserait ;-)
peu être avec, ..FileType = msoFileTypeExcelWorkbooks
Non, merci de ta réponse, mais j'ai déjà essayé et, hélas, ça teste visiblement sur l'extension ".xls". En tout cas, j'obtiens les mêmes résultats qu'avec "Filename = "*.xls".
je ne sais pas si cela fonctionnera sous mac.
C'est sous Windows que je fais ça. Mais certains des fichiers n'ont pas d'extension parce qu'ils ont été créés avec une version Mac. Ce n'est pas gênant pour les ouvrir avec "Workbooks.Open", mais le tout est justement d'arriver à les inclure dans les résutats de la recherche. C'est là-dessus que je cale ;-)
-- Bernard Rey / Toulouse
Bonjour tout le monde,
Je veux obtenir dans un classeur la liste des classeurs Excel contenus dans un répertoire (et ses sous- répertoires) et le nombre de feuillese que chacun d'eux contient.
J'arrive à ce que je veux avec la macro suivante :
ActiveSheet.Range("NbClasseurs").ClearContents ActiveSheet.Range("LesResultats").ClearContents With Application.FileSearch .NewSearch .LookIn = MonDossier .Filename = "*.xls" .SearchSubFolders = True .Execute For i = 1 To .FoundFiles.Count ClasseurCherche = .FoundFiles(i) MaVal = Mid(.FoundFiles(i),Len(MonDossier)+2) Workbooks.Open (ClasseurCherche) MonNombre = ActiveWorkbook.Worksheets.Count DateEnregistrement = _ ActiveWorkbook.BuiltinDocumentProperties(11) ActiveWorkbook.Close SaveChanges:úlse Workbooks(ClasseurCourant).ActiveSheet.Range _ ("B" & i + 3) = MaVal Workbooks(ClasseurCourant).ActiveSheet.Range _ ("C" & i + 3) = MonNombre Workbooks(ClasseurCourant).ActiveSheet.Range _ ("D" & i + 3) = DateEnregistrement Next i Workbooks(ClasseurCourant).ActiveSheet.Range _ ("NbClasseurs") = .FoundFiles.Count If .FoundFiles.Count = 0 Then MsgBox "Aucun Classeur n'a été trouvé." End If End With
End Sub
Là où les choses se compliquent, c'est que certains classeurs, créés sur Mac, peuvent ne pas avoir l'extension ".xls".
Pour pouvoir les prendre en compte, tout semble bien se passer en remplaçant .Filename = "*.xls" par .FileType = msoFileTypeAllFiles à condition qu'il n'y ait ni sous-répertoires, ni fichiers autres que des classeurs Excel...
Et je n'arrive pas à faire des boucles conditionnelles en utilisant les résultats de FileSearch (un truc comme test = Workbooks(.FoundFiles(i)).Application donne une erreur). Grrr....
Si quelqu'un peut me dire comment prendre en compte uniquement les fichiers Excel avec ou sans extensions, ça m'intéresserait ;-)
Merci
-- Bernard Rey / Toulouse .
JpPradier
Bonjour Bernard
Souvent les 3 ou 4 premiers octets d'un fichier donnent une indication sur le type de fichier. Peut-etre qu'en lisant ces octets? Bien que ce ne soit peut-etre pas valide pour les fichiers Mac.
j-p
Bonjour Bernard
Souvent les 3 ou 4 premiers octets d'un fichier donnent une indication sur le type de fichier.
Peut-etre qu'en lisant ces octets? Bien que ce ne soit peut-etre pas valide pour les fichiers Mac.
Souvent les 3 ou 4 premiers octets d'un fichier donnent une indication sur le type de fichier. Peut-etre qu'en lisant ces octets? Bien que ce ne soit peut-etre pas valide pour les fichiers Mac.