Lister des fichiers Excel avec le nombre de feuille par fichier
Bonjour
Je cherche à savoir comment je pourrais en VBA lister tous les fichiers excel d'un répertoire est connaître le nombre de feuille par fichier sans être obligé d'ouvrir 1 par 1 les fichiers.
Je n'ai malheureusement rien trouvé.
Merci d'avance pour votre précieuse aide.
Cordialement
Jean-Marc
Bonjour,
Lister tous les fichiers d'un répertoire : il serait étonnant que tu n'aies rien trouvé en la matière, les méthodes sont diverses...
Ensuite, tu peux tour à tour ouvrir chaque fichier, prélever le nombre de feuilles, le refermer. Avec inhibition de l'affichage tout se déroulera sans t'obliger à en voir la succession.
Sans les ouvrir, c'est un autre problème, il n'y a pas de fonction VBA pour lire dans un fichier fermé. Mais peut-être qu'une vieille macro Excel4 pourrait te permettre de le faire :
LIRE.CLASSEUR(4, "NomFichier")Petite recherche à faire pour te documenter et savoir comment l'utiliser en VBA.
Cordialement.
Bonjour
Merci pour votre conseil, cependant pour lister les fichiers j'ai bien une macro, mais ce qui me pause problème c'est l'ouverture de fichier car j'ai plus de 500 fichiers. L'objectif est de détecter ceux qui n'ont qu'une feuille dans le fichier afin que je puisse les exclures pour ma prochaine étape de mon project.
Merci
Salutations
Jean-Marc
Je t'ai indiqué des pistes, tu peux ou non les suivre...
Tu peux aller boire un café en attendant que ta macro ait fini de travailler ou prospecter des solutions alternatives... la décision t'appartient.
Bonjour
Pour faire plus simple
Si-dessous j'ai une code VBA
Qui permet d'extraire le contenue de la feuille 2 de la cellule B à F sur l'ensemble des fichiers XLX qui se trouve dans un répertoire.
Les fichiers en question ont des liens sur d'autres documents, qui lorsque le code VBA ouvre les fichiers 1 par 1 me demande si je dois faire une mise à jours et dans laquelle je réponds non.
Ma question, que dois-je ajouter dans le code pour que
1) 1er condition avec si un fichier comporte une seule feuille, qu'il passe automatiquement au fichier suivant,
2) 2ème condition le fichier comporte une 2ème feuille, alors ouverture du fichier "Set oWBSource = Workbooks.Open(sFichier, , True)" copie de la source de la feuille 2 "oShSource.Range("B2:F100000").Copy" et pour finir s'il demande la mise à jour du fichier que puis-je utiliser comme code pour qu'il réponde automatique non, sans que j'aie à intervenir sur les fichier
Merci d'avance pour votre aide
Jean-Marc
Sub Test()
'''''''''''''''''''''''''''''''
'''Compte nombre de fichier pour la boucle
Dim Chemin As String
Dim i As Integer
Dim FileName As String
Chemin = "fullpath"
Set ofso = CreateObject("Scripting.FileSystemObject")
Set oFolder = ofso.GetFolder(Chemin)
Set oFiles = oFolder.Files
Dim x As Integer
For Each file In oFiles
''''''''''''''''''''''''''''''''''''''
Dim sFichier As String 'chemin du fichier source
Dim oWBSource As Workbook 'fichier source
Dim oShSource As Worksheet 'onglet source
Dim oShCible As Worksheet 'onglet où on récupère
Dim FullName As String
FileName = file.Name
FullName = Chemin + "\" + FileName
'chemin du fichier source
sFichier = FullName
'vérif existe
If Dir(sFichier) = "" Then
MsgBox "Fichier absent : " & vbCrLf & sFichier, vbExclamation
Exit Sub
End If
'cet onglet
Set oShCible = Worksheets(1)
'ouverture en lecture seule
Set oWBSource = Workbooks.Open(sFichier, , True)
'onglet
Set oShSource = Worksheets(2) 'voir quel onglet on veut traiter
'récupération d'une valeur (exemple)
oShSource.Range("B2:F100000").Copy
oShCible.Cells(oShCible.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial (xlPasteValues)
'fermeture sans enregistrer
oWBSource.Close False
Set oShSource = Nothing
Set oWBSource = Nothing
Set oShCible = Nothing
Next
End Sub