Macro qui se déclenche automatiquement en fonction du changement d'une cellule

  • Initiateur de la discussion Initiateur de la discussion thom02
  • 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 !

T

thom02

Guest
Bonsoir,

Me voilà à nouveau avec un problème de déclenchement automatique d'une macro.

Je vous explique.

je voudrais afficher une colonne si C25 > 0 %
Masquer une colonne si C25 = 0%

Avec le code ci dessous cela semble fonctionner pour l'affichage de la colonne mais pas pour le masquage 😕

Un grand merci pour votre aide !!


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
y = (Target.Address = "$C$25") '+ (Target.Count = 1) + (Not IsEmpty(Target))) + 5
If y <> "" And Target.Address = "$C$25" Then

    MsgBox "plus grand que 0%"
    Feuil49.Columns("j:j").Hidden = False

End If

If y = IsEmpty(Target) And Target.Address = "$C$25" Then

    MsgBox "0%"
    Feuil49.Columns("j:j").Hidden = True
End If

End Sub
 
Re : Macro qui se déclenche automatiquement en fonction du changement d'une cellule

Bonjour à tous,

Peux-tu essayer avec :

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$25" Then
If Target > 0 Then
    MsgBox "plus grand que 0%"
    Feuil49.Columns(10).EntireColumn.Hidden = False
End If
If IsEmpty(Target) Then
    MsgBox "0%"
    Feuil49.Columns(10).EntireColumn.Hidden = True
End If
End If
End Sub

A+ à tous
 
Re : Macro qui se déclenche automatiquement en fonction du changement d'une cellule

bonjour thom02,JCGL,Hasco
Feuil49 ???
je verrais bien dans ce style

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Columns(10).EntireColumn.Hidden = IIf(Target.Address = "$C$25" And Target = 0, True, False)
End Sub

indirectement en changeant n'importe cellule ou par formule

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Columns(10).EntireColumn.Hidden = IIf([c25] = 0, True, False)
End Sub

enfin ...pas forcement compris la finalité
 
Re : Macro qui se déclenche automatiquement en fonction du changement d'une cellule

Bonjour à tous


Juste pour saluer le style de laetitia90, (tout à fait dans mon style, j'adore IIF)
Allez pour une fois je zappe le IIF (et pour le fun)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Columns(10).EntireColumn.Hidden = ([c25] = 0) * -1
End Sub

Messieurs Hasco et JCGL (salutations enneigées à vous deux) , je ne peux décemment à cette heure matinale me joindre à vos festives libations.
J'ai encore le gout du café sur ma langue

Je voudrai pas salir mon clavier par une malencontreuse régurgitation café+alcool.

Mais sachez que le coeur y est, je trinque donc virtuellement à la vôtre 😉
 
Dernière édition:
Re : Macro qui se déclenche automatiquement en fonction du changement d'une cellule

Bonjour Thom, Laetitia, Staple, JC,

C'est parti pour un un petit noir de comptoir pour les amis.

Code:
MsgBox Array("0%", "supérieur à 0%")(([c25] > 0) * -1)

Quid des inférieurs à zéro, des vides, des valeurs textuelles?

A+
 
Re : Macro qui se déclenche automatiquement en fonction du changement d'une cellule

Re JCGL


Avec les MsgBox inclues (mais j'ai un léger doute 😉 sur la véracité mathématique de mon IIF)
EDITION: c'est plus un doute, c'est une certitude 😱
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Columns(10).EntireColumn.Hidden = ([C25] = 0) * (MsgBox(IIf([C25] = 0, "<=0", ">0"), vbOKOnly, "titre"))
End Sub
EDITION: Bonjour Hasco, t'avais point vu passé, Désolé
 
Dernière édition:
Re : Macro qui se déclenche automatiquement en fonction du changement d'une cellule

Bonjour et merci pour vos nombreuses réponses.

Malheureusement je me perds dans la minimalisation de votre code et donc suis resté à la version longue 😕

Me voilà avec une code qui semble ne pas fonctioner car la deuxième condition n'entre pas....

Pour info je sélectionne un client et en fonction du client choisi, la case $C$25 se modifie avec un % lié à ce client. Ce % sera 0>=.

Merci une fois de plus pour votre aide


Code:
If Target.Address = "$C$25" Then
If Target > 0 Then
    MsgBox "plus grand que 0%"
    Feuil49.Columns(10).EntireColumn.Hidden = False
Else
If IsEmpty(Target) Or Target = 0 Then
    MsgBox "0%"
    Feuil49.Columns(10).EntireColumn.Hidden = True
End If
End If
 
Re : Macro qui se déclenche automatiquement en fonction du changement d'une cellule

Bonjour Thom,

Lorsque tu n'y arrives pas avec une condition, il suffit souvent de la formuler différement en langage courant pour parvenir à un résultat.

Si la cellule C25 n'est pas vide et est >0 alors afficher la colonne 10 de la feuille 49.

En vba:

Code:
If Target.Address = "$C$25" Then
If not IsEmpty(Target) and Target > 0 Then
   MsgBox "plus grand que 0%"
   Feuil49.Columns(10).EntireColumn.Hidden = False
else ' zéro ou vide
    MsgBox "0%"
    Feuil49.Columns(10).EntireColumn.Hidden = True
End If
End If
Et si tu ne veux pas multiplier les 'If...Endif':

Code:
If Target.Address = "$C$25"  And not IsEmpty(Target) and Target > 0 Then
   MsgBox "plus grand que 0%"
    Feuil49.Columns(10).EntireColumn.Hidden = False
else ' zéro ou vide
    MsgBox "0%" 
    Feuil49.Columns(10).EntireColumn.Hidden = True
End IF

A+
 
Dernière modification par un modérateur:
Re : Macro qui se déclenche automatiquement en fonction du changement d'une cellule

Bonjour,

En fait c'est un tout petit peu plus compliqué.. car en faite cela fait intervenir une autre cellule.
Le choix du client se fait en C25 via un menu déroulant et le pourcentage arrive automatiquement en L25.
Mais voila tous les clients de sont pas forcement dans le menu déroulant du coups je peux devoir entrer les donnée manuellement dans la cade L25 ce qui n'entre pas dans le condition du code ci dessous.

De plus avec le code ci dessous il semble que quoi que je fasse dans ma fenetre le code MsgBox "plus grand que 0%"
s'exécute...

pourriez vous m'aider à le corriger?
D'avance merci

Th.

Code:
If Target.Address = "$C$25" And Not IsEmpty(Range("L25")) And Range("L25") > 0 Then
   MsgBox "plus grand que 0%"
    Feuil49.Columns(10).EntireColumn.Hidden = False
Else ' zéro ou vide
    MsgBox "0%"
    Feuil49.Columns(10).EntireColumn.Hidden = True
End If
 
Dernière modification par un modérateur:
Re : Macro qui se déclenche automatiquement en fonction du changement d'une cellule

Re,

Je remplacer L25 par $C$25 dans:

Code:
If Target.Address = "$C$25" And Not IsEmpty(Range("L25")) And Range("L25") > 0

Pour le reste et sans fichier exemple avec explication claires et détaillées, je n'irai pas plus loin.(nous ne sommes pas devin)

A+
 
- 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

Réponses
5
Affichages
910
Retour