Macro excel
Fermé
Utilisateur anonyme
-
16 août 2010 à 22:35
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 17 août 2010 à 19:32
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 17 août 2010 à 19:32
A voir également:
- Macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
10 réponses
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
949
16 août 2010 à 22:46
16 août 2010 à 22:46
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å
Utilisateur anonyme
16 août 2010 à 22:49
16 août 2010 à 22:49
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
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
949
16 août 2010 à 23:13
16 août 2010 à 23:13
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å
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
17 août 2010 à 00:04
17 août 2010 à 00:04
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
Utilisateur anonyme
17 août 2010 à 09:39
17 août 2010 à 09:39
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
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
17 août 2010 à 12:47
17 août 2010 à 12:47
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.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 17/08/2010 à 14:04
Modifié par Patrice33740 le 17/08/2010 à 14:04
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 ! »
Utilisateur anonyme
17 août 2010 à 14:35
17 août 2010 à 14:35
Bonjour,
Merci de m'aider
Voici la feuille Menu de mon fichier :
https://www.cjoint.com/?iroJhE7yTe
Merci de m'aider
Voici la feuille Menu de mon fichier :
https://www.cjoint.com/?iroJhE7yTe
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
17 août 2010 à 14:57
17 août 2010 à 14:57
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 ...
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
17 août 2010 à 19:32
17 août 2010 à 19:32
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