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 :

Demande Optimisation Code Boucle For


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 7
    Par défaut Demande Optimisation Code Boucle For
    Bonjour,

    J'ai crée un début de macro, dont l'objectif est d'aller chercher dans des fichiers que je ne souhaite pas ouvrir (30 fichiers à ouvrir serait vraiment trop lourd), présent dans un folder intitulé "mon_dossier" (l'idée étant que la macro est dans le folder parent de "mon_dossier"), et mon code consiste à parcourir dans chacun des fichiers de ce dossier la colonne D de l'onglet "Solde".

    Le souci est que même avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    BoEcran = Application.ScreenUpdating
    BoBarre = Application.DisplayStatusBar
    iCalcul = Application.EnableEvents
    BoEvent = Application.EnableEvents
    BoSaut = ActiveSheet.DisplayPageBreaks
     
    Application.ScreenUpdating = False
    Application.DisplayStatusBar = False
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
    Le code met vraiment longtemps à tourner. Je me demande donc s'il n'existe pas une possibilité de gagner du temps, en faisant autrement qu'avec 2 boucles For.

    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
     
    Sub test()
    BoEcran = Application.ScreenUpdating
    BoBarre = Application.DisplayStatusBar
    iCalcul = Application.EnableEvents
    BoEvent = Application.EnableEvents
    BoSaut = ActiveSheet.DisplayPageBreaks
     
    Application.ScreenUpdating = False
    Application.DisplayStatusBar = False
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
     
    Dim ws As Worksheet
    Dim monFichier As String
    Dim wb As Workbook
    Dim chemin As String
    Dim i As Integer
    Dim nom As String
    Dim FichierMain As String
     
    Set wb = Workbooks(ThisWorkbook.Name)
    Dim sh As Worksheet
    chemin = ThisWorkbook.Path & "\mon_dossier\"
     
    monFichier = Dir(chemin & "*.xlsx", vbNormal)
     
    Do While monFichier <> ""
        Debug.Print monFichier
            onglet = Split(monFichier, "_")(4)
     
            wb.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = onglet
     
           For Each sh In ActiveWorkbook.Worksheets
           'R?cup?rer uniquement les valeurs de la ligne 8 ? 150
                For i = 8 To 150
                    'Montant
                    j = 4
                    Cells(i - 4, j - 2).Formula = "='" & ThisWorkbook.Path & "\[" & monFichier & "]Solde'!R" & i & "C" & j:
                Next
            Next sh
        monFichier = Dir
    Loop
     
    Application.ScreenUpdating = True 'Facultatif
    BoEcran = Application.ScreenUpdating = BoEcran
    BoBarre = Application.DisplayStatusBar = BoBarre
    iCalcul = Application.EnableEvents = iCalcul
    BoEvent = Application.EnableEvents = BoEvent
    BoSaut = ActiveSheet.DisplayPageBreaks = BoSaut
     
    End Sub
    Merci d'avance pour votre aide.

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    La solution la plus indiquée est "PowerQuery" (à activer dans les options XL et à lancer via 'Données' ou 'Data' dans ruban)
    Essayez la, vous adorerez.

Discussions similaires

  1. Optimisation des boucles for
    Par Kikouyou1080 dans le forum Général Python
    Réponses: 5
    Dernier message: 04/06/2010, 17h16
  2. optimiser une boucle for
    Par bakaratoun dans le forum MATLAB
    Réponses: 2
    Dernier message: 28/01/2010, 14h22
  3. demande explication sur boucle "FOR"
    Par maori dans le forum Général Python
    Réponses: 4
    Dernier message: 02/01/2009, 17h37
  4. Optimiser 2 boucles FOR ?
    Par B&B dans le forum SQL
    Réponses: 6
    Dernier message: 18/04/2008, 15h43
  5. Comment optimiser plusieurs boucles FOR-END imbriquées
    Par totoc1001 dans le forum MATLAB
    Réponses: 26
    Dernier message: 13/05/2007, 17h59

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