Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Execution +ieurs macros à chaque changement de valeur d'1 cellul e

6 réponses
Avatar
Cyril DUPONT
Bonjour,

J'ai plusieurs petites macros qui cachent des lignes suivant une valeur
inscrite dans la cellule CF9. Mais pour cela il faut que je les actives une
par une...

Voici un exemple des macros :

Sub Empreintes8()
If [CF9] = 8 Then
Range("13:15,49:137,181:300").Select
Selection.EntireRow.Hidden = True
End If
End Sub

Sub Empreintes4()
If [CF9] = 4 Then
Range("12:12,14:14,15:15,19:48,79:138,141:180,221:300").Select
Selection.EntireRow.Hidden = True
End If
End Sub

Etc...

Comment faire pour que celles ci s'exécutent à chaque fois que la valeur
dans la cellule CF9 change ?

Cyril.

6 réponses

Avatar
JB
Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$9" Then
Empreintes8
Empreintes4
...
End If
End Sub

JB

On 6 août, 18:46, Cyril DUPONT
wrote:
Bonjour,

J'ai plusieurs petites macros qui cachent des lignes suivant une valeur
inscrite dans la cellule CF9. Mais pour cela il faut que je les actives u ne
par une...

Voici un exemple des macros :

Sub Empreintes8()
If [CF9] = 8 Then
Range("13:15,49:137,181:300").Select
Selection.EntireRow.Hidden = True
End If
End Sub

Sub Empreintes4()
If [CF9] = 4 Then
Range("12:12,14:14,15:15,19:48,79:138,141:180,221:300").Select
Selection.EntireRow.Hidden = True
End If
End Sub

Etc...

Comment faire pour que celles ci s'exécutent à chaque fois que la val eur
dans la cellule CF9 change ?

Cyril.


Avatar
cousinhub
bonsoir Cyril, Bonsoir le forum

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Target.Address = "$CF$9" And Target.Count = 1 Then
Cells.EntireRow.Hidden = False
Select Case Target.Value
Case Is = 8
Range("13:15,49:137,181:300").EntireRow.Hidden = True
Case Is = 4
Range("12:12,14:14,15:15,19:48,79:138,141:180,221:300").EntireRow.Hidden
= True ' sur une seule ligne
End Select
End If
End Sub

Bon courage
Bonjour,

J'ai plusieurs petites macros qui cachent des lignes suivant une valeur
inscrite dans la cellule CF9. Mais pour cela il faut que je les actives une
par une...

Voici un exemple des macros :

Sub Empreintes8()
If [CF9] = 8 Then
Range("13:15,49:137,181:300").Select
Selection.EntireRow.Hidden = True
End If
End Sub

Sub Empreintes4()
If [CF9] = 4 Then
Range("12:12,14:14,15:15,19:48,79:138,141:180,221:300").Select
Selection.EntireRow.Hidden = True
End If
End Sub

Etc...

Comment faire pour que celles ci s'exécutent à chaque fois que la valeur
dans la cellule CF9 change ?

Cyril.


Avatar
Cyril DUPONT
Merci tout d'abord JB de m'avoir répondu aussi vite !

Malheureusement ça ne fonctionne pas correctement, je reçoit ce message
d'erreur :
"Compile error
Sub or Fonction not defined"

Et pour corser la chose ce n'est pas cette cellule qui change, ma cellule
CF9 de cette feuille est un renvoi d'une autre cellule d'une autre feuille
mais dans le même classeur (CF9þuille1!L13) et donc à ce moment là la macro
ne détecte plus de changement de valeur de cellule.

Cyril.



Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$9" Then
Empreintes8
Empreintes4
...
End If
End Sub

JB

On 6 août, 18:46, Cyril DUPONT
wrote:
Bonjour,

J'ai plusieurs petites macros qui cachent des lignes suivant une valeur
inscrite dans la cellule CF9. Mais pour cela il faut que je les actives une
par une...

Voici un exemple des macros :

Sub Empreintes8()
If [CF9] = 8 Then
Range("13:15,49:137,181:300").Select
Selection.EntireRow.Hidden = True
End If
End Sub

Sub Empreintes4()
If [CF9] = 4 Then
Range("12:12,14:14,15:15,19:48,79:138,141:180,221:300").Select
Selection.EntireRow.Hidden = True
End If
End Sub

Etc...

Comment faire pour que celles ci s'exécutent à chaque fois que la valeur
dans la cellule CF9 change ?

