IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Réunir les feuilles des autres fichiers excel dans un seul


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Par défaut Réunir les feuilles excel dans un seul fichier - Optimisation
    Bonjour,

    Mes amis ont un soucis sur Excel. Ils connaissent rien du tout VBA donc j'essaie de faire quelque chose.

    Voila, il y un certains fichiers excel de forme identique avec 7 feuilles toujours de forme identique dans un dossier.
    Les noms des fichier sont en forme : "j*.chain.xls"
    Il faut récupérer la feuille numéro 5 (nom : Global vision) de tout les fichiers et les mettre dans un fichier excel (nommé Coucou par exemple). Les feuilles sont renommées en "j*" (premier termes du nom de fichier)

    De temps en temps, il y aura des fichiers en supplémentaire. Donc je pense à créer un fichier Database.xls. Je vais mettre un bouton : "Update" en feuil 1. Quand on click le bouton, il va récupérer les feuilles "Global vision".

    En gros, au début j'ai : j1.chain.xls, j4.chain.xls, j100.chain.xls ..
    Après j'ai un fichier coucou.exel avec feuille numéro 2 est j1, 3 est j4, 4 est j100 ....

    Je connais un peu VBA, mais j'ai du mal à commencer. J'ai pensé un logarithme :

    1 : Je modifie code pour changer l'adresse
    2 : lister les fichiers qui ont "chain.xls" dans le nom.
    3 : un boucle :
    + pour chaque fichier récupérer le premier termes du nom
    + copier le feuille "Global vision"
    + renommer le et coller dans la feuille numéro 2 de coucou.xls
    (continuer coller les autres feuilles "Global vision" dans les feuilles numéro 3, 4, 5... de coucou.xls)
    Voilà le code : (partie rouge est celle je suis bloqué)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub collect()
    Dim wsT As Worksheet
       Dim wsF As Worksheet
       Dim lRow(1) As Long
       Dim iCol As Integer
       Dim sFolderName As String
       Dim sFname As String
        
        ' insérer l'adresse de dossier
       sFolderName = "D:\documents and Settings\SESA117973\Desktop\Data base collection\"
        'chercher file
       
       sFname = Dir(sFolderName & "j*.xls")
       
       If sFname = vbNullString Then
          MsgBox "No .xls Files In" _
             & Chr(10) & Chr(10) _
             & sFolderName, vbInformation
          Exit Sub
       End If
       
       Set wsT = ThisWorkbook.Sheets("Resultats")
       Do Until sFname = vbNullString
          Workbooks.Open sFolderName & sFname
          Set wsF = Sheets("Global vision")
                For i = 2 To 40
                    Sheets("Global vision").Copy After:=Sheets(i)
                    ActiveSheet.Name = "Position " & i
                    
                Next i
    
        
          ActiveWorkbook.Close False
          sFname = Dir
       Loop
    
    
    End Sub


    Merci bien

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Jette un oeil ici, l'un des deux messages devrait correspondre à ta demande.
    - Le premier exemple rassemble les feuilles de x classeurs dans un classeur unique
    - Le second rassemble les feuilles de x classeurs dans une feuille unique

    Bonne journée

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Par défaut
    Merci bien Mod ouskel'n'or,
    Ca avance !
    Mais comment je peux récupérer le premier termes de nom du fichier pour ensuite changer le nom de feuil ?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par P96O1004 Voir le message
    Merci bien Mod ouskel'n'or,
    Ca avance !
    Mais comment je peux récupérer le premier termes de nom du fichier pour ensuite changer le nom de feuil ?
    Où ça ? Je ne comprends pas ta question. Si c'est dans la boucle "For Each LaFeuille In CL2.Worksheets 'parcours du classeur à copier" LaFeuille contient le nom de chaque nouvelle feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For Each LaFeuille In CL2.Worksheets
        Msgbox LaFeuille.name ' te le montrera
    Je dois m'absenter, je te laisse en de bonnes mains

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Par défaut
    Comme j'ai dit avant :
    "En gros, au début j'ai : j1.chain.xls, j4.chain.xls, j100.chain.xls ..
    Après j'ai un fichier Database.exel avec feuil numéo 1 est Update, feuil numéro 2 est j1, 3 est j4, 4 est j100 ...."

    Donc il faut récupérer le premier termes de nom du fichier (nom fichier : j12.chain.xls, je récupère que j12) pour nommer les feuilles, car dans les fichiers j1, j12, j100, j.... le nom du feuil récupéré est toujours "Global vision".

    Merci man,
    En attendant ta réponse, j'appelle mon copain google.

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour P96O1004, bonjour à tous,


    Mais comment je peux récupérer le premier termes de nom du fichier
    Je ferrai quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub esssai()
     
    MyStr = "J34.xls"
    MyStr = Mid(MyStr, 1, InStr(1, MyStr, ".", vbBinaryCompare) - 1)
     
    Debug.Print MyStr
     
    End Sub
    Edit : dans cet exemple on prend tous les caractères jusqu'au premier point.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] importer des feuilles d'autres fichiers excel
    Par mikadoo57 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/11/2012, 13h54
  2. Réponses: 12
    Dernier message: 22/03/2010, 14h07
  3. Copier les feuilles d'un fichier excel vers un autre
    Par zaki_1982 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/04/2008, 00h47
  4. Réponses: 3
    Dernier message: 27/07/2007, 13h06
  5. Mettre à jour les liens des graphiques d'Excel dans Powerpoint
    Par illight dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/06/2007, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo