Créer une macro évènementielle

  • Initiateur de la discussion Initiateur de la discussion nipepsi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

nipepsi

Guest
Bonjour,

Je souhaiterais utiliser une macro évènementielle pour masquer ou faire apparaitre des lignes en fonction de la valeur d'une cellule (A33) générée par 2 cases d'option. Voici le code que je souhaiterais utiliser :

Code:
If Cells(33, 1) = 2 Then
    Rows("35:36").Select
    Selection.EntireRow.Hidden = True
    Rows("37:42").Select
    Selection.EntireRow.Hidden = False
    Range("H43").Select
Else
    Rows("37:42").Select
    Selection.EntireRow.Hidden = True
    Rows("35:36").Select
    Selection.EntireRow.Hidden = False
    Range("H43").Select
End If

Ce code fonctionne en utilisant un bouton mais je ne sais pas comment faire pour qu'il fonctionne sans bouton...
Quelqu'un pourrait-il m'expliquer...?

Nipepsi
 
Dernière modification par un modérateur:
Re : Créer une macro évènementielle

Bonjour nipepsi, et bienvenue sur le forun
Je souhaiterais utiliser une macro évènementielle ................
avec ceci
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(33, 1) = 2 Then
    Rows("35:36").Select
    Selection.EntireRow.Hidden = True
    Rows("37:42").Select
    Selection.EntireRow.Hidden = False
    Range("H43").Select
Else
    Rows("37:42").Select
    Selection.EntireRow.Hidden = True
    Rows("35:36").Select
    Selection.EntireRow.Hidden = False
    Range("H43").Select
End If
End Sub

à+
Philippe
 
Re : Créer une macro évènementielle

Bonjour Philippe,

Merci beaucoup pour cette réponse... En fait j'avais déjà essayé un code comme ca mais ca ne marchait pas (j'ai du faire une boulette quelque part ^^) !!

Du coup, ca marche maintenant... mais qu'à moitié... Ma cellule A33 est remplie par des cases d'option (valeur 1 ou 2). Le problème est que le code fonctionne quand je rentre les valeurs à la main, mais pas quand j'utilise les cases d'option... Auriez vous une solution pour ce problème ?

D'autre part, dès que je fais la moindre modif sur ma feuille, cela me renvoi directement sur la cellule H43 (défini arbitrairement afin que les lignes modifiées ne soient plus sélectionnées). Or la fiche étant très grande et complète, c'est très embêtant que ca me ramène en haut dès que je fais une modif en bas... Ne serait-il pas possible de mettre une condition sur ce code pour qu'il ne soit réalisé que lorsque je modifie ma cellule A33 ?

Merci d'avance !!
 
Re : Créer une macro évènementielle

En fait, j'ai trouvé un autre moyen. Je ne savais pas que c'était possible mais j'ai associé des macros aux cases d'option a l'aide du code suivant :

Code:
Sub hide_sélectivité()

Application.ScreenUpdating = False

    Rows("37:42").Select
    Selection.EntireRow.Hidden = True
    Rows("35:36").Select
    Selection.EntireRow.Hidden = False
    Range("B35").Select

Application.ScreenUpdating = True

End Sub

Sub hide_equation_sélectivité()

Application.ScreenUpdating = False

    Rows("35:36").Select
    Selection.EntireRow.Hidden = True
    Rows("37:42").Select
    Selection.EntireRow.Hidden = False
    Range("B38").Select

Application.ScreenUpdating = True

End Sub

Ainsi, la fiche de calcul est plus fluide...

Merci de votre aide, cela m'aura permis d'apprendre un peu les macros évènementielles !!
 
Re : Créer une macro évènementielle

Bonjour

Je me permets un suggestion


En remplaçant tes deux OptionButton par un ToggleButton

Tu n'utilises plus qu'une seule macro 😉

Code:
Private Sub ToggleButton1_Click()
Application.ScreenUpdating = False
Rows("37:42").EntireRow.Hidden = Not Rows("37:42").EntireRow.Hidden
Rows("35:36").EntireRow.Hidden = Not Rows("35:36").EntireRow.Hidden
Application.ScreenUpdating = True
End Sub

1er clic -> tu masques les lignes
2nd clic -> tu démasques les lignes
 
Re : Créer une macro évènementielle

Bonjour JM

Le truc c'est que j'ai besoin de mes cases d'option pour le corps du programme. Elles me servent à sélectionner le modèle de dimensionnement d'une installation.
Le fait de masquer les lignes, c'est juste pour la clarté du programme, pour masquer les paramètres inutiles pour le modèle choisi.

Merci quand même pour ton code 😉
 
Re : Créer une macro évènementielle

Re


Dans ce cas

Tu peux aussi utiliser ceci

Code:
Private Sub OptionButton1_Click()
Application.ScreenUpdating = False
Rows("37:42").EntireRow.Hidden = OptionButton1
Rows("35:36").EntireRow.Hidden = OptionButton1
Application.ScreenUpdating = True
End Sub

Code:
Private Sub OptionButton2_Click()
Application.ScreenUpdating = False
Rows("37:42").EntireRow.Hidden = OptionButton1
Rows("35:36").EntireRow.Hidden = OptionButton1
Application.ScreenUpdating = True
End Sub
 
Re : Créer une macro évènementielle

Re


cases d'option = OptionButton en VBA non ?

(j'ai utilisé les case d'option de la barre d'outils Controles)

et toi , tu as peut-être utilisé celles de la barre d'outils Formulaire ?

Un clic sur une OptionButton renvoie True ou False
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

L
Réponses
9
Affichages
1 K
G
Réponses
7
Affichages
1 K
gfgghbhg
G
Retour