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 :

macro qui fait trembler ma feuille de calcul


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut macro qui fait trembler ma feuille de calcul
    Bonjour le forum,

    Merci à toute la communauté pour le travail remarquable

    Mon problème est le suivant:

    J'ai détecté une macro qui fait trembler mon tableau excel 2007 lorsque j'utilise les touches de directions ,car en supprimant la macro en question mon tableau redevient normal.Je crois que le code n'est pas optimisé.Le voici:

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    For Each Cell In Range("K11:K52")
        If Cell = "" Then
            Cell.Offset(0, 2) = ""
        End If
    Next
    For Each Cell In Range("O11:O52")
        If Cell = "" Then
            Cell.Offset(0, 2) = ""
        End If
    Next
    For Each Cell In Range("T11:T52")
        If Cell = "" Then
            Cell.Offset(0, 2) = ""
        End If
    Next
    For Each Cell In Range("Z13:Z51")
        If Cell = "" Then
            Cell.Offset(0, 3) = ""
        End If
    Next
    For Each Cell In Range("AK16:AK30,AT16:AT30,BC16:BC30,BL16:BL30,BU16:BU30,CD16:CD30")
        If Cell = "" Then
            Cell.Offset(0, 2) = ""
        End If
    Next
     
    End Sub
    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 105
    Par défaut
    Bonjour,
    Au début de ta procédure, tu peux ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    ce qui a pour effet de geler la mise à jour de l'écran pendant le déroulement de ta macro.
    Juste avant le End Sub, tu réactives avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = True
    @+

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut
    Bonjour le forum,
    Merci Gord21 mais j'ai déjà essayé le ScreenUpdating sans succès ...je ne sais pas pourquoi mais l'écran scintille tjrs!! Peut-être qu'une modification de la macro en question donnera quelquechose ?
    merci

  4. #4
    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
    étrange emplacement du code
    à chaque sélection d'une cellule, le code est exécuté? dans quel but?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Par défaut
    Bonjour mobiclick, bonjour tout le monde,

    Comme l'a bien dit mercatog, il est étonnant que tu veuilles exécuter ton code à chaque changement de cellule. C'est ce qui provoque le scintillement.

    Je pense que tu devrais faire un test sur Target et n'exécuter ce code que pour certaines valeurs particulières de Target.

    Si ton besoin est réellement d'exécuter ce code à chaque fois, je pense que la solution de Gord21 est pertinente. Je te propose d'ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    au début du code et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    à la fin du code.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut

    en plus de la remarque judicieuse faite par mercatog quant à la l'utilité de ne provoquer le déclenchement de ces boucles que lorsque nécessaire :
    - Je dirais que tes "tremblements" visuels sont ceux de ton curseur et non ceux de ta feuille..
    - je cacherais alors (y compris avec ton code, tel qu'il est) le curseur pendant les boucles et le remontrerais à la fin, ainsi :
    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
     
    ' a mettre dans la partie générale de ton module
    Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
     
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     ShowCursor 0
     ScreenUpdating = False
      For Each Cell In Range("K11:K52")
        If Cell = "" Then
            Cell.Offset(0, 2) = ""
        End If
      Next
      For Each Cell In Range("O11:O52")
        If Cell = "" Then
            Cell.Offset(0, 2) = ""
        End If
      Next
      For Each Cell In Range("T11:T52")
        If Cell = "" Then
            Cell.Offset(0, 2) = ""
        End If
      Next
      For Each Cell In Range("Z13:Z51")
        If Cell = "" Then
            Cell.Offset(0, 3) = ""
        End If
      Next
      For Each Cell In Range("AK16:AK30,AT16:AT30,BC16:BC30,BL16:BL30,BU16:BU30,CD16:CD30")
        If Cell = "" Then
            Cell.Offset(0, 2) = ""
        End If
      Next
     ShowCursor 1
     ScreenUpdating = True
    End Sub

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

Discussions similaires

  1. [XL-2010] selectionchange feuill macro qui fait planter
    Par Ashireon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/09/2012, 18h39
  2. VBA excel Une macro qui fait souffrir ?
    Par soleilbleue dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/09/2007, 18h55
  3. cellule qui ouvre une nouvelle feuille de calcul
    Par matrxjean1984 dans le forum Excel
    Réponses: 1
    Dernier message: 13/06/2007, 21h33
  4. [VBA-E] Macro qui fait Ctrl + F ?
    Par jefe.k dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2007, 11h04
  5. [Access 2003] Macro qui fait planter Access
    Par nuriel2 dans le forum Access
    Réponses: 5
    Dernier message: 10/05/2006, 14h00

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