XL 2019 combiner 2 conditions dans Worksheet_Change(ByVal target As Range)

pat66

XLDnaute Impliqué
Bonjour le forum,

j'ai besoin d'aide pour combiner ces 2 conditions afin qu'elles soient complémentaires :
Mais je souhaite que le msbox ne s'affiche qu'après la modification de la valeur de K27, si modification il y a et non lors de la sélection de K27 et le msgbox ne s'affiche que si O27 n'est pas vide

merci

VB:
'   If target.Count > 1 Then Exit Sub
'   If Not Intersect(target, Range("K27")) Is Nothing Then
'   If [O27].Value <> "" Then
'   MsgBox "Pensez à valider le montant pour mettre à jour le taux annuel !", vbInformation
'   End If
'   End If

et

Code:
If Target.Count > 1 Then Exit Sub
 If Target.Address <> "$O$27" Then Exit Sub
   If Target.Value = "" Or Target.Value = "?" Then Exit Sub
    If Not Intersect(Target, Range("O27")) Is Nothing Then
        Me.Cells(27, "K").Value = Me.Cells(107, "I").Value
    End If

merci pour votre aide
 
Dernière édition:
Solution
Si O27 est vide, pas de Msgbox même si K27 est modifié par O27 avec le contenu de I107
Ça, tu ne l'avais pas dit au départ...😕


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'
    Select Case Target.Address

    Case "$K$27"
        If Range("O27").Value<>"" Then MsgBox "Salut"

    Case "$O$27"
        If Target.Value <> "" And Target.Value <> "?" Then
            application.enableevents = false
            Range("K27").Value = Range("I170").Value
            application.enableevents = true
        End If

    End Select

End Sub

pat66

XLDnaute Impliqué
re,

merci pour votre aide, j'ai testé mais rien ne se passe quand je modifie K27 et que O27 <> "", j'ai peut être mal inséré votre proposition ?

VB:
If Target.Count > 1 Then Exit Sub
 If Target.Address <> "$O$27" Then Exit Sub
    If Target.Address = "$k$27" And Range("o27") <> "" Then MsgBox "Salut"
   If Target.Value = "" Or Target.Value = "?" Then Exit Sub
    If Not Intersect(Target, Range("O27")) Is Nothing Then
        Me.Cells(27, "K").Value = Me.Cells(107, "I").Value 
    End If
 
Dernière édition:

pat66

XLDnaute Impliqué
re,

je vais reformuler pour une meilleure compréhension

La macro ci dessous me convient, mais je souhaite ajouter une condition qui est que lorsque je modifie K27 et si O27 <>"", l'affichage d'un msgbox

J'ai essayé de mettre les 2, voir post #1, mais elles s'interfèrent

Peut on combiner les deux ou en créer une autre dans worksheet Change ? de manière a ce qu'elles soient compatibles, merci

VB:
If Target.Count > 1 Then Exit Sub
 If Target.Address <> "$O$27" Then Exit Sub
   If Target.Value = "" Or Target.Value = "?" Then Exit Sub
    If Not Intersect(Target, Range("O27")) Is Nothing Then
        Me.Cells(27, "K").Value = Me.Cells(107, "I").Value
    End If
 

TooFatBoy

XLDnaute Barbatruc
je vais reformuler pour une meilleure compréhension

La macro ci dessous me convient, mais je souhaite ajouter une condition qui est que lorsque je modifie K27 et si O27 <>"", l'affichage d'un msgbox
Même reformulé, c'est loin d'être clair. :(

Quand tu modifies O27, alors tu modifies K27 avec le contenu de I107.
Et quand tu modifies K27, tu veux une MsgBox.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'
    If Target.Count > 1 Then Exit Sub

    Select Case Target.Address

    Case "$K$27"
        If Range("O27").Value<>"" Then MsgBox "Salut"

    Case "$O$27"
        If Target.Value <> "" And Target.Value <> "?" Then Range("K27").Value = Range("I170").Value

    End Select

End Sub
 
Dernière édition:

pat66

XLDnaute Impliqué
re,

vraiment désolé,
c'est vrai que je patine dans la choucroute :eek:

tu dis :
Quand tu modifies O27, alors tu modifies K27 avec le contenu de I107
Et quand tu modifies K27, tu veux une MsgBox.

C'est exact quand on saisi une valeur dans K27, je veux un Msgbox mais uniquement si O7 n'est pas vide
Si O27 est vide, pas de Msgbox même si K27 est modifié par O27 avec le contenu de I107

mais je vais revoir ma demande car pas facile du tout à expliquer

merci pour ton aide
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Si O27 est vide, pas de Msgbox même si K27 est modifié par O27 avec le contenu de I107
Ça, tu ne l'avais pas dit au départ...😕


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'
    Select Case Target.Address

    Case "$K$27"
        If Range("O27").Value<>"" Then MsgBox "Salut"

    Case "$O$27"
        If Target.Value <> "" And Target.Value <> "?" Then
            application.enableevents = false
            Range("K27").Value = Range("I170").Value
            application.enableevents = true
        End If

    End Select

End Sub
 
Dernière édition:

pat66

XLDnaute Impliqué
Bonjour le forum,
Bonjour TooFatBoy,

super, top !!, c'est exactement ce dont j'avais besoin, j'ai simplement modifié Range("I170").Value par Range("I107").Value

En plus, grâce à toi, je viens de comprendre les avantages de Select Case Target.Address, notamment lorsque plusieurs cellules sont concernées pour une action simultanée

un grand merci pour ton aide,👏👏

bon dimanche à tous
 

Discussions similaires

Réponses
1
Affichages
283

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki