XL 2019 Conditions avec Sub Worksheet_Change(ByVal Target As Range)

pat66

XLDnaute Impliqué
Bonjour Le forum,

Lors de la saisie dans AE5, je souhaiterai que si AE5 contient 6 ,9,12 = rien ne se passe
mais si AE5 contient un chiffre différent de 6,9,12
MsgBox("Si vous changez la durée d'utilisation, le montant sera réinitialisé ! ", vbYesNo + vbQuestion)
si oui
AS17 = 0
Columns("AT").EntireColumn.Hidden = True
Si non
annule la saisie dans AE5

Un grand merci
bonne après midi

Pat66
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Pat,
Un essai en PJ mais la demande n'est pas très claire, j'ai fait au mieux avec :
VB:
Sub Worksheet_Change(ByVal T As Range)
    If T.Count > 1 Then Exit Sub
    If Not Intersect(T, [AE5]) Is Nothing Then
        If T <> 6 And T <> 9 And T <> 12 Then
            If MsgBox("Si vous changez la durée d'utilisation, le montant sera réinitialisé ! ", vbYesNo + vbQuestion) = vbYes Then
                Application.EnableEvents = False
                [AS17] = 0
                Application.EnableEvents = True
                Columns("AT").EntireColumn.Hidden = True
            Else
                Application.EnableEvents = False
                Application.Undo
                Application.EnableEvents = True
                Columns("AT").EntireColumn.Hidden = False
            End If
        End If
    End If
End Sub
Le cas échéant c'est facilement adaptable en fonction de vos besoins.
 

Pièces jointes

  • Pat.xlsm
    14.3 KB · Affichages: 7

pat66

XLDnaute Impliqué
Bonjour Sylvanu,
ravi de te lire et merci encore une fois pour ton aide, c'est exactement ce qu'il me fallait !
Pourrais tu m'aider à ajouter les instructions suivantes, si ce n'est pas trop te demander, car lorsque je rajoute ta macro à celles ci, ça beuge sur If Not Intersect(T, [AE5]) Is Nothing Then

If Target.Count > 1 Then Exit Sub
a = Target.Address
If Target.Address = "$AE$5" Then
If Target.Value = "" Then
ActiveSheet.Shapes("Groupe 106").Visible = False
ActiveSheet.Shapes("Rectangle : coins arrondis 1").Visible = False
Rows("51:51").EntireRow.Hidden = True
Else
ActiveSheet.Shapes("Groupe 106").Visible = True
ActiveSheet.Shapes("Rectangle : coins arrondis 1").Visible = True
Rows("51:51").EntireRow.Hidden = False
End If
End If

Set r = [AE5]: Rows("25:50").Hidden = 0: Rows(r.Value + 25 & ":50").Hidden = -1

un grand Merci

Pat
 

pat66

XLDnaute Impliqué
Sylvanu,

pourrait on ajouter cette condition AS17 <> 0 , de sorte que le msgbox ne s'affiche que si les 2 conditions sont remplies

If T <> 6 And T <> 9 And T <> 12 and AS17 = 0 Then
If MsgBox("Si vous changez la durée d'utilisation, le montant sera réinitialisé ! ", vbYesNo + vbQuestion) = vbYes Then
Application.EnableEvents = False
[AS17] = 0
Application.EnableEvents = True
Columns("AT").EntireColumn.Hidden = True
si AS17<> ""

merci
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35