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 :

Automatisation d'application et optimisation de Macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Agent d'exploitation
    Inscrit en
    Décembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Agent d'exploitation

    Informations forums :
    Inscription : Décembre 2016
    Messages : 2
    Par défaut Automatisation d'application et optimisation de Macro
    Bonjour,

    Dans le cadre de mon travail, je suis amené à utiliser un tableur Excel pour la gestion des stocks des entrepôts.

    Afin d'optimiser mon temps de travail, j'ai créer un tableur Excel avec des macro afin de faire disparaitre les lignes vides et d'en laisser juste une d'apparente afin de la compléter. Une fois celle ci remplis la suivante apparait.

    La macro fonctionne bien (J'en suis assez content vu que c'est la première que je fais)

    Deux problèmes se posent quand même:

    1 - La vitesse d'exécution de la macro ralentit considérablement le tableur Excel (La MAJ prend plusieurs secondes)

    Je pense que cela vient du fait que ma macro analyse ligne par ligne afin d'appliquer une taille 0 à la ligne si une certaine valeur apparait à 0

    N'y a t'il pas une solution pour optimiser cette macro afin que dès qu'elle rencontre une cellule vide les suivantes prennent la taille 0 et que l'analyse ne s'exécute pas dessus?

    2 - La MAJ de la macro ne se fait que lorsque je change de page de mon classeur Excel

    N'y a t'il pas une solution afin qu'elle s'exécute à chaque modification?

    Voici la macro mis en cause:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Activate()
    Dim i As Integer
    Range("A5:A100").RowHeight = 15
    Application.ScreenUpdating = False
        For i = 5 To 100 Step 1
                If Cells(i, 1) = 0 Then Range(i).RowHeight = 0
     
            Next i
        Application.ScreenUpdating = True
    End Sub

    En espérant que vous puissiez m'aider

    Merci beaucoup d'avance pour l'attention que vous porterez à ce message et à l'aide que vous pourriez m'apporter

    Baptiste

  2. #2
    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
    Fais un filtre automatique

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Par défaut
    Afin de me rendre compte de la taille de ton fichier, il y a combien de ligne à gerer ?

  4. #4
    Candidat au Club
    Homme Profil pro
    Agent d'exploitation
    Inscrit en
    Décembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Agent d'exploitation

    Informations forums :
    Inscription : Décembre 2016
    Messages : 2
    Par défaut
    Le problème du filtre automatique, est le fait que plusieurs personnes de plusieurs agences consulte ce fichier. Il est donc impossible de leur expliquer ce fonctionnement. Je souhaite donc que cela fonctionne de manière autonome et sans que les utilisateurs n'ai de manipulation à effectuer autre que de compléter le tableau.

    Le fichier de ce client gère 100 lignes. Mais si cela fonctionne je l'appliquerai sur d'autres stocks plus important.

    Merci de votre attention

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour BMA76,

    Tout d'abord, 100 lignes, ce n'est rien du tout pour masquer des lignes. Ainsi la vitesse d’exécution ne devrait pas être aussi longue.

    Ensuite, j'ai un peu du mal à comprendre ta remarque par rapport au retour de @mercatog.
    Tu peux tout à fait utiliser les filtres automatiques dans ta macro.

    Enfin pour répondre à tes questions :
    1. Je constate que tu utilises le Application.ScreenUpdating = False/True ce qui est très bien pour optimiser.
      Rien que d'ajouter le Application.Calculation = xlCalculationManual et le reset à xlCalculationAutomatic en fin de macro devrait de faire gagner également beaucoup de temps.
    2. Personnellement, je n'ai jamais utilisé la méthode .RowHeight = 0.
      Je pense que c'est tout à fait équivalent à la méthode que j'utiliserai : .EntireRow.Hidden = True. Mais - peut-être - à explorer.
    3. Enfin, tu utilises la procédure événementielle Private Sub Worksheet_Activate(). Comme tu as pu le constater au cours de tes recherches, il en existe bien d'autres. Rapproche toi de la Worksheet_Change, très probablement pour trouver ton bonheur.

    N'hésite pas à revenir vers le forum si tu rencontres des difficultés.

    Cordialement,
    Kimy

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par BMA76 Voir le message
    Le problème du filtre automatique, est le fait que plusieurs personnes de plusieurs agences consulte ce fichier. Il est donc impossible de leur expliquer ce fonctionnement.
    Franchement ! Du haut de ton trône de développeur tu méprises tes utilisateurs.

    Un petit texte explicatif avec des captures d'écran, cela se fait par du monde.

    Avec tous les outils gratuits d'enregistrement de l'écran qui existent, tu peux même leur faire des petits vidéos.

    Dis plutôt que ce sont le mépris et la maudite paresse et pas l'impossibilité qui te font commander ta macro.

Discussions similaires

  1. [XL-2003] Optimisation de macro travaillant sur d'autres classeurs
    Par diude54 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 06/09/2009, 09h35
  2. [XL-2003] Optimiser une macro de mise en forme d'un Tableau
    Par mouncefdi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/04/2009, 12h19
  3. pilotage d'une application externe par une macro excel
    Par fribelle dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/11/2008, 14h52
  4. Optimiser une macro
    Par PiliSql dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/05/2008, 20h18
  5. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07

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