Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier des cellules de plusieurs autres fichiers

  • Initiateur de la discussion Initiateur de la discussion Mercutio7
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Mercutio7

Guest
Bonjour,

Merci tout d'abord pour ce contenu partagé - il est très enrichissant.

Je vous soumets le problème suivant auquel je pense qu'il existe une solution simple, que j'ignore évidemment 🙂

Je souhaite copier le contenu de plusieurs fichier excel dans un seul.
Ces fichiers sources ont un nom similaire (ex : bidule01.xls, bidule02.xls...) et un contenu qui peut varier (en nombre de lignes uniquement).

J'ai trouvé sur le forum des solutions par vba qui sont difficiles à comprendre pour moi, je cherche donc une manip excel, quitte à faire une part des opérations à la main.

Je pensais mettre en place la solution suivante :
- Lister dans un premier onglet du fichier cible tous les noms des fichiers sources
- A partir de ces noms de fichiers (désormais des chaînes de caractère), aller copier les fichiers sources. Pour l'instant je ne m'occupe pas du nombre de lignes, je pense que je peux gérer. Mais je n'arrive pas à aller chercher une plage de cellules dans un autre fichier à partir du nom du fichier connu dans une cellule voisine...

Je dois passer pour un noob, mais je prends le risque 😀
Auriez-vous cette petite formule magique ?

Bonne journée,
Mercutio
 
Re : Copier des cellules de plusieurs autres fichiers

Bonjour Mercutio7,

le problème est qu'en "formule", c'est pas forcément évident à faire, et beaucoup plus simple en VBA...

🙂 vi vi vi... et c'est bien conscient de ça que je m'échine à faire tourner le code vba qui se trouve dans la FAQ depuis un jour et demi... sans succès pour l'intant (je n'ai jamais fait de vba).

Tu me confirmes qu'il n'y a pas de manip sous excel permettant de récupérer les valeurs d'une plage d'un autre fichier quand on a (construit par concaténation) le nom de fichier dans une cellule voisine ?
 
Re : Copier des cellules de plusieurs autres fichiers

si, ça doit être possible, mais si tes noms de fichier sont du texte, alors il faudrait passer par la fonction INDIRECT, or INDIRECT ne fonctionne pas si le fichier est fermé, alors il faut se tourner vers une fonction personnalisée INDIRECT.EXT... bref, pas mal de soucis en perspectives...
Maintenant si tu n'est pas complètement réfractaire à VBA et que tu est prêt à apprendre, on peut t'aider à mettre en place la macro VBA en t'explquant les principes de fonctionnement.
 
Re : Copier des cellules de plusieurs autres fichiers

Maintenant si tu n'est pas complètement réfractaire à VBA et que tu est prêt à apprendre, on peut t'aider à mettre en place la macro VBA en t'explquant les principes de fonctionnement.
Merci ! Tu me donnes du courage 😀
Je prends donc mon courage à deux mains et je plonge !
On verra le cas échéant si des problèmes résistent 😎
 
Re : Copier des cellules de plusieurs autres fichiers

Maintenant si tu n'est pas complètement réfractaire à VBA et que tu est prêt à apprendre, on peut t'aider à mettre en place la macro VBA en t'explquant les principes de fonctionnement.
Ok, je suis sur la bonne voie.
Je bute sur un soucis de noob : le comptage des ligne de chacun de mes fichiers sources.
Si tu as le temps de lire ce qui suit, ça pourrait m'aider.

Je crois devoir utiliser le code suivant :
Code:
NbLignes As Integer
NbLignes = ActiveSheet.UsedRange.Rows.Count
'je débug avec :
MsgBox "Nb lignes : " & NbLignes
Bon... il me trouve 1 ligne systématiquement.
J'ai utilisé le même code sans UsedRange et il m'a retourné avoir dépassé la valeur max.

Un bon appétit !
Mercutio.
 
Re : Copier des cellules de plusieurs autres fichiers

le type Integer est limité à 32000 et quelques

en mettant le code

NbLignes = ActiveSheet.UsedRange.Rows.Count

tu lui de mande de compter toutes les lignes de la feuille, même les vides, donc il trouve 65536

le type Long est limité à 2 millions et quelques, ce qui permet de gérer des entiers plus grands

Bizarre qu'avec UsedRange il trouve 1...
ta feuille contient combien de lignes remplies ?
il y a des lignes vides intercalées ? y a-t-il une colonne qui est toujours remplie ?

