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:

Testeur

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

Je précise qu'avec excel 2013, je peux agréger jusqu'à 20 fichiers, c'est un progrès ! :D

Mais il est toutefois bien plus lent que Excel 2002 qui a exécuté de façon instantané, la version de 2013 met plus d'une minute à agréger 20 fichiers.
 
Dernière édition:

Testeur

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

En plus je suis obligé, que ce soit avec la version de 2002 ou de 2013, de rajouter les fichiers au fur et à mesure dans le dossier, si je mets le maximum d'un coup (10 ou 20) ça bloque direct.
 

job75

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

Re,

En plus je suis obligé, que ce soit avec la version de 2002 ou de 2013, de rajouter les fichiers au fur et à mesure dans le dossier, si je mets le maximum d'un coup (10 ou 20) ça bloque direct.

Là c'est le pompon, qu'est-ce que c'est que cette histoire ?

Serait-ce dû à l'antivirus ?

A+
 

Testeur

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

Non il n'y a bien qu'un seul fichier de synthèse dans le répertoire.
Et j'ai essayé en désactivant l'antivirus, pareil.
 
Dernière édition:

job75

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

Re,

Puisqu'il y a problème sur Excel 2002 et Excel 2013 il devrait exister sur 2003 ou 2010.

Vous pouvez zipper votre dossier qui beugue et me l'envoyer par MP sur cjoint.com

J'ai compris qu'il est confidentiel, je ne le diffuserai pas sur le fil.

A+
 

Testeur

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

Super Merci beaucoup, je suis désolé de vous avoir dérangé, j'ai trouvé le blocage, c'était le nom d'un de mes fichiers qui avait une apostrophe ! c'est ce qui bloquait excel !

Merci infiniment pour votre aide

Juste pour mon information, pourriez vous m'expliquez grosso modo le principe des fonctions que vous avez utilisé si je n'abuse pas trop. :)

C'est pour que je puisse comprendre et l'adapter à d'autres situations, je constate que vous maîtrisez parfaitement le logiciel.
 
Dernière édition:

job75

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

Re,

Ah oui, une apostrophe dans le nom du fichier je n'y aurais pas pensé :rolleyes:

Il suffit pour la liaison de remplacer l'apostrophe par 2 apostrophes :

Code:
fichier = Replace(fichier, "'", "''")
La version (2) corrigée :

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 = "Tableau-Enquete" 'nom à adapter
Set P = [A26,F26,A30,F30,C40:F42,F45,F46,F51,C54:F94]
ncol = P.Count + 1 '184 colonnes
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
    fichier = Replace(fichier, "'", "''")
    For Each c In P
      f = "='" & chemin & "[" & fichier & "]" & feuil & "'!" & c.Address
      rest(col, lig) = f
      col = col + 1
    Next
    rest(col, lig) = Replace(fichier, "''", "'") 'nom du fichier en dernière colonne
  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
Edit : sur 400 fichiers sources la macro s'exécute en 28 secondes (Excel 2003).

La boucle While/Wend ne prend que 0,8 seconde, c'est la restitution du tableau qui prend du temps.

Le principe de la macro est simple :

- on stocke les formules de liaisons dans un tableau que l'on redimensionne au fur et à mesure

- il faut savoir que seule la 2ème dimension du tableau peut être modifiée, donc il faut un tableau transposé

- à la fin on restitue le tableau (transposé) en bloc dans la feuille, puis on supprime les formules.

Bonne nuit.
 
Dernière édition:

Testeur

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

Merci,

En fait je dois déjà modifier le programme:

je dois copier les cellules d'une autre façon comme indiqué dans le fichier "bilan" en pièce jointe.

Il faut faire cette copie pour chaque fichier source, donc ça fait 40 lignes par fichier source. Est-il possible de ne copier que les lignes BV remplies ?

Merci par avance
 

Pièces jointes

  • bilan.xls
    26 KB · Affichages: 32
  • source.xls
    36.5 KB · Affichages: 31
  • bilan.xls
    26 KB · Affichages: 42
  • source.xls
    36.5 KB · Affichages: 35
  • bilan.xls
    26 KB · Affichages: 47
  • source.xls
    36.5 KB · Affichages: 35
Dernière édition:

job75

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

Bonjour Testeur,

Ce n'est plus le même problème, il sera peut-être plus judicieux d'ouvrir chaque fichier.

Créez donc une nouvelle discussion.

Il faudra y expliquer pourquoi sur les colonnes A à N vous copiez 40 fois la même valeur, car ça paraît très farfelu.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 388
Messages
2 087 864
Membres
103 672
dernier inscrit
ammarhouichi