gmuser
Messages postés4Date d'inscriptionmercredi 31 décembre 2008StatutMembreDernière intervention14 janvier 2009
-
31 déc. 2008 à 13:57
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 2010
-
19 janv. 2009 à 19:29
Bonjour!
je suis plus que débutante en VB et je voudrais trouver une macro qui me permette d'ouvrir tous les fichiers Excel contenus dans un dossier bien précis.
Voilà ce que j'ai bidouillé mais ça ne marche pas.
Quelqu'un peut-il voler à mon secours???
Merci!
Sub ouvrirDossier()
' ouvrirDossier Macro
'
Dim Repertoire As String, FichS As String, FichD As String
Repertoire = "H:\data\Adélie\RECHERCHE MACRO BUDGET 2009\FICHIERS 1st submission\ALL TEMPLATES\MAINTENANCE\Templates maintenance"
FichD = ActiveWorkbook.Name
FichS = Dir(Repertoire & "*.xls")
Do Until FichS = ""
Workbooks.Open FichS
FichS = Dir
Loop
End Sub
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 31 déc. 2008 à 16:16
Bonjour gmuser
Pas si débutante que ça, puisque ton code est presque bon !
Il y a un petit piège dans la fonction Dir. En effet, si celle-ci accepte un chemin complet en paramètre, elle ne retourne que le nom du fichier ! Donc il faut simplement remplacer :
gmuser
Messages postés4Date d'inscriptionmercredi 31 décembre 2008StatutMembreDernière intervention14 janvier 2009 31 déc. 2008 à 17:29
Merci Orohena!
j'essaierai ça dès que je retourne à mon poste de travail, c'est à dire vendredi.
Et je n'ai aucun mérite, le code je l'ai copié quelque part...
bon réveillon!
gmuser
Messages postés4Date d'inscriptionmercredi 31 décembre 2008StatutMembreDernière intervention14 janvier 2009 2 janv. 2009 à 11:20
ça marche! merci beaucoup Orohena!
J'ai un autre souci, un peu + compliqué...peux-tu m'aider?
J'ai un fichier qui doit faire la consolidation de 8 autres fichiers.
Tous les fichiers ont exactement le même format, seules les données à l'intérieur du tableau changent.
En fait je voudrais que chaque cellule du fichier consolidé soit la somme de la même cellule des 8 autres fichiers.
Par exemple la cellule A1 du fichier conso doit être la somme de la cellule A1 du fichier 1 + cellule A1 du fichier 2 + cellule A1 du fichier 3.....
Je ne sais pas si j'ai été très claire mais est-ce qu'une macro pourrait me faire ça?
Merci!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 2 janv. 2009 à 19:07
Bonjour
Voici un exemple ; colle le code ci-dessous dans le classeur conso.xls. A l'exécution du Sub consoliderClasseur(), il ouvre les 8 classeurs, consolide la cellule A1 de la feuille active puis ferme les 8 classeurs. Tous les classeurs doivent être dans le même répertoire.
Amicalement
Option Explicit
Private classeurs As Variant
Private classeurConso As String
Private i As Integer
'
Sub consoliderClasseur()
classeurConso = ActiveWorkbook.Name
' Liste des classeurs "source"
classeurs = Array("classeur1.xls", ... "classeur8.xls") ' liste des classeurs "source" (à modifier)
For i = 0 To UBound(classeurs)
Workbooks.Open classeurs(i) ' ouverture des classeurs "source"
Next
consoliderCellule "A1"
For i = 0 To UBound(classeurs)
Workbooks(classeurs(i)).Close savechanges:=False ' fermeture des classeurs "source"
Next
End Sub
'
Sub consoliderCellule(cellule As String) ' consolidation d'une cellule
Dim total As Double
For i = 0 To UBound(classeurs)
total = total + Workbooks(classeurs(i)).ActiveSheet.Range(cellule).Value
Next
Workbooks(classeurConso).ActiveSheet.Range(cellule).Value = total
End Sub
gmuser
Messages postés4Date d'inscriptionmercredi 31 décembre 2008StatutMembreDernière intervention14 janvier 2009 14 janv. 2009 à 14:15
Bonjour!
merci pour ta réponse mais la macro ne marche pas. j'ai ce message d'erreur :
"Erreur d'exécution 1004 : Template_v8_Landmann.xls (c'est le nom d'un des fichiers source)introuvable. Vérifiez l'orthographe du nom du classeur et la validité de l'emplacement."
Pourtant j'ai bien mis le nom de mes classeurs sources, je ne sais pas d'où vient l'erreur. Tu as une idée?
Autre question : cette macro me permet de consolider uniquement les classeurs que j'ai nommés. Est-ce que je ne pourrais pas nommer le répertoire où sont stockés tous les fichiers source? Et il consoliderait tous les fichiers du répertoire. Parce que des fichiers risquent de se rajouter et d'autres disparaître. Si je dois modifier les noms des fichiers à chaque fois, c'est pas pratique.
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 19 janv. 2009 à 19:24
Bonjour
Le code que je t'ai donné ne fonctionne qui si les 8 classeurs source et le classeur destination sont dans le même répertoire.
Pour nommer le répertoire des fichiers source et consolider les fichiers du répertoire, voici le code (à coller dans le classeur de consolidation) :
Option Explicit
Private classeurs() As String
Private classeurConso As String
Private cheminSources As String
Private i As Integer
'
Sub consoliderClasseur()
Dim fic As String
cheminSources = "c:" ' chemin des fichiers source
fic = Dir(cheminSources & "\*.xls")
Redim classeurs(0)
Do Until fic = ""
ReDim Preserve classeurs(Ubound(classeurs) + 1)
classeurs(Ubound(classeurs)) = fic
fic = Dir
Loop
classeurConso = ActiveWorkbook.Name
For i = 1 To UBound(classeurs)
Workbooks.Open classeurs(i) ' ouverture des classeurs "source"
Next
consoliderCellule "A1"
For i = 1 To UBound(classeurs)
Workbooks(classeurs(i)).Close savechanges:=False ' fermeture des classeurs "source"
Next
End Sub
'
Sub consoliderCellule(cellule As String) ' consolidation d'une cellule
Dim total As Double
For i = 1 To UBound(classeurs)
total = total + Workbooks(classeurs(i)).ActiveSheet.Range(cellule).Value
Next
Workbooks(classeurConso).ActiveSheet.Range(cellule).Value = total
End Sub
Avec ce code, les repertoires du classeur de destination et des classeurs source doivent être différents.