copier la même colonne provenant d'une centaine de fichiers

  • Initiateur de la discussion Initiateur de la discussion john4478
  • 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 !

J

john4478

Guest
Bonjour à tous,

Je suis plus que débutant pour les macros excels... et je dois en faire une pour effectuer l'action suivante, ceci sur des centaines de fichiers .xls qui se trouvent tous dans le même répertoire :

je dois tout simplement copier les résultats figurant dans la colonne H, ceci pour tous les fichiers, et mettre ces résultats dans un seul fichier, dans une même colonne... Je pense que cela ne doit pas être très compliqué, mais après des jours de recherche, je commence à désespérer...
J'ai vu une macro de Michel dans un poste qui permet de retourner la cellule A1 de plusieurs fichiers, ceci sans les ouvrir, ce qui est très pratique pour moi... mais je n'arrive pas à changer et mettre que je veux toutes les données de la colonne....

Merci pour votre aide...
john
p.s. je précise que j'ai un mac.
 

Pièces jointes

Re : copier la même colonne provenant d'une centaine de fichiers

Bonjour le Forum, John,

J'ai quelques questions à te poser pour bien comprendre.

- Tous les fichiers sont dans un même répertoire OK. Les fichiers ont-ils une structure de nom identique genre : fichier001, fichier002, etc ... ?

- Y'a t'il un seule feuille dans les fichiers sources, ou plusieurs ? Si plusieurs on prend toutes les colonnes H de toutes les feuilles ou seulement d'une seule. Si une, laquelle ?

- As-tu plus de 255 fichiers à traiter ?

Merci d'avance de tes réponses, je travaille sous PC, mais je pense que les macros doivent fonctionner sur les deux. Si quelqu'un peut me valider ce point avant que je regarde ce que je peux faire ?

Merci d'avance,

@+

Creepy
 
Re : copier la même colonne provenant d'une centaine de fichiers

bonsoir,

merci de m'aider,

mes fichiers n'ont pas vraiment une structure de nom identique: j'ai par exemple : 122dmod, 132dmod (où les 2premiers chiffres correspondent au numéro du fichier, le 3ème va avec le d (2dimensions)...)

ils sont tous dans le même dossier et ne possèdent qu'une feuille. Il y a quelques différences entre PC et mac, mais je pense que c'est surtout au niveau de la localisation des fichiers par exemple (où l'on a des : au lieu des /)...
J'ai environ 150 fichiers..

Merci beaucoup... je vais voir aussi les liens que tu m'as mis Michel...
 
Re : copier la même colonne provenant d'une centaine de fichiers

Hello

J'ai essayé le programme créé par Thierry et Michel... d'abord sur mac... et cela ne marche pas... après j'ai essayé sur pc.. et cela marche mais cela me donne des datesn (on dirait) comme résultats... je ne comprends pas bien... de plus, j'ai un problème avec le nom de ma feuille de calcul qui a chaque fois un nom différent (une seule feuille par classeur)...

merci pour l'aide

john
 
Re : copier la même colonne provenant d'une centaine de fichiers

bonsoir

Je n'ai pas de MAC et ne pourrai donc malheureusement pas t'aider pour cette partie.


mes fichiers n'ont pas vraiment une structure de nom identique: j'ai par exemple : 122dmod, 132dmod (où les 2premiers chiffres correspondent au numéro du fichier, le 3ème va avec le d (2dimensions)...)
Je ne parlais pas des noms mais du contenu des fichiers.


et cela marche mais cela me donne des datesn (on dirait) comme résultats... je ne comprends pas bien...
Difficile de répondre sans voir tes classeurs


de plus, j'ai un problème avec le nom de ma feuille de calcul qui a chaque fois un nom différent (une seule feuille par classeur)...
Le fil de discussion indiqué dans mon premier message propose des exemples pour récupérer le nom de la feuille dans un classeur fermé.



Bonne soirée
MichelXld
 
Re : copier la même colonne provenant d'une centaine de fichiers

Hello Michel

merci de m'aider,
j'ai mis un classeur type en annexe(j'ai dû couper une partie des lignes à cause de la taille du fichier...). ... je veux par exemple récupérer toutes les données contenues dans la colonne G (moyenne) et cela pour tous mes fichiers... et mettre ces données dans un seul fichier... Je ferai la même chose pour d'autres colonnes. Le nombre de données dans chaque fichier peut varier...

et donc quand j'ai essayé le programme de thierry et toi, j'obtiens comme résultat des "dates" et non mes résultats... ceci sans ouvrir les fichiers... je ne comprends pas.
merci encore et bonne soirée

john
 

Pièces jointes

Re : copier la même colonne provenant d'une centaine de fichiers

bonsoir


Tu peux tester cette procédure:
J'ai pris pour hypothèse que l'entete de la colonne G, dans chaque classeur, est nommé "moy" comme dans le fichier que tu as joint.

Code:
 'Nécéssite d'activer la référence Microsoft ADO Ext x.x for DLL and Security
'Nécéssite d'activer la référence Microsoft ActiveX Data Objects x.x Library
 
