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 :

Fichiers créés en boucle en VBA. Le 1er généré est anormalement gros!


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Par défaut Fichiers créés en boucle en VBA. Le 1er généré est anormalement gros!
    Bonjour,

    J'ai besoin de votre aide. J'ai un code qui tourne bien, code que j'ai pu écrire en glanant des infos de certains d'entre vous. Merci à tous.
    J'ai juste un souci avec le premier fichier généré. Le temps d'exécution est excessivement long et le fichier généré plus gros que le fichier à partir duquel on le génère. Une fois ce premier fichier passé, la suite est très rapide et les fichiers de taille raisonnable.
    J'ai un fichier initial (~18Mo) avec 5 onglets que je veux découper en autant de vendeurs qu'il y en a dans la colonne 3 du fichier initial.

    Ce que je ne m'explique pas est que si je lance le code ci-dessous :
    - en mettant For iVendeur = 1 To vendeurs.Count
    le fichier généré pour le vendeur correspondant à l'indice iVendeur=2 fait par exemple 571ko
    - en mettant For iVendeur = 2 To vendeurs.Count
    le fichier généré pour le vendeur correspondant à l'indice iVendeur=2 fait désormais par exemple 21Mo!!!

    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
    51
    52
    53
    54
    55
    56
    57
    For iVendeur = 1 To vendeurs.Count
        nomDossier = nomRepertoire & "\" & dateFichier & "\vep\" & vendeurs(iVendeur)
        If Dir(nomDossier, vbDirectory) = "" Then MkDir nomDossier
     
        nomFichier = nomRepertoire & "\" & dateFichier & "\vep\" & vendeurs(iVendeur) & "\Portefeuille GE.xlsx"
        Application.DisplayAlerts = False
        For iFeuille = 1 To listeFeuilles.Count
            If iFeuille = 1 Then
                Workbooks.Add
                ActiveSheet.Name = listeFeuilles(iFeuille)
            Else
                Sheets.Add After:=Sheets(Sheets.Count)
                ActiveSheet.Name = listeFeuilles(iFeuille)
            End If
        Next iFeuille
        ActiveWorkbook.SaveAs nomFichier
     
        For iFeuille = 1 To listeFeuilles.Count
            Application.CutCopyMode = False
            Workbooks(nomFichierInitial).Activate
            Sheets(listeFeuilles(iFeuille)).Select
     
            Selection.AutoFilter    ' supprime filtrages actifs
            Range("A1").Select
            Selection.AutoFilter Field:=4, Criteria1:=vendeurs(iVendeur) 'filtre valeur cliq
     
            Cells.Select
     
            Selection.Copy
     
            Workbooks("Portefeuille GE.xlsx").Activate
            Sheets(listeFeuilles(iFeuille)).Select
     
            ActiveSheet.Paste
            Application.CutCopyMode = False
            ActiveWorkbook.Save
     
            Range("A1").Select
            Range(Selection, Selection.End(xlToRight)).Select
            Range(Selection, Selection.End(xlDown)).Select
            Cells.EntireColumn.AutoFit
            ActiveWorkbook.Save
     
            Set maplage = Range("A1").CurrentRegion
            ActiveWorkbook.Names.Add Name:=listeFeuilles(iFeuille), RefersTo:=maplage
            Application.CutCopyMode = False
            ActiveWorkbook.Save
     
            Workbooks(nomFichierInitial).Activate
            Sheets(listeFeuilles(iFeuille)).Select
     
            Selection.AutoFilter
        Next iFeuille
        Workbooks("Portefeuille GE.xlsx").Activate
        Application.CutCopyMode = False
        ActiveWorkbook.Close SaveChanges:=True
    Next iVendeur

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Un peu au hasard, remplace les lignes 27 à 29 par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFilter.Range.Copy
    et ajoute en ligne 33 :


  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Par défaut
    Snif, à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFilter.Range.Copy
    il me répond "Erreur d'exécution 424 : Objet Requis"

    Mais merci d'avoir essayé.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Au temps pour moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.AutoFilter.Range.Copy

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Par défaut
    Champion du monde...

    Eternelle reconnaissance

    Bon j'essaierai de m'en souvenir même si j'ai pas bien compris le pourquoi du comment.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Quand tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells.Select
    Selection.copy
    Tu copies toutes les cellules visibles la feuille. Si tu as une cellule modifiée vers le bas de la feuille (ou à droite), tu la recopies.

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

Discussions similaires

  1. Traiter 100 fichiers avec une boucle sous VBA excel
    Par sebastien06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2008, 09h39
  2. ouvrire des fichiers par un boucle for
    Par stiko dans le forum C++
    Réponses: 5
    Dernier message: 08/07/2006, 15h14
  3. Renommer un fichier dans une boucle
    Par Thomas Carrere dans le forum C
    Réponses: 5
    Dernier message: 05/05/2006, 18h20
  4. ouverture de fichier à la vollée en excel vba
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/12/2005, 22h12
  5. [Tomcat]Droit d'accès aux fichiers créés par une servlet
    Par loulouleboss dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 15/07/2004, 14h32

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