vba ouvrir tous les fichiers d'un meme dossier

dimitrifrom31

Habitué
(Re) Bonjour,

j'ai un second petit problème, je cherche comment récupérer des données provenant de différents classeurs excel se trouvant tous dans un dossier prédéfini sachant que je n'ai pas moyen de connaître ni leur nom ni leur nombre.

Exemple :

J'ai un dossier C:/DONNEES/ dans lequel se trouvent un nombre X declasseurs excel ayant tous la même structure (même nombre de feuilles etc). Les données que je veux récupérer se trouvent toujours sur la même feuille (feuil1 par exemple). Ensuiteje veux recopier ces données les unes à la suite des autres dans un autre classeur (mais ça je sais faire).

Quel est le code pour aller chercher ces données svp?

J'ai essayé de trouver par moi-même mais à chaque fois j'avais besoin de connaître le nom exact de chacun des classeurs.

Je sais qu'il ya une astuce qui consiste à "compter" le nombre de classeurs puis à faire une boucle for mais ça s'arrête là...
 

dimitrifrom31

Habitué
vous cassez pas la tête je crois avoir trouvé. Depuis le temps que je cherche c'es au moment ou je demande de l'aide que la solution me tombe dessus. :)


par contre je veux bien de l'aide pour ma première requête car là je bloque total :



*Ma question n'est pas dans le premier post du sujet*

 

dimitrifrom31

Habitué
Mouais en fait j'ai trouvé comment les ouvrir tous mais je souhaiterais savoir s'il est possible de récupérer les données sans les ouvrir?

PS : voici le code que j'utilise pour le moment :

Code:
Sub ouvrirfichiers()
Dim Fichier As String, Chemin As String
Dim Wb As Workbook

Chemin = "C:\DOSSIER\"
Fichier = Dir(Chemin & "*.xls")

Do While Fichier <> ""
Set Wb = Workbooks.Open(Chemin & Fichier)
'
'suite de la procedure
'
'Wb.Close True
Set Wb = Nothing
Fichier = Dir
Loop

End Sub
 

zeb

Modérateur
Pour les lire, il te faut les ouvrir évidemment !
Ce que tu fais n'est pas mal.

Un truc quand même, c'est de les fermer au fur et à mesure. Un wb.Close avant le Set Nothing serait judicieux.

On peut utiliser GetObject aussi :
Code:
Dim wb As Workbook
Set wb = GetObject(Chemin)
' // .. Début de la partie utile
' // Exemple : Affichage de la cellule A1 pour test :
MsgBox wb.Sheets("Feuil1").Range("A1").Value
' // .. Fin de la partie utile
wb.Close
Set wb = Nothing
Mais il faut quand même les fermer.

Je te propose cette façon de faire parce que tu sais maintenant ouvrir n'importe quel document dans n'importe quelle application VBA :)
 

dimitrifrom31

Habitué
Merci, je regarderai ca de plus près dès demain, j'arrête de bosser pr aujourd'hui, j'ai avancé plus que prévu en plus ;)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 050
Membres
1 586 282
Dernier membre
Yannick3553
Partager cette page
Haut