Dim Direction As String, Fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim Cn As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim oCat As ADOX.Catalog
 
Direction = "C:\Documents and Settings\mimi\dossier\02dvracmod 3"
Fichier = Dir(Direction & "\*.xls", 0)
 
 
'Boucle sur les fichiers du répertoire
Do While Len(Fichier) > 0
    
Set Cn = New ADODB.Connection
    '--- Connection ---
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Direction & "\" & Fichier & _
            ";Extended Properties=Excel 8.0;"
        .Open
    End With
    '-----------------
 
    '--- Récupère le nom de la feuille:
    'Cet exemple suppose que le classeur contient une seule feuille et
    'aucune plage nommée.
    Set oCat = New ADOX.Catalog
    Set oCat.ActiveConnection = Cn
    NomFeuille = oCat.Tables(0).Name
 
 
    'Définit la requête:
    'récupère les données de la colonne G dons l'entête s'appelle "moy"
    texte_SQL = "SELECT moy FROM [" & NomFeuille & "]"
 
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
 
    Cells(Range("A65535").End(xlUp).Row + 1, 1).CopyFromRecordset Rst
 
    Set oCat = Nothing
    Set Rst = Nothing
    '--- Fermeture connection ---
    Cn.Close
    Set Cn = Nothing
   
    Fichier = Dir()
Loop
 
MsgBox "Terminé"




et donc quand j'ai essayé le programme de thierry et toi, j'obtiens comme résultat des "dates" et non mes résultats... ceci sans ouvrir les fichiers... je ne comprends pas
Tu as vérifié le format des cellules résultat ?



Bonne soirée
MichelXld
 
Re : copier la même colonne provenant d'une centaine de fichiers

Bonjour

merci beaucoup pour le travail accompli.. je ne pensais pas que cela demandait un code si "long"...
J'ai pourtant un problème lorsqu'il arrive à cette ligne :

Cells(Range("A65535").End(xlUp).Row + 1, 1).CopyFromRecordset Rst

il me dit "erreur d'exécution 1004. La méthode Range de l'objet global a échoué... je ne comprends pas vraiment cette ligne donc je ne sais que faire...

effectivement, avec le programme, le fichier final obtenu donne des cellules avec format date... en changeant ce détail cela marche bien (je suis vraiment débutant!!!!!). A part que je devrai pour tous mes fichiers changer le nom de la feuille car il faut le rentrer dans l'interface. Je pense donc qu'il doit être le même pour tous si je veux tous traiter mes fichiers en même temps...

merci pour tout
john
 
Re : copier la même colonne provenant d'une centaine de fichiers

bonjour

Tu peux faire un essai en remplaçant

Code:
Cells(Range("A65535").End(xlUp).Row + 1, 1).CopyFromRecordset Rst

par

Code:
ActiveSheet.Cells(ActiveSheet.Range("A65535").End(xlUp).Row + 1, 1).CopyFromRecordset Rst


Bonne soirée
MichelXld
 
Re : copier la même colonne provenant d'une centaine de fichiers

Bonjour Michel,

Désolé pour la réponse tardive... j'étais loin pendant une semaine pour un meeting... et maintenant... pas mal de choses marchent avec ton code merci beaucoup... avec le programme (de thierry et toi aussi) mais je ne comprends pas pourquoi, certains fichiers ne retournent aucune donnée... alors qu'ils ont la même configuration...

je te mets une fraction (car trop lourd sinon) d'un fichier qui marche(12dvracmod) et un qui ne marche pas(102dvracmod), si tu arrives à trouver le problème, cela serait vraiment sympa... je désespère presque là...

Merci encore

Bonne journée
john
 

Pièces jointes

Re : copier la même colonne provenant d'une centaine de fichiers

bonsoir


Le problème est du aux valeurs d'erreurs #DIV/0! contenues dans les premières cellules de la colonne.
Lorsque tu fais une requète dans un classeur fermé, c'est le type majoritaire dans les 8 premières lignes qui définit le type de données à récupérer: les autres données de la colonnes seront considérées comme NULL (vide).
Si la colonne contient 4 valeurs numériques et 4 valeurs texte, la requête renvoie 4 nombres et 4 valeurs NULL.
Dans ton cas toutes les données sont considérées comme NULL.

La seule solution consiste à activer l'option d'importation IMEX=1. Exemple: ";extended properties=""Excel 8.0;IMEX=1""" .
Les données seront importées comme du texte et les valeurs #DIV/0! seront aussi importées.

Pour ton exemple:

Code:
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Direction & "\" & Fichier & _
            ";extended properties=""Excel 8.0;IMEX=1"""
        .Open
    End With



Sinon, tu peux aussi essayer en utilisant la fonction QueryTable.



Bonne soirée
MichelXld
 
Re : copier la même colonne provenant d'une centaine de fichiers

Hello Michel,
je vais donc faire en important les données comme du texte... J'ai appris pas mal de choses pour finir 🙂
merci mille fois pour l'aide.

john
 
- 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

Retour