Copier onglet de plusieurs fichiers d'un classeur Excel 2003

Résolu
micheleliane Messages postés 77 Statut Membre -  
micheleliane Messages postés 77 Statut Membre -
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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.
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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...
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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+
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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)
      0
    4. micheleliane Messages postés 77 Statut Membre
       
      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
      0
    5. micheleliane Messages postés 77 Statut Membre
       
      JE PENSAIS TAPER SUR LE BOUTON RESOLU

      LE PROBLEME EST RESOLU

      MERCI ENCORE
      0
  3. micheleliane Messages postés 77 Statut Membre
     
    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
    0
    1. micheleliane Messages postés 77 Statut Membre
       
      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
      0
  4. micheleliane Messages postés 77 Statut Membre
     
    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
    0