XL 2016 Macro qui ne s'exécute pas

LoubnaHhch

XLDnaute Nouveau
Bonjour tout le monde,

j'ai une macro qui doit me masquer un onglet en regardant la valeur d'une cellule qui change de valeur avec une formule.
Voilà mon code :
-----------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim KeyCells As Range

If Not Application.Intersect(KeyCells, Range("B1")) Is Nothing and [B1]=23 Then

Feuil17.Visible = False

End If

End Sub
------------------------------------------------

Ma cellule B1 contient une formule, et du coup ma macro ne marche pas.
Merci de m'aider à trouver le souci.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Vous déclarez une variable Range "KeyCells" que vous ne valorisez jamais qui est donc égal à nothing quand vous vous en servez.

Dans les lignes ci-dessous si Target est B1 alors la feuille Feuil17 sera cachée si Target (B1) est = 23
Peut-être est-ce le contraire qu'il fallait mais comme votre demande n'est pas claire sur ce point, je vous laisse corriger.

Tout ça est bien entendu dans le module de code de la feuille concernée (celle de B1). Hein ???
vous savez c'est pas pour les embêter qu'on demande des classeurs exemple aux demandeurs ?
Ca nous évite des questions et du travail inutiles
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

'Si Target (cellule quichange) est B1 Alors Feuil17 sera visible si B1 <>23 sinon invisible
If Target.Address(0, 0) = "B1" Then Feuil17.Visible = Target <> 23

End Sub
 

LoubnaHhch

XLDnaute Nouveau
Bonsoir,

Vous déclarez une variable Range "KeyCells" que vous ne valorisez jamais qui est donc égal à nothing quand vous vous en servez.

Dans les lignes ci-dessous si Target est B1 alors la feuille Feuil17 sera cachée si Target (B1) est = 23
Peut-être est-ce le contraire qu'il fallait mais comme votre demande n'est pas claire sur ce point, je vous laisse corriger.

Tout ça est bien entendu dans le module de code de la feuille concernée (celle de B1). Hein ???
vous savez c'est pas pour les embêter qu'on demande des classeurs exemple aux demandeurs ?
Ca nous évite des questions et du travail inutiles
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

'Si Target (cellule quichange) est B1 Alors Feuil17 sera visible si B1 <>23 sinon invisible
If Target.Address(0, 0) = "B1" Then Feuil17.Visible = Target <> 23

End Sub
Je vous remercie de votre aide
Je vous ci-joint un fichier excel avec ce que j'aimerais réaliser.
Vous trouverez l'onglet : "Main"
Quand la valeur de la cellule B1 de cet onglet est égale à 23, l'onglet "Masque" doit disparaitre.
 

Pièces jointes

  • Test_Main.xlsm
    22.3 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour LoubnaHhch, Hasco,
Un essai en PJ avec :
VB:
Sub Zonecombinée2_QuandChangement()
    Application.ScreenUpdating = False
    If [B1] = 23 Then
        Feuil3.Visible = False
    Else
        Feuil3.Visible = True
    End If
End Sub
J'ai supposé que quand B1 était différent de 23 alors Masque devait être visible, sinon changez avec :
Code:
Sub Zonecombinée2_QuandChangement()
    Application.ScreenUpdating = False
    If [B1] = 23 Then Feuil3.Visible = False
End Sub
 

Pièces jointes

  • Test_Main.xlsm
    22.2 KB · Affichages: 2

LoubnaHhch

XLDnaute Nouveau
Bonjour LoubnaHhch, Hasco,
Un essai en PJ avec :
VB:
Sub Zonecombinée2_QuandChangement()
    Application.ScreenUpdating = False
    If [B1] = 23 Then
        Feuil3.Visible = False
    Else
        Feuil3.Visible = True
    End If
End Sub
J'ai supposé que quand B1 était différent de 23 alors Masque devait être visible, sinon changez avec :
Code:
Sub Zonecombinée2_QuandChangement()
    Application.ScreenUpdating = False
    If [B1] = 23 Then Feuil3.Visible = False
End Sub
Merci beaucoup pour votre aide.
J'ai repris la mm chose que vous, mais le code ne marche pas avec mon fichier, je ne sais pas s'il y a quelque chose qui m'échape
 

Jacky67

XLDnaute Barbatruc
Bonjour tout le monde,

j'ai une macro qui doit me masquer un onglet en regardant la valeur d'une cellule qui change de valeur avec une formule.
Voilà mon code :
-----------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim KeyCells As Range

If Not Application.Intersect(KeyCells, Range("B1")) Is Nothing and [B1]=23 Then

Feuil17.Visible = False

End If

End Sub
------------------------------------------------

Ma cellule B1 contient une formule, et du coup ma macro ne marche pas.
Merci de m'aider à trouver le souci.
Bonjour à tous **Meilleurs vœux🥂
Il y a aussi :)
VB:
Sub Zonecombinée2_QuandChangement()
    Feuil3.Visible = [B1] <> 23
End Sub
 

Pièces jointes

  • Test_Main .xlsm
    26.7 KB · Affichages: 1

Jacky67

XLDnaute Barbatruc
Bonjour @LoubnaHhch , le forum

Perso je comprends pas trop toutes ces complications alors qu'une simple validation des données suffit.
C'est vouloir se faire du mal !!!! :oops:

Merci de ton retour

@Phil69970
Hello @Phil69970
Oui, tu as certainement raison :)
;);););)
Mais dans ton exemple, il va s'attraper un torticolis à chercher la liste de validation.
:rolleyes::):);):);)
 
Dernière édition:

LoubnaHhch

XLDnaute Nouveau
Re..
Dans ce classeur c'est
Sub Zonecombinée1_QuandChangement()
et non pas
Sub Zonecombinée_QuandChangement()
Je vous remercie de votre aide :)
J'aimerais juste savoir pourquoi Sub Zonecombinée1_QuandChangement() et non pas Sub Zonecombinée2_QuandChangement() ?
Parce que là j'ai recopié dans mon fichier original et ça marche toujours pas, je ne sais plus quoi faire, c'ets la mm chose que je vous ai déjà envoyé sauf mon fichier contient des données
Merciii
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 201
Messages
2 086 170
Membres
103 151
dernier inscrit
nassim