Copier onglet de plusieurs fichiers d'un classeur Excel 2003

[Résolu/Fermé]
Signaler
Messages postés
76
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
15 janvier 2015
-
Messages postés
76
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
15 janvier 2015
-
Bonjour, je dois copier une en dessous de l'autre des cellules A11:H55 (certaine lignes sont vide)d'onglets du même nom, il peut y avoir de 20 à 60 classeurs qui commencent tous par un mot identique,du même dossier.
On colle a partir de A6 dans le classeur de réception ,il est positionné normalement dans le dossier
Nul en V.B.A je fais ma macro en exécutant les fonctions d'excel 2003 je copie,trie,enlève les doublons et lignes vide.Cela est long et un risque d'erreur
J'ai essayer plusieurs macro copiée dans des forums (pour éviter de sortir et rentrer les classeurs) je n'arrive pas a les adapter
Ci quelqu'un peut me mettre une macro avec explications qui donne en plus le nombre de classeur copier.
JE LA REMERCIE A L'AVANCE

4 réponses

Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 200
Bonjour,

Sans précisions de ta part, tu risque d'attendre longtemps une proposition

par ex. :
onglets du même nom oui, quel nom ?
qui commencent tous par un mot identique oui, quel mot ?
il est positionné normalement dans le dossier pourquoi "normalement"? dans le dossier le m^me que que les classeur source ?

que contient les plages A11: A55 ? pour cela
mettre un classeur source sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse


Michel
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 627
Salut michel_m,

Désolé pour l'incruste, je n'ai pas rafraichi avant de me lancer... Sorry.

En tout cas : Sans précisions de ta part, tu risque d'attendre longtemps une proposition
même avis.
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 627
Bonjour,

Dans ce code, il y a tout un passage à adapter, car votre demande initiale manque cruellement de renseignements.......
Mais bon, p'têtre que ça fonctionne!..... mais pour le coup, ça fait turbiner mes méninges. J'prends une pause!
Option Explicit
'Sources :
    'http://excel.developpez.com/faq/?page=FichiersDir#BoucleFichiers
Sub MichelEliane()
Dim Chemin As String, Fichier As String, Feuille As String, MotCommun As String
Dim Cpt As Integer, DrLig As Long
Dim ClasseurRecap As Workbook, Wsh As Worksheet, FeuilRecap As Worksheet
Dim Temps

Temps = Timer
'ClasseurRecap = notre classeur de récap
Set ClasseurRecap = ThisWorkbook

'---------------------------- A ADAPTER :--------------------------------------
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Set Wsh = ClasseurRecap.Sheets(2) 'Sheets(2) est une feuille du classeur
                              'Recap qui doit être vide!
                              'au besoin changer le num de cette feuille
Set FeuilRecap = ClasseurRecap.Sheets(1) 'Sheets(1) est la feuille du classeur de récap
                                     'dans laquelle tu souhaites regrouper tes données
Chemin = "C:\Documents and Settings\Utilisateur\Bureau\Nouveau dossier\" 'Chemin d'accès au répertoire
Feuille = "Feuil2" 'nom des feuilles des différents classeurs à  regrouper
MotCommun = "Classe" 'classeurs commencent tous par un mot identique mettre ici ce mot
'--------------------------- FIN ADAPTATIONS ---------------------------------
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

'Initialisation du compteur de fichiers traités
Cpt = 0
'Boucle sur tous les fichiers xls du répertoire.
Fichier = Dir(Chemin & "*.xls")
Do While Len(Fichier) > 0
    If Left(Fichier, Len(MotCommun)) = MotCommun Then
        'Incrémentation du compteur de fichiers
        Cpt = Cpt + 1
        ClasseurRecap.Names.Add "plage", RefersTo:="='" & Chemin & "[" & Fichier & "]" & Feuille & "'!$A$11:$H$55"
        With FeuilRecap
            DrLig = .Range("A" & Rows.Count).End(xlUp).Row + 1
        End With
        With Wsh
            .Range("A11:H55") = "=plage"
            .Range("A11:H55").Copy
            FeuilRecap.Range("A" & DrLig).PasteSpecial xlPasteValues
            .Range("A11:H55").Clear
        End With
    End If
    Fichier = Dir()
Loop
MsgBox Cpt & " fichiers ont été traités en : " & Timer - Temps & " secondes."
End Sub


En cas de difficulté d'adaptation, tu dis...
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 200
Bpnjour Frank

je pensais plutôt à employer ADO mais...
De toutes façons, vaut peut-^tre mieux attendre la réaction de Micheleliane, surtout si, comme il le dit, il est nul en VBA...

d'ailleurs, si on emploie ADO, il faudrait la version d'Excel
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 627
Salut,

Oui, bien sur ADO doit fonctionner, certainement mieux que mon exemple. Cependant, je ne maîtrise pas cette technique du tout......
Je te laisse le sujet, puisque tu y es arrivé le premier.
En cas de souci avec mon code, je reste en suivi.
Merci à toi en tout cas.
A+
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 200
Je te laisse le sujet, puisque tu y es arrivé le premier.

non, non, de toutes façons guère de temps cet aprem.... :o)
Messages postés
76
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
15 janvier 2015

MERCI cela fonctionne avec l'original mon exemple ne doit pas être bon
grâce a vous j'ai compris pourquoi il fallait tout préciser,car j'aurais quelques modification a faire
et devrais certainement demander de l'aide. A ce moment la je ferais mon possible pour un model et des explications adéquats.
MERCI a pijaku et michel_m ainsi que toute l'équipe cela a été très rapide de votre part
Probléme RESOLU
Messages postés
76
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
15 janvier 2015

JE PENSAIS TAPER SUR LE BOUTON RESOLU

LE PROBLEME EST RESOLU

MERCI ENCORE
Messages postés
76
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
15 janvier 2015

BONJOUR ET MERCI de toutes ces réponses
Je vais essayer de fournir des données correcte
Je me met au travail
excusez ma lenteur je fais de mon mieux
Pour ADO cela ne me dit vraiment rien
A tout de suite
Messages postés
76
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
15 janvier 2015

je pense avoir réussi a envoyer en plusieurs fois les fichiers dont on prend les données et celui qui les réceptionne mille excuses je ne suis pas meilleur en informatique qu'en V.B.A.
En supplément des problèmes internet
Le chemin est ( C:\Documents and Settings\XP\Mes documents\1INSCRIPTION\seul_ma)
Prend données dans(dossier=1INSCRIPTION),(fichier=seul_"+nom"),(onglet=demande).
Reçois données (dossier=1RECEPTION),(fichier=tout),(onglet=complet)
Ci cela est possible on peut mettre le fichier "tout" dans le même dossier
Je suis en EXCEL 2003
MERCI,MERCI.
Je ne vois pas mes fichiers envoyés
Messages postés
76
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
15 janvier 2015

BONJOUR
J'ai essayé la macro de pijaku a Set Wsh = "ClasseurRecap" après avoir mis tout les noms de classeur avec classeur avant et sans, entre "" ,entre( ) toujours la même erreur
Erreur de compilation, Variable non définie. a plus tard MERCI
je viens de comprendre comment mettre pièce-jointe
https://www.cjoint.com/?CBpwjbvsJPs https://www.cjoint.com/?CBpwmhQNTSI https://www.cjoint.com/?CBpwn0hH7ME
https://www.cjoint.com/?CBpwshVjw9H J'ai réussi j'espère que malgré le mélange que j'ai fait vous comprendrez mes documents a plus tard merci a l'avance micheleliane