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 :

Besoin d'aide mes feuilles clignotent suite à l'exécution d'une macro


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
    Auditeur informatique
    Inscrit en
    Novembre 2022
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2022
    Messages : 18
    Par défaut Besoin d'aide mes feuilles clignotent suite à l'exécution d'une macro
    Bonjour,

    Dans mon classeur "Ajout Produit" à l'ajout du produit se fait sur deux feuilles (Gestion Stock et Produit) et la macro s'execute correctement mais durant l'execution j'ai des feuilles qui clignotent, comment empêcher se clignotement.

    Et dans ma feuille de "Gestion Stock" colonne C qui est la quantité du produit ajouté, j'aute par défaut 150 pièces mais quand le produit est finis j'ajoute manuellement en gardant l'ancien pour avoir une trace y a-t-il moyen de l'inclure dans le code Module1 >Li117, Col34 (une solution sera la bienvenue).

    Pourriez vous m'aider svp!

    Merci
    @+

    Ajout_Produit.xlsm

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    N'ouvrant pas les classeurs joints dans les discussions, je ne peux qu'émettre des hypothèses.
    L'effet de "clignotement" dont vous parlez provient sans doute du fait que vos lignes de code contiennent des instructions avec les méthodes Select, Activate, etc.
    Ces méthodes sont à proscrire. Elles ne servent à rien et de plus sont chronophages.

    Mis à part l'utilisation de ces méthodes, lorsqu'on utilise une procédure (macro) qui effectue un grand nombre de modifications sur des feuilles, Excel actualise l'affichage à chaque modification ce qui ralenti l'exécution du programme. Pour éviter cela, on place l'instruction Application.ScreenUpdating = False en début de procédure ce qui désactive la mise à jour de l'écran.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub T
      Application.ScreenUpdating = False
      ' Le code
      '
      '
      Application.ScreenUpdating = True
    End Sub
    La dernière instruction est facultative
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2022
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2022
    Messages : 18
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    N'ouvrant pas les classeurs joints dans les discussions, je ne peux qu'émettre des hypothèses.
    L'effet de "clignotement" dont vous parlez provient sans doute du fait que vos lignes de code contiennent des instructions avec les méthodes Select, Activate, etc.
    Ces méthodes sont à proscrire. Elles ne servent à rien et de plus sont chronophages.

    Mis à part l'utilisation de ces méthodes, lorsqu'on utilise une procédure (macro) qui effectue un grand nombre de modifications sur des feuilles, Excel actualise l'affichage à chaque modification ce qui ralenti l'exécution du programme. Pour éviter cela, on place l'instruction Application.ScreenUpdating = False en début de procédure ce qui désactive la mise à jour de l'écran.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub T
      Application.ScreenUpdating = False
      ' Le code
      '
      '
      Application.ScreenUpdating = True
    End Sub
    La dernière instruction est facultative
    Bonjour,

    Effectivement le nombre de ligne à traiter qui fait se clignotement.
    Je vous remercie pour votre aide et bonne fête

    Merci
    @+

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 527
    Par défaut
    @Philippe:
    Malheureusement, tu lui as indiqué le "cache misère" (Application.ScreenUpdating).

    @Reis71:
    Après avoir regardé le code source, c'est très mauvais.
    Sélections à tort et à travers, activations inutiles, dépendances contextuelles fortes, viole de toutes les bonnes pratiques connues, bref rien de bon.
    Extrait:
    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
    Sub Produit_Stocks()
     
        Range("C6").Select
        Selection.Copy
        Sheets("PRODUIT").Select
        Range("A2:C2").Select
        Application.CutCopyMode = False
        Selection.ListObject.ListRows.Add (1)
        Range("A2").Select
        Sheets("F PRODUIT").Select
        Range("C6").Select
        Selection.Copy
        Sheets("PRODUIT").Select
        Range("A2").Select
        ActiveSheet.Paste
        Range("A3").Select
        Sheets("F PRODUIT").Select
        Range("C9").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("PRODUIT").Select
        Range("B2").Select
        ActiveSheet.Paste
        '// ... suite de code
    Le mieux, c'est que tu mettes le grapin sur un vrai cours VBA, et que tu le prenne quelques mois comme livre de chevet.

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

Discussions similaires

  1. J'ai besoin d'aide mes chers amis
    Par xxmedxx dans le forum Excel
    Réponses: 1
    Dernier message: 28/01/2019, 08h35
  2. [XL-2010] Somme d'une plage de cellules d'une feuille X suite à un clic dans une autre feuille
    Par yasse87 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/07/2012, 12h25
  3. Réponses: 1
    Dernier message: 01/10/2008, 11h36
  4. Réponses: 1
    Dernier message: 12/04/2007, 11h30
  5. Réponses: 2
    Dernier message: 09/06/2006, 14h38

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