evidement, ce serait plus simple si tu nous postait un fichier exemple bidule01.xls pour qu'on puisse voir le type de contenu. (même si tu effaces des lignes pour qu'il fasse moins de 48 Ko, sans données confidentielles)
 
Re : Copier des cellules de plusieurs autres fichiers

Voici un exemple de fichier. Il s'agit d'une liste de tests. J'ai plusieurs fichiers similaires avec de 1 à 20 lignes environ.

Que fait la méthode UsedRange en particulier ?
 

Pièces jointes

Re : Copier des cellules de plusieurs autres fichiers

Bonjour à tous


Un fichier exemple qui pourrait peut-être t'aider

1) Décompresses les fichiers dans C:\Temp

2) Lances combinerCLSR.xls

Si tu as des questions, n'hésites pas.

PS: La feuille MENU est protégée (sans mot de passe)

(Présence de code VBA dans la feuille MENU
WorkSheet_Activate / WorkSheet_DeActivate)
 
Re : Copier des cellules de plusieurs autres fichiers

Bon, c'est dit, je n'arrive pas à identifier chacun de mes fichier sources.
Je dispose du code suivant qui permet de mettre le nom de chaque fichier dans une case d'un tableau :
Code:
Dim NbFichiers As Integer
Dim Tableau() As String
Dim Direction As String

Application.ScreenUpdating = False
Direction = Dir(ThisWorkbook.Path & "\*.xls")
Do While Len(Direction) > 0 'liste tous les classeurs du repertoire
    NbFichiers = NbFichiers + 1
    ReDim Preserve Tableau(1 To NbFichiers)
    Tableau(NbFichiers) = Direction
    Direction = Dir()
Loop

Je croyais naïvement pouvoir récupérer le nombre de ligne de chaque fichier source de la façon suivante (à l'intérieur d'une boucle) :
Code:
NbLignes = Tableau(X).UsedRange.Rows.Count

De même, j'espère pouvoir copier mes cellules sources sur mon fichier cible de la façon suivante :
Code:
<Fichier source>.Range(Cell(2, 1) & ":" & Cell(NbLignes, 3)).Copy ActiveSheet.Range(Cell(Compteur, 1) & ":" & Cell(Compteur + NbLignes - 1, 3))
Dans cette dernière ligne de code mon problème est double :
- comment désigner le fichier source ?
- la méthode Range() peut-elle être utilisée combinée avec Cell() ?

Merci pour ton aide.
Mercutio.
 
Re : Copier des cellules de plusieurs autres fichiers


Merci !
Malheureusement, la ligne
Code:
With Application.FileSearch
génère une erreur : "Cet objet ne gère pas cette action".
(le code est bien dans c:\temp)
As-tu une idée ?
Mercutio.
 
Re : Copier des cellules de plusieurs autres fichiers

Re


Et avec ton code remanié, cela donne quoi

Code:
Sub liste_fic()
Dim NbFichiers As Long
Dim Tableau() As String
Dim Direction As String
Dim x
Dim NLG
Dim i As Long
Application.ScreenUpdating = False
[B]'à décommenter [/B]
'Direction = Dir(ThisWorkbook.Path & "\*.xls")
Direction = Dir("C:\Temp" & "\*.xls")
Do While Len(Direction) > 0 'liste tous les classeurs du repertoire
    NbFichiers = NbFichiers + 1
    ReDim Preserve Tableau(1 To NbFichiers)
    Tableau(NbFichiers) = Direction
    Direction = Dir()
Loop
For i = 1 To UBound(Tableau)
Workbooks.Open ("C:\Temp\" & Tableau(i))
With ActiveWorkbook
x = x & Sheets(1).UsedRange.Rows.Count & "|"
.Close SaveChanges:=False
End With
Next
NLG = Split(x, "|")
Range("A1:A" & NbFichiers) = Application.Transpose(Tableau)
Range("B1:B" & NbFichiers) = Application.Transpose(NLG)
End Sub

Ma précédente PJ fonctionne très bien sous Excel 2000.

Quelle version d'Excel utilises-tu ?
 
Re : Copier des cellules de plusieurs autres fichiers

Re

Et avec ton code remanié, cela donne quoi

Ma précédente PJ fonctionne très bien sous Excel 2000.

Quelle version d'Excel utilises-tu ?

Merci tout d'abord !
Je vais regardé pour le remaniement du code.
Effectivement, sous 2000 c'est impec ! je l'ai testé sous 2003... sorry.
Je regarde tout ça des fois que je m'en tire seul ! 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…