Cyril.







Avatar
Cyril DUPONT
Bonsoir cousinhub,

Ca fonctionne nickel cette macro en plus elle raccourci le code plutôt que
de le rallonger !
Enfin presque... ça fonctionne pour ce que j'avais demandé ^^
En fait la cellule de référence ne change pas directement, c'est un renvoi
d'une cellule d'une autre feuille mais du même classeur... comment faire pour
que la macro détecte un changement soit de la cellule de la feuille où est
écrite la macro, soit de la cellule d'origine sur la feuille1 ?

Cyril.



bonsoir Cyril, Bonsoir le forum

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Target.Address = "$CF$9" And Target.Count = 1 Then
Cells.EntireRow.Hidden = False
Select Case Target.Value
Case Is = 8
Range("13:15,49:137,181:300").EntireRow.Hidden = True
Case Is = 4
Range("12:12,14:14,15:15,19:48,79:138,141:180,221:300").EntireRow.Hidden
= True ' sur une seule ligne
End Select
End If
End Sub


Avatar
cousinhub
Re-,
en supposant que ta cellule source ne fait pas non plus référence à une
autre cellule quelconque, mais que tu entres à la main cette valeur, tu
peux alors rentrer ce code dans le code de la feuille, mais dès
l'activation.
Private Sub Worksheet_Activate()
Cells.EntireRow.Hidden = False
Select Case [A1].Value
Case Is = 8
Range("13:15,49:137,181:300").EntireRow.Hidden = True
Case Is = 4
Range("12:12,14:14,15:15,19:48,79:138,141:180,221:300").EntireRow.Hidden
= True
End Select
End Sub

Peut-être
Bonsoir cousinhub,

Ca fonctionne nickel cette macro en plus elle raccourci le code plutôt que
de le rallonger !
Enfin presque... ça fonctionne pour ce que j'avais demandé ^^
En fait la cellule de référence ne change pas directement, c'est un renvoi
d'une cellule d'une autre feuille mais du même classeur... comment faire pour
que la macro détecte un changement soit de la cellule de la feuille où est
écrite la macro, soit de la cellule d'origine sur la feuille1 ?

Cyril.



bonsoir Cyril, Bonsoir le forum

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Target.Address = "$CF$9" And Target.Count = 1 Then
Cells.EntireRow.Hidden = False
Select Case Target.Value
Case Is = 8
Range("13:15,49:137,181:300").EntireRow.Hidden = True
Case Is = 4
Range("12:12,14:14,15:15,19:48,79:138,141:180,221:300").EntireRow.Hidden
= True ' sur une seule ligne
End Select
End If
End Sub




Avatar
Cyril DUPONT
Merci ça fonctionne comme je le souhaitais maintenant !!!

Je te remercie beaucoup !

Cyril.



Re-,
en supposant que ta cellule source ne fait pas non plus référence à une
autre cellule quelconque, mais que tu entres à la main cette valeur, tu
peux alors rentrer ce code dans le code de la feuille, mais dès
l'activation.
Private Sub Worksheet_Activate()
Cells.EntireRow.Hidden = False
Select Case [A1].Value
Case Is = 8
Range("13:15,49:137,181:300").EntireRow.Hidden = True
Case Is = 4
Range("12:12,14:14,15:15,19:48,79:138,141:180,221:300").EntireRow.Hidden
= True
End Select
End Sub

Peut-être
Bonsoir cousinhub,

Ca fonctionne nickel cette macro en plus elle raccourci le code plutôt que
de le rallonger !
Enfin presque... ça fonctionne pour ce que j'avais demandé ^^
En fait la cellule de référence ne change pas directement, c'est un renvoi
d'une cellule d'une autre feuille mais du même classeur... comment faire pour
que la macro détecte un changement soit de la cellule de la feuille où est
écrite la macro, soit de la cellule d'origine sur la feuille1 ?

Cyril.



bonsoir Cyril, Bonsoir le forum

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = True
If Target.Address = "$CF$9" And Target.Count = 1 Then
Cells.EntireRow.Hidden = False
Select Case Target.Value
Case Is = 8
Range("13:15,49:137,181:300").EntireRow.Hidden = True
Case Is = 4
Range("12:12,14:14,15:15,19:48,79:138,141:180,221:300").EntireRow.Hidden
= True ' sur une seule ligne
End Select
End If
End Sub