Msgbox 3 conditions + imbrication

Bonjour tous,

Je sollicite à nouveau vos connaissances, car je souhaiterais faire apparaître une Msgbox lorsque 3 conditions sont réunies c'est à dire dans mon fichier exemple, lorsque la colonne E contient « BUP » la colonne F « Code 07 » et la colonne G « Boîtes » le « problème » étant que j’ai déjà une commande worksheet Change il faudrait donc l’imbriquer au code ci-dessous

Si ça demande trop de temps pas de soucis, je peux me débrouiller juste avec le code avec les 3 conditions...

Merci !

Private Sub worksheet_Change(ByVal Target As Range)

Dim ref As Range, txt$, com$, ret$ '$ signifie As String
If Not Intersect(Range("I3:I4000,N3:N4000"), Target) Is Nothing And Target.Count = 1 Then
    Application.EnableEvents = False
    Target.Offset(0, 1) = Empty
   Application.EnableEvents = True
  End If
Cancel = True
If Target.Column = 11 Then Call remplir(Target)
'Nom utilisateur+commentaire
Set ref = Intersect(Target, Range("P3:P4000"))
If ref Is Nothing Then Exit Sub
On Error Resume Next
txt = Environ("UserName")
For Each ref In ref
  If Range("AA" & ref.Row) = "" Then
    Range("AA" & ref.Row) = txt

  End If
Next
End Sub
16exemple.xlsm (19.48 Ko)

bonjour

tu sais que personne ne lit les messages d'alerte. Toi non plus. Moi non plus. Personne !

il vaut bien mieux mettre un S(condition;"§ § § problème dans votre saisie § § §"; "") dans une cellule bien en vue, e, police gras rouge vif

donc pas de VBA

amitiés

Bonjour jmd,

Merci pour ta réponse, je suis d'accord avec toi, mais dans mon cas, le tableau en question comporte plus de 20 colonnes et sert à encoder les demandes pendant une année. J'ai déjà pas mal de mfc de liste de validation,... et dans ce cas précis, il était juste question d'une msgbox à titre d'information maintenant s'ils ne le lisent pas tant pis pour eux... Pour cela j'aurais souhaité une msgbox qui s'afficherait au moment où les 3 conditions sont réunies mais qu'au prochain clic ou sélection de cellule la msgbox disparaisse.

Si c'est possible pour toi de m'aider

Quand tu dis que "BUP" est contenue dans une colonne (ici la F), "BUP" se trouve dans cellule spécifique ou n'importe où dans cette colonne ? J'ai fait ça vite fait revient ici si tu as un soucis à l'intégration dans ton code

Sub test()
'Déclaration des variables
Dim Critere1 As String
Dim Critere2 As String
Dim Critere3 As String

'Assignation des varaibles
Critere1 = "BUP"
Critere2 = "Code 07"
Critere3 = "Boîtes"

'Condition pour affichage d'un msgbox
With Sheets("Feuil1")
    If Application.CountIf(.Range("E:E"), Critere1) > 0 And _
    Application.CountIf(.Range("F:F"), Critere2) > 0 And _
    Application.CountIf(.Range("G:G"), Critere3) > 0 Then
        MsgBox "Attention", vbCritical, "Erreur"
    End If
End With

End Sub

Ou sinon :

Sub test()
'Déclaration des variables
Dim Critere1 As String
Dim Critere2 As String
Dim Critere3 As String

'Assignation des varaibles
Critere1 = "BUP"
Critere2 = "Code 07"
Critere3 = "Boîtes"

'Condition pour affichage d'un msgbox
With Sheets("Feuil1")
    If Application.CountIf(.Range("E:E"), Critere1) > 0 Then
        MsgBox "BUP présent dans colonne E", vbCritical, "Erreur"
    End If

    If Application.CountIf(.Range("F:F"), Critere2) > 0 Then
        MsgBox "Code 07 présent dans colonne F", vbCritical, "Erreur"
    End If

    If Application.CountIf(.Range("G:G"), Critere3) > 0 Then
        MsgBox "Boîtes présent dans colonne G", vbCritical, "Erreur"
    End If
End With

End Sub

Alors tu as testé ?

Oui, merci j'ai testé mais aucun message s'affiche j'ai juste adapté les lettres des colonnes pour que ça colle dans mon fichier mais rien ne se passe... Pour répondre à ta question, le BUP, peut se trouver n'importe où dans la colonne.

Sub test()

'Déclaration des variables

Dim Critere1 As String

Dim Critere2 As String

Dim Critere3 As String

'Assignation des varaibles

Critere1 = "Code 07"

Critere2 = "Boîtes et étiquettes"

Critere3 = "BUP"

'Condition pour affichage d'un msgbox

With Sheets("Feuil1")

If Application.CountIf(.Range("I:I"), Critere1) > 0 And _

Application.CountIf(.Range("J:J"), Critere2) > 0 And _

Application.CountIf(.Range("N:N"), Critere3) > 0 Then

MsgBox "Attention", vbCritical, "Erreur"

End If

End With

End Sub

Je ne sais pas où tu as intégré le code que je t'ai donné, il faut le mettre dans Worksheet_Change. Après je ne sais pas non plus comment tu as définit la propriété Target. Normalement la macro en elle même fonctionne si tu l'appel via un bouton sur la feuille

Rechercher des sujets similaires à "msgbox conditions imbrication"