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 :

Taille Fichier Excel après vba [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 32
    Par défaut Taille Fichier Excel après vba
    Bonjour,

    J'ai effectué un enregistrement de macro (voir ci-dessous) pour me permettre après avoir sélectionné le filtre OK de ma colonne C de copier les colonnes B-I-J et Z et les coller sur une autre feuille via un Bouton de commande


    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
     
    Sub Macro1()
     
    ' Macro1 Macro
     
     
        ActiveSheet.Range("$C$1:$C$2000").AutoFilter Field:=1, Criteria1:="OK"
        Range("B:B,I:I,J:J").Select
        Range("J1").Activate
        Range("B:B,I:I,J:J,Z:Z").Select
        Range("Z1").Activate
        Selection.Copy
        Sheets("Feuille2").Select
        ActiveSheet.Paste
    End Sub
    Pas de soucis, c'est fonctionnel.
    Sauf que, je passe d'un fichier de 270 Ko à un bon gros 16 Mo.
    Ma question étant donc, comment avoir le même résultat sans quadrupler la taille de mon tableau?

    Merci ++

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    Bonjour La Taupe,


    En copiant des colonnes entières, tu copie également la valeur des cellules vides, donc il est normal pour ton fichier excel de grossir.


    Également l'enregistreur de macro réagis à ce que tu fais mais pas a ce que tu veux faire. Il est un bon dépanneur, certes mais pas nécessairement la solution.


    Au lieu de faire une sélection, une copie et un coller, tu peux faire le tout en une seule et unique étape.


    Pense a ceci en code : premier cellule utilisé de la première colonne en code à la dernière cellule utilisé de la dernière colonne.


    Lire ceci qui est indispensable

    https://docs.microsoft.com/fr-be/off...cel.range.copy

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 32
    Par défaut
    Bonjour JPVBA,

    Merci pour ton lien, j'ai trafiqué mon code qui effectivement garde sa taille initiale, effectue bien les copier-coller des colonnes souhaitées mais par contre ne prend pas en considération mon filtre sur la valeur "OK".
    Je dois manquer quelque chose et ne suis pas loin du résultat...

    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
     
    Sub Macro1()
     
     
    Sheets("Feuille 1").Select
    FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
        ' Loop through each row
        For X = 2 To FinalRow
            ' Decide if to copy based on column C
            ThisValue = Cells(X, 3).Value
            If ThisValue = "OK" Then
        Range("B:B,I:I,J:J,Z:Z").Select
        Selection.Copy
        Sheets("Feuille 2").Select
        ActiveSheet.Paste
        End If
        Next X
    End Sub
    Merci !

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    une fois les solutions proposées par mes compères t'auront apporté satisfaction, tu peux également voir les pistes de diminution de taille des fichiers avec le format xlsb

    https://jpcheck.developpez.com/tutor...binaires-xlsb/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 32
    Par défaut
    Jean-Philippe André, merci pour ton conseil.
    Toutefois si je comprends bien, il y aurait des problèmes de compatibilités avec le format XML.
    Cela risque donc de ne pas convenir pour mon projet actuel.
    Mais en tout cas, c'est une excellente chose à savoir.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 32
    Par défaut
    Menhir,
    Pardon, je n'avais pas vu ton message. Un grand merci.
    Ton code a l'air de fonctionner parfaitement et en plus est super light.
    Jje comprends ta remarque mais la copie se faisait naturellement en A1 sur ma feuille 2 (un heureux hasard).
    C'était plutôt le critère qui n'était pas pris en compte (et ça je ne comprends pas).

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Ton code ne permets pas de déterminer la cellule de destination de ta copie.
    Si ce n'est pas A1 de Feuille2, modifie le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Macro1()
        Columns("C").AutoFilter Field:=1, Criteria1:="OK"
        Union(Columns("B"), Columns("I:J"), Columns("Z")).SpecialCells(xlCellTypeVisible).Copy Sheets("Feuille2").Range("A1")
    End Sub
    C'est du code tapé directement sur le forum et non testé. Tu auras donc peut-être du débugage à faire.

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

Discussions similaires

  1. [XL-2010] Créer des fichiers Excel après un filtre sur VBA
    Par aziz1015 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/11/2016, 11h38
  2. envoi mail fichier excel en VBA
    Par natie_49 dans le forum Excel
    Réponses: 1
    Dernier message: 09/07/2007, 19h56
  3. Fermeture fichier excel en vba
    Par avyrex dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/11/2006, 21h30
  4. créer un fichier excell avec VBA(access)
    Par JCH dans le forum Access
    Réponses: 1
    Dernier message: 19/09/2006, 19h07
  5. Ouverture d'un fichier Excel en VBA par Access
    Par illight dans le forum Access
    Réponses: 2
    Dernier message: 02/11/2005, 11h14

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