Macro excel
Utilisateur anonyme
-
Patrice33740 Messages postés 8931 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8931 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'utilise Excel 2003. Pour plus de logique sur ma page Menu, j'ai la macro suivante :
Sub Masquer_Afficher_Lignes()
Application.ScreenUpdating = False
If Sheets(1).Range("D16") = "" Then
Rows("20:50").EntireRow.Hidden = True
End If
If Sheets(1).Range("D16") = "Contrôle Aléatoire" Then
Rows("16:18").EntireRow.Hidden = True
Rows("19:29").EntireRow.Hidden = False
Rows("30:50").EntireRow.Hidden = True
Sheets(1).Range("D22").Select
End If
If Sheets(1).Range("D16") = "Audit CSO" Then
Rows("16:29").EntireRow.Hidden = True
Rows("30:37").EntireRow.Hidden = False
Rows("38:50").EntireRow.Hidden = True
Sheets(1).Range("D32").Select
End If
If Sheets(1).Range("D16") = "Audit Prestation" Then
Rows("16:37").EntireRow.Hidden = True
Rows("38:50").EntireRow.Hidden = False
Sheets(1).Range("D40").Select
End If
Application.ScreenUpdating = True
End Sub
Mais ma feuille Excel surbrille beaucoup lors de l'exécution de la macro.
Sauriez vous ce comment je pourrai modifier cette macro afin d'éviter cela.
Merci d'avance.
Laure
J'utilise Excel 2003. Pour plus de logique sur ma page Menu, j'ai la macro suivante :
Sub Masquer_Afficher_Lignes()
Application.ScreenUpdating = False
If Sheets(1).Range("D16") = "" Then
Rows("20:50").EntireRow.Hidden = True
End If
If Sheets(1).Range("D16") = "Contrôle Aléatoire" Then
Rows("16:18").EntireRow.Hidden = True
Rows("19:29").EntireRow.Hidden = False
Rows("30:50").EntireRow.Hidden = True
Sheets(1).Range("D22").Select
End If
If Sheets(1).Range("D16") = "Audit CSO" Then
Rows("16:29").EntireRow.Hidden = True
Rows("30:37").EntireRow.Hidden = False
Rows("38:50").EntireRow.Hidden = True
Sheets(1).Range("D32").Select
End If
If Sheets(1).Range("D16") = "Audit Prestation" Then
Rows("16:37").EntireRow.Hidden = True
Rows("38:50").EntireRow.Hidden = False
Sheets(1).Range("D40").Select
End If
Application.ScreenUpdating = True
End Sub
Mais ma feuille Excel surbrille beaucoup lors de l'exécution de la macro.
Sauriez vous ce comment je pourrai modifier cette macro afin d'éviter cela.
Merci d'avance.
Laure
A voir également:
- Macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
10 réponses
Salut le forum
«Mais ma feuille Excel surbrille beaucoup lors de l'exécution de la macro.»
Je ne rencontre pas ce problème avec ton code.
Tu l'appelles depuis une autre macro ?
Mytå
«Mais ma feuille Excel surbrille beaucoup lors de l'exécution de la macro.»
Je ne rencontre pas ce problème avec ton code.
Tu l'appelles depuis une autre macro ?
Mytå
Bonsoir
oui je l'appele à partir de la macro suivante :
Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If (Target.Column = 4) And (Target.Row = 16 Or Target.Row = 22 Or Target.Row = 34 Or Target.Row = 42) Then
Masquer_Afficher_Lignes
Masquer_Bouton
End If
If (Target.Column = 4) And (Target.Row = 22 Or Target.Row = 24) Then
Masquer_Afficher_Feuille
End If
Application.ScreenUpdating = True
End Sub
oui je l'appele à partir de la macro suivante :
Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If (Target.Column = 4) And (Target.Row = 16 Or Target.Row = 22 Or Target.Row = 34 Or Target.Row = 42) Then
Masquer_Afficher_Lignes
Masquer_Bouton
End If
If (Target.Column = 4) And (Target.Row = 22 Or Target.Row = 24) Then
Masquer_Afficher_Feuille
End If
Application.ScreenUpdating = True
End Sub
Re le forum
Essaye avec ceci à la place de ta macro
Mytå
Essaye avec ceci à la place de ta macro
Sub Worksheet_Change(ByVal Target As Excel.Range) Application.ScreenUpdating = False If (Target.Column = 4) And (Target.Row = 16 Or Target.Row = 22 Or Target.Row = 34 Or Target.Row = 42) Then Application.EnableEvents = False Masquer_Afficher_Lignes Masquer_Bouton End If If (Target.Column = 4) And (Target.Row = 22 Or Target.Row = 24) Then Application.EnableEvents = False Masquer_Afficher_Feuille End If Application.EnableEvents = True Application.ScreenUpdating = True End Sub
Mytå
Bonjour,
Moi non plus je ne rencontre pas ce problème,
cela vient peut-être de « Masquer_Bouton »
Patrice
Moi non plus je ne rencontre pas ce problème,
cela vient peut-être de « Masquer_Bouton »
Patrice
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
voici la macro Masquer_Bouton
Sub Masquer_Bouton()
If Sheets(1).Range("D16") = "" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton5.Visible = False
CommandButton6.Visible = False
CommandButton7.Visible = False
End If
If Sheets(1).Range("D16") = "Contrôle Aléatoire" And Sheets(1).Range("D22") = "" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton5.Visible = True
ElseIf Sheets(1).Range("D16") = "Contrôle Aléatoire" And Sheets(1).Range("D22") = "Diffuser les Fichiers" Then
CommandButton1.Visible = True
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton5.Visible = True
ElseIf Sheets(1).Range("D16") = "Contrôle Aléatoire" And Sheets(1).Range("D22") = "Analyser les Résultats" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton5.Visible = True
End If
If Sheets(1).Range("D16") = "Audit CSO" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton6.Visible = True
End If
If Sheets(1).Range("D16") = "Audit Prestation" And Sheets(1).Range("D42") = "" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton7.Visible = True
ElseIf Sheets(1).Range("D16") = "Audit Prestation" And Sheets(1).Range("D42") = "Procéder à un Audit Prestation" Then
CommandButton1.Visible = False
CommandButton2.Visible = True
CommandButton3.Visible = True
CommandButton4.Visible = False
CommandButton7.Visible = True
ElseIf Sheets(1).Range("D16") = "Audit Prestation" And Sheets(1).Range("D42") = "Analyser les Résultats Prestation" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = True
CommandButton7.Visible = True
End If
End Sub
voici la macro Masquer_Bouton
Sub Masquer_Bouton()
If Sheets(1).Range("D16") = "" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton5.Visible = False
CommandButton6.Visible = False
CommandButton7.Visible = False
End If
If Sheets(1).Range("D16") = "Contrôle Aléatoire" And Sheets(1).Range("D22") = "" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton5.Visible = True
ElseIf Sheets(1).Range("D16") = "Contrôle Aléatoire" And Sheets(1).Range("D22") = "Diffuser les Fichiers" Then
CommandButton1.Visible = True
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton5.Visible = True
ElseIf Sheets(1).Range("D16") = "Contrôle Aléatoire" And Sheets(1).Range("D22") = "Analyser les Résultats" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton5.Visible = True
End If
If Sheets(1).Range("D16") = "Audit CSO" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton6.Visible = True
End If
If Sheets(1).Range("D16") = "Audit Prestation" And Sheets(1).Range("D42") = "" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton7.Visible = True
ElseIf Sheets(1).Range("D16") = "Audit Prestation" And Sheets(1).Range("D42") = "Procéder à un Audit Prestation" Then
CommandButton1.Visible = False
CommandButton2.Visible = True
CommandButton3.Visible = True
CommandButton4.Visible = False
CommandButton7.Visible = True
ElseIf Sheets(1).Range("D16") = "Audit Prestation" And Sheets(1).Range("D42") = "Analyser les Résultats Prestation" Then
CommandButton1.Visible = False
CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = True
CommandButton7.Visible = True
End If
End Sub
Bonjour,
Effectivement la première macro (Masquer_Afficher_Lignes) se termine par une réactivation de la mise à jour écran (Application.ScreenUpdating = True) et donc lors de la seconde (Masquer_Bouton) l'écran est mis à jour à chaque modification.
Dans les deux procédures Masquer_Bouton et Masquer_Afficher_Lignes, modifie la désactivation de la mise à jour écran comme suit :
au début :
et à la fin :
De cette manière, lorsque les macros sont appelées par une autre (Worksheet_Change) qui désactive la mise à jour écran, cette désactivation ne sera pas annulée lors de la fin de la macro appelée, la réactivation sera commandée par la macro appelante.
Cordialement
Patrice.
Effectivement la première macro (Masquer_Afficher_Lignes) se termine par une réactivation de la mise à jour écran (Application.ScreenUpdating = True) et donc lors de la seconde (Masquer_Bouton) l'écran est mis à jour à chaque modification.
Dans les deux procédures Masquer_Bouton et Masquer_Afficher_Lignes, modifie la désactivation de la mise à jour écran comme suit :
au début :
Dim scr As Boolean scr = Application.ScreenUpdating Application.ScreenUpdating = False
et à la fin :
Application.ScreenUpdating = scr
De cette manière, lorsque les macros sont appelées par une autre (Worksheet_Change) qui désactive la mise à jour écran, cette désactivation ne sera pas annulée lors de la fin de la macro appelée, la réactivation sera commandée par la macro appelante.
Cordialement
Patrice.
Re bonjour,
Met un exemple de ton fichier (après avoir remplacé les informations confidentielles) sur https://www.cjoint.com/ et met le lien sur ton prochain poste
Nicolas dit toujours : « C'est facile quand on connait la réponse ! »
Met un exemple de ton fichier (après avoir remplacé les informations confidentielles) sur https://www.cjoint.com/ et met le lien sur ton prochain poste
Nicolas dit toujours : « C'est facile quand on connait la réponse ! »
Je ne rencontre pas de problème avec le fichier.
Quand : Lors de la sélection du type de contrôle ?
Que veux-tu dire par : « Mais ma feuille Excel surbrille beaucoup lors de l'exécution de la macro ». Est-ce des clignotements ?
A tout hasard, essaie d'ajouter un DoEvents au début de la procédure appelante :
Quand : Lors de la sélection du type de contrôle ?
Que veux-tu dire par : « Mais ma feuille Excel surbrille beaucoup lors de l'exécution de la macro ». Est-ce des clignotements ?
A tout hasard, essaie d'ajouter un DoEvents au début de la procédure appelante :
Sub Worksheet_Change(ByVal Target As Excel.Range) DoEvents Application.ScreenUpdating = False ...
Re bonjour,
Effectivement j'ai un clignotement lorsque l'on agit sur un bouton Retour
Cela vient du fait que la procédure Retour() modifier la feuille et provoque l'évènement change et donc exécuter Worksheet_Change à chaque modification.
Il faut appliquer dans Retour() la solution proposée par Mytå :
Au début :
et à la fin :
Cordialement
Effectivement j'ai un clignotement lorsque l'on agit sur un bouton Retour
Cela vient du fait que la procédure Retour() modifier la feuille et provoque l'évènement change et donc exécuter Worksheet_Change à chaque modification.
Il faut appliquer dans Retour() la solution proposée par Mytå :
Au début :
Sub Retour() Application.EnableEvents = False ...
et à la fin :
Application.EnableEvents = True End sub
Cordialement