A voir également:
- Regroupement de fichiers Excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Explorateur de fichiers - Guide
7 réponses
Je te remercie de ta réponse si rapide.
Après application de ta solution le débogueur m'indique :
For Each Ws In ActiveWorkbook -> Propriété ou méthode non gérée par cet objet
Aurais-tu une idée ?
Encore merci !
Après application de ta solution le débogueur m'indique :
For Each Ws In ActiveWorkbook -> Propriété ou méthode non gérée par cet objet
Aurais-tu une idée ?
Encore merci !
Essaie en ajoutant
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Dim Wk as Workbook Dim Ws '... Set WK = Workbooks.Open(LesFichiers) For Each Ws In Wk.Worksheets '.....
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
C'est mieux ! Mon programme accepte ma boucle For Each avec ta solution.
Néanmoins lors de l'exécution, ma macro me copie en boucle infinie les entêtes de mes tableaux (qui sont tous les mêmes), et non leurs contenus...
Au moins quelque chose s'exécute, j'ai bon espoir ! ;)
Merci à toi !
Néanmoins lors de l'exécution, ma macro me copie en boucle infinie les entêtes de mes tableaux (qui sont tous les mêmes), et non leurs contenus...
Au moins quelque chose s'exécute, j'ai bon espoir ! ;)
Merci à toi !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Remplace
Au début de ta Sub, ajoute
et modifie le code suivant dans ta boucle:
Par
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
AvantDerniereLigne = ActiveSheet.UsedRange.Rows.Countpar
AvantDerniereLigne = ws.UsedRange.Rows.Count
Au début de ta Sub, ajoute
Dim WkRecap As Workbook Dim WsRecap As Worksheet Dim DerLigRecap as long Set WkRecap = ThisWorkbook Set WsRecap = WkRecap.Worksheets(1)
et modifie le code suivant dans ta boucle:
AvantDerniereLigne = ActiveSheet.UsedRange.Rows.Count Range("A15:W" & AvantDerniereLigne).Copy Workbooks("Récapitulatif.xlsm").Activate 'Activation du fichier récap DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1 Range("A" & DebutNomFichier).Select ActiveSheet.Paste Range("A2:A" & ActiveSheet.UsedRange.Rows.Count) = collectivite Workbooks(LesFichiers).Close
Par
DerLigRecap = WsRecap.UsedRange.Rows.Count + 1 Ws.Range("A15:W" & AvantDerniereLigne).Copy WsRecap.Range("A" & DerLigRecap) WsRecap.Range("A2:A" & WsRecap.UsedRange.Rows.Count) = collectivite Wk.Close Set Wk = Nothing
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
J'ai remplacé mon code par les éléments que tu m'as donné. Et nouvelle erreur, qui à mon avis n'a absolument rien à voir avec ta solution.
Erreur D'exécution 1004, fichier untel.xls introuvable.
Pourtant ce fichier est bien présent dans mon dossier. J'ai tenté de le supprimer pour essayer ta solution sur les autres, mais toujours la même erreur, avec un autre fichier...
C'est vraiment à y perdre la tête !...
Merci de prendre sur ton temps pour me répondre, c'est vraiment gentil de ta part.
Crysta
Erreur D'exécution 1004, fichier untel.xls introuvable.
Pourtant ce fichier est bien présent dans mon dossier. J'ai tenté de le supprimer pour essayer ta solution sur les autres, mais toujours la même erreur, avec un autre fichier...
C'est vraiment à y perdre la tête !...
Merci de prendre sur ton temps pour me répondre, c'est vraiment gentil de ta part.
Crysta
Voilà la fonction que j'utilise pour récupérer tous les fichiers d'un répertoire connu:
Je passe le chemin du dossier et un tableau par référence que je vais utiliser pour boucler sur mes fichiers.
Ce qui donne pour ton cas
PS: J'ai fait ça de mémoire, il y a peut être des erreurs de syntaxe, mais c'est le principe que j'utilise.
Public Sub RecupFichiers(Byval Chemin As String, Byref mTab()) Dim Fichier As String Dim i as long Fichier = Dir(Chemin & "*.xls*") Do While Len(Fichier) > 0 Redim Preserve mTab(i) mTab(i) = Chemin & Fichier i = i + 1 Fichier = Dir() Loop End Sub
Je passe le chemin du dossier et un tableau par référence que je vais utiliser pour boucler sur mes fichiers.
Ce qui donne pour ton cas
Sub CreationSynthese() Dim mTab() Dim i As Long Dim Wk as Workbook Dim Ws '..... Call RecupFichiers("I:\Volumes de données\", mTab) For i = LBound(mTab()) to UBound(mTab()) Set Wk = Workbooks.Open(mTab(i) '....... Next i End Sub
PS: J'ai fait ça de mémoire, il y a peut être des erreurs de syntaxe, mais c'est le principe que j'utilise.