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 :

optimisation du code vba excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 40
    Par défaut optimisation du code vba excel
    Bonjour,

    J'ai fais une macro qui importe des données d'un fichier excel vers mon classeur, mais la macro est tres lente.


    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
     
    Sub Bouton6_Clic()
    Fichier0 = Application.GetOpenFilename("Fichier Excel, *.csv; *.xlsx;*.xla")
        Sheets("Feuil3").Activate
        Var_chemin = Fichier0
        Fichier1 = ActiveWorkbook.Name
        Workbooks.Open Var_chemin, local:=True
        Fichier2 = ActiveWorkbook.Name
     
     Workbooks(Fichier2).Sheets("Feuil1").Range("P:P").Copy Workbooks(Fichier1).Sheets("Feuil3").Range("BC:BC")
     Workbooks(Fichier2).Sheets("Feuil1").Range("AU:AU").Copy Workbooks(Fichier1).Sheets("Feuil3").Range("BD:BD")
     
        Windows(Fichier2).Activate
        ActiveWorkbook.Close savechanges:=False
        Windows(Fichier1).Activate
        Sheets("Feuil1").Activate
    End sub

    pouvez-vous m'aider merci

    cdt,
    Max

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Ajoutes les ligne en rouge

    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
    Sub Bouton6_Clic()
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Fichier0 = Application.GetOpenFilename("Fichier Excel, *.csv; *.xlsx;*.xla")
        Sheets("Feuil3").Activate
        Var_chemin = Fichier0
        Fichier1 = ActiveWorkbook.Name
        Workbooks.Open Var_chemin, local:=True
        Fichier2 = ActiveWorkbook.Name
     
     Workbooks(Fichier2).Sheets("Feuil1").Range("P:P").Copy Workbooks(Fichier1).Sheets("Feuil3").Range("BC:BC")
     Workbooks(Fichier2).Sheets("Feuil1").Range("AU:AU").Copy Workbooks(Fichier1).Sheets("Feuil3").Range("BD:BD")
     
        Windows(Fichier2).Activate
        ActiveWorkbook.Close savechanges:=False
        Windows(Fichier1).Activate
        Sheets("Feuil1").Activate
    
    
    Application.ScreenUpdating = True
    Application.Calculation =xlCalculationAutomatic
    
    End sub

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Les Activate, Select ...etc ne font qu'augmenter le temps de déroulement du code. travailles avec des variables objets.
    Ensuite, contente toi de la copie des plages utiles et non de la totalité des cellules d'une colonne.

    Ton code
    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 Bouton6_Clic()
    Dim Fichier As Variant
    Dim Wbk As Workbook
     
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Fichier = Application.GetOpenFilename("Fichier Excel, *.csv; *.xlsx;*.xla;*.xls")
    If Fichier <> False Then
        Set Wbk = Workbooks.Open(Fichier, local:=True)
        With Wbk.Sheets("Feuil1").UsedRange
            .Range("P:P").Copy ThisWorkbook.Sheets("Feuil3").Range("BC1")
            .Range("AU:AU").Copy ThisWorkbook.Sheets("Feuil3").Range("BD1")
        End With
        Wbk.Close savechanges:=False
        Set Wbk = Nothing
    End If
    Application.Calculation = xlCalculationAutomatic
    End Sub

  4. #4
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Bonjour

    sauf erreur de ma part il peut aussi effectuer des opérations sur le classeur fermé:

    http://silkyroad.developpez.com/VBA/ClasseursFermes/

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/01/2023, 10h20
  2. Code VBA excel form et modules
    Par Cptnikita dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2007, 10h15
  3. Problème avec un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/10/2007, 16h43
  4. Réponses: 13
    Dernier message: 20/04/2006, 15h37

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