Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Testeur

XLDnaute Nouveau
Bonjour,

Je cherche à copier la valeur de plusieurs cellules dans des fichiers fermés dans un classeur ouvert. Ces cellules se trouvent au même emplacement dans les différents fichiers.

Les cellules doivent être copiées en ligne dans le fichier "bilan". Au final, les données de chaque fichier source correspondent donc à une ligne du fichier "bilan".

Tous les fichiers se trouvent dans le même répertoire.

J'ai cherché sur internet, mais soit la solution indiquée ne fonctionne pas soit je ne comprends pas les indications.

Merci par avance de votre aide, je suis un newbie en la matière et en plus c'est urgent.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Re,

Vous indiquez que vous êtes sur Excel 2002.

Normalement il s'agit d'une version pour MAC.

Alors si vous êtes sur MAC c'est normal que ça ne fonctionne pas, il y a toujours plein de problèmes.

Je ne peux rien faire de plus.

A+
 

Testeur

XLDnaute Nouveau
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Maintenant, je peux aller jusqu'à 10 fichiers...mais après ça bloque.
C'est incompréhensible, sans rien changer en plus.
A ce rythme, je ne suis pas prêt à agréger mes centaines de fichiers :D

Il y a quelque chose qui m'échappe, mais quoi ??
 

job75

XLDnaute Barbatruc
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Re,

Ah mais c'est beaucoup plus rapide sans ExecuteExcel4Macro.

Les formules mémorisées sont entrées en bloc dans les cellules :

Code:
Sub CopierFichiersFermés()
Dim chemin$, w As Worksheet, feuil$, P As Range, ncol As Byte
Dim fichier$, lig&, rest$(), col As Byte, c As Range, f$
chemin = ThisWorkbook.Path & "\"
Set w = Feuil2 'CodeName de la feuille Synthèse
feuil = "Feuil1" 'nom à adapter
Set P = [A30,F30,A32,F32,F36:F37,F39,F41:F42,F44,C47:F66]
ncol = P.Count + 1
fichier = Dir(chemin & "*.xls*") '1er fichier du dossier
While fichier <> ""
  If fichier <> ThisWorkbook.Name Then
    lig = lig + 1
    ReDim Preserve rest(1 To ncol, 1 To lig)
    col = 1
    For Each c In P
      f = "='" & chemin & "[" & fichier & "]" & feuil & "'!" & c.Address
      rest(col, lig) = f
      col = col + 1
    Next
    rest(col, lig) = fichier 'nom du fichier en colonne 91
  End If
  fichier = Dir 'fichier suivant du dossier
Wend
'---restitution---
If lig Then w.[A2].Resize(lig, ncol) = Application.Transpose(rest)
w.Rows(lig + 2 & ":" & w.Rows.Count).Delete
w.UsedRange = w.UsedRange.Value 'supprime les formules
w.Activate
End Sub
Sur 400 fichiers sources la macro s'exécute en 14 secondes !!

Fichier (2) joint.

A+
 

Pièces jointes

  • Synthèse avec tableau VBA(2).xls
    42.5 KB · Affichages: 34
  • Source2.xls
    28.5 KB · Affichages: 32
  • Source1.xls
    28.5 KB · Affichages: 25
  • Source2.xls
    28.5 KB · Affichages: 33
  • Source1.xls
    28.5 KB · Affichages: 28
  • Source2.xls
    28.5 KB · Affichages: 31
  • Source1.xls
    28.5 KB · Affichages: 24

job75

XLDnaute Barbatruc
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Re,

Il y a quelque chose qui m'échappe, mais quoi ??

Etes-vous bien sûr que toutes les feuilles à traiter de vos fichiers sources se nomment "Feuil1" ?

Et que dans leur dossier il n'y a que ces fichiers + le fichier de la macro ?

Edit : vous auriez pu répondre à mon post #16 non ?

A+
 
Dernière édition:

Testeur

XLDnaute Nouveau
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Excusez moi,

Je n'ai pas pu répondre avant, je suis sur PC sous windows 7, et j'ai bien excel 2002 SP3.
je vais tester le nouveau code.

Merci encore
 
Dernière édition:

Testeur

XLDnaute Nouveau
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Dans mon dossier, il n'y a que mes fichiers sources et le fichier de la macro. J'ai renommé dans la macro 'Feuil1' par le nom de la feuille concerné dans les fichiers sources.

De même avec le nouveau code, à partir d'un certain nombre de fichiers, cela ne marche plus avec l'erreur suivante:

erreur d'exécution '-2147417848 (80010108)'
La méthode 'Resize' de l'objet 'Range' a échoué

Avec la partie soulignée : w.[A2].Resize(lig, ncol) = Application.Transpose(rest)
 

job75

XLDnaute Barbatruc
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Re,

Le mieux serait de joindre le fichier synthèse avec la macro que vous utilisez ainsi qu'un fichier source pour qu'on puisse tester.

A+
 

Testeur

XLDnaute Nouveau
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Voici les fichiers, une source et le fichier macro.

Merci
 

Pièces jointes

  • Synthèse avec tableau VBA(1).xls
    34 KB · Affichages: 25
  • Synthèse avec tableau VBA(1).xls
    34 KB · Affichages: 28
  • Synthèse avec tableau VBA(1).xls
    34 KB · Affichages: 24
Dernière édition:

job75

XLDnaute Barbatruc
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Re,

Pourquoi utilisez-vous la version (1) au lieu de la version (2) pour le fichier "Synthèse avec tableau VBA" ?

Il faut maintenant 184 colonnes, mais ça n'a aucune importance.

J'ai testé sans aucun problème 100 copies du fichier source 001.xls avec les versions (1) et (2).

Pour votre bug essayez peut-être avec .Formula :

Code:
'---restitution---
If lig Then w.[A2].Resize(lig, ncol).Formula = Application.Transpose(rest)
'----
A+
 

Testeur

XLDnaute Nouveau
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

J'ai essayé avec formula, il me retourne:
Erreur d'exécution 1004
La formule que vous avez tapé contient une erreur

ligne surlignée: rest(col, lig) = ExecuteExcel4Macro(f)



Avec la 2ème version :
toujours erreur d'exécution 1004
et la ligne soulignée: w.[A2].Resize(lig, ncol).Formula = Application.Transpose(rest)


Je suis complètement paumé, vous utilisez quelle version de excel ?
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Re,

On peut tout imaginer, mais tout ce que j'ai utilisé est très basique.

Une chose encore.

Vérifiez qu'il n'y a pas des feuilles avec un accent circonflexe => "Tableau-Enquête".

Sur Excel 2003 ça n'a pas d'importance : comme il n'y a qu'une feuille, Excel adapte le nom quel que soit le texte de "feuil".

Mais sur Excel 2002 ce n'est peut-être pas le cas...

A+
 

Testeur

XLDnaute Nouveau
Re : Copier la valeur de plusieurs cellules de fichiers fermés dans un autre fichier

Merci encore,

En fait mes fichiers sources ne font pas 40ko, mais 320ko. Ils contiennent plusieurs fonctions et plusieurs feuilles qui contiennent des données mais que que j'ai du enlever pour des raisons de confidentialité.
 

Discussions similaires

Statistiques des forums

Discussions
312 381
Messages
2 087 818
Membres
103 666
dernier inscrit
gjoanou