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 :

boucle d'ouverture de fichier excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut boucle d'ouverture de fichier excel
    Bonjour à tous voilà je suis un peu nouveau en VBA alors je vous expose mon problème :
    j'ai 2050 fichiers excel (classeurs) et je voudrais créer une boucle qui me prend le premier fichier, copie la troisième feuille du classeur ferme le classeur ouvert, colle cette feuille dans un nouveau classeur (que l'on appel B)... cette même opération se répète jusqu'au dernier fichier excel afin d'obtenir un classeur B avec une ou plusieurs feuilles où sont collés à la suite les données originales des feuilles 3 de chaque fichier.
    Comme tous les fichiers sont dans le même répertoire, j'ai pensé à çà mais la macro ne fait que tourner et ne s'arrête jamais, et quand je l'arrête dans le fichier que je récupère (doc1.xls dans la suite) il n'y a que les résultats d'un seul fichier????
    ma macro :

    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
    Sub Macro_ouverture()
    '
    ' Macro_ouverture Macro
    ' Macro enregistrée le 14/04/2008 par Utilisateur
    ' macro ouvrant un fichier x, sélectionnant feuille et copiant cette feuille dans un nouveau fichier
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
     
        Dim class As Workbooks
        Dim ws As Worksheets
        Dim Repertoire As String, Fichier As String
     
        Repertoire = "D:\romain\travail\Sophy_2004_origine\essai\"
        Fichier = Dir(Repertoire & "*.xls")
        Do While Fichier <> ""
            Set class = Workbooks.Open(Repertoire & Fichier)
            Worksheets(3).Activate
            ActiveSheet.Copy
            ActiveWorkbook.SaveAs FileName:="D:\romain\travail\doc1.xls"
            ActiveWorkbook.Close
        Loop
    End Sub
    j'attends votre aide avec impatience!!!
    merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir, et bienvenue sur nos forums.

    Je ne comprends pas très bien ce que j'ai mis en gras...

    Citation Envoyé par rom05 Voir le message
    ...
    j'ai 2050 fichiers excel (classeurs) et je voudrais créer une boucle qui me prend le premier fichier, copie la troisième feuille du classeur ferme le classeur ouvert, colle cette feuille dans un nouveau classeur (que l'on appel B)... cette même opération se répète jusqu'au dernier fichier excel afin d'obtenir un classeur B avec une ou plusieurs feuilles où sont collés à la suite les données originales des feuilles 3 de chaque fichier....
    Si on copie la 3ième feuille de chacun des 2050 fichiers dans les fichier B, on va, à mon avis, se retrouver avec un fichier B contenat 2050 feuilles...

    Mais comme, par ailleurs, tu dis que les données vont se trouver collées à la suite, on pourrait comprendre que le fichier B n'aura qu'une seule feuille reprenant les données la troisième feuille de chaque fichier, les unes en dessous des autres...



    Si tu pouvais préciser ce que tu souhaites réellement obtenir, nous pourrions t'aider de façon plus efficace...

    P.S.: Je n'ai pas regardé le code...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut
    désolé je me suis sûrement mal expliqué...
    en fait l'idéal çà serait d'avoir la fameuse feuille 3 compilé pour les 2050 fichiers dans une même feuille.. vu que je pense que çà va dépasser largement la limte en ligne d'excel il faudrait peu être l'exporter en fichier texte. merci pour ta réponse en tout cas

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    ça dépend de ce que tu as dans cette feuille 3. si tu nous le disais ?

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut
    é ben dans cette feuille 3 j'ai en ligne le numéro de relevé et en colonne des variables liés à la localisation et la précision de celle-ci.
    Chaque tableau est constitué de la même manière à part le nombre de ligne qui change bien sur entre classeur c'est-à-dire étude. Je voudrais donc répertorier l'ensemble des données de cette feuille localisation en une seule est même feuille : alors comment je peux faire pour 2050 fichier?
    Merci d'avance!!!

  6. #6
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut besoin d'aide
    re,
    voilà le problème soulevé plus haut reste entier, mais je me suis documenté et inspiré de sript de personnes... et ma macro marche mais bug au bout de 2 fichiers :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Sub ouvrir_copier()
    Dim CL1 As Workbook, CL2 As Workbook
    Dim FL1 As Worksheet, FL2 As Worksheet
    Dim Fich As Variant, i As Byte, Rep$
     
        'Répertoire des fichiers à copier
        Rep = "D:\romain\travail\Sophy_2004_origine\essai\"
        Set CL1 = ThisWorkbook
     
        'Ajoute une feuille au classeur destiné à recevoir les données des autres classeurs
        CL1.Sheets.Add
        CL1.ActiveSheet.Name = "localisation_Cumul"
     
        Set FL1 = CL1.ActiveSheet 'Instance le la feuille
     
        'Crée le tableau des fichiers du répertoire
        Set Fich = Application.FileSearch
     
        'Ouverture des fichiers du répertoire
        With Fich
            .LookIn = Rep
            .FileType = msoFileTypeExcelWorkbooks
            If .Execute(SortBy:=msoSortByFileName, _
                SortOrder:=msoSortOrderAscending) > 0 Then
                For i = 1 To .FoundFiles.Count
                    Set CL2 = Workbooks.Open(.FoundFiles(i))
                    DoEvents
     
                    'Parcours la feuille a copié
                    Set FL2 = Worksheets("Localisation")
                        'Dernière ligne où coller les données copiées dans FL2
                        NoLigne = FL1.Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
     
                        'Copie de la plage renseignée de chaque feuille du classeur
                        FL2.Range(FL2.Cells(1, 1), _
                            FL2.Cells(FL2.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row, _
                            FL2.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row)).Copy _
                            FL1.Range("A" & NoLigne)
                        DoEvents
                        Set FL2 = Nothing
                    'Next
                    CL2.Close False 'fermeture du classeur copié
                    DoEvents
                    Set CL2 = Nothing
                Next i
            Else
                MsgBox "Aucun fichier dans le répertoire " & Rep
            End If
        End With
    End Sub
    del'aide s'il vous plait.
    merci

  7. #7
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut de l'aide...
    de l'aide svp...
    est-ce que quelqu'un pourraît me dire comment faire pour ouvrir un classeur aller à la feuille 2 prendre les données de la feuille 2 les copier et les coller dans un nouveau classeur (classeur de récupération des données qui peut être celui de la macro), fermer le classeur précedemment ouvert... en ouvrir un autre et récupérer les données de la feuille 2 et les coller à la suite des données déjà copier dans mon classeur de récupération (même feuille, à la suite)... et ainsi de suite pour 2050 fichiers qui se trouvent tous dans le même répertoire.
    merci d'avance pour ceux qui me répondront...

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    Ce ne serait pas à cause de ta déclaration "i As Byte" ?
    Tu devrais essayer avec integer peut-être.

    Autre piste éventuelle :
    à partir de la 2ème fois où tu relances ton code, il plante à ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CL1.ActiveSheet.Name = "localisation_Cumul"
    car la feuille avec ce nom existe déjà, et il ne peut pas en recréer une deuxième nommée pareil.

    Parce que sinon ton code a l'air de fonctionner, même si ça va être sacrément long avec 2050 fichiers...

  9. #9
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut toujours coincé
    en fait, çà ne bloque au 2° mais à la 3° ouverture de fichier... J'ai essayer sur une autre feuille du classeur et là stupéfaction çà marche du premier au dernier fichier et çà me renvoi bien ce que je lui demande... alors pourquoi çà bloque sur l'autre feuille...
    moi pas comprendre!!!

Discussions similaires

  1. Ouverture de fichier Excel avec macros
    Par Mathusalem dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/06/2006, 11h39
  2. Ouverture de fichiers excel par ordre alphabetique
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 30/12/2005, 16h54
  3. Réponses: 5
    Dernier message: 11/11/2005, 09h47
  4. Ouverture/écriture fichier Excel
    Par mathieu04 dans le forum Windows
    Réponses: 17
    Dernier message: 07/06/2004, 11h23

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