MsgBox dans une fonction SI

Bonjour,

est-il possible d'afficher un msgBox dans une fonction SI.

Si oui voici mon code

=Si(C4="oui";"OUI"; MsgBox("Rappel", vbYesNoCancel))

Quelle est mon erreur?

Ou alors est-il plus propre de passer par une macro ?

Merci

Bonjour,

MsgBox n'est pas une fonction à imbriquer dans une formule. Il faut l'appeler par le code VBA dans une macro. Par formule en D4 :

=SI(C4="Oui";C4;"Rappel")

Par code Vba :

Sub test()
    If Range("C4") = "Oui" Then
        Range("D4") = "Oui"
    Else
        MsgBox "Rappel", vbYesNoCancel
    End If
End Sub

Bonjour RAJA

J'ai fait le changement et rien ne se passe

Peux-tu m'indiquer mon erreur?

81testrappel.xlsm (14.04 Ko)

Merci très sincèrement

Re,

A vrai dire tu nous aides beaucoup avec tes explications. Remplace ton code par le code suivant et dis-nous si c'est bien ça que tu voulais faire :

Private Sub Workbook_Open()
    For Each cel In Sheets("Feuil1").Range("D4:D7")
        If cel <> "oui" Then
            reponse = MsgBox("Rappel " & cel.Offset(0, -3), vbYesNoCancel)
            If reponse = vbYes Then
                cel.Value = "oui"
            End If
        End If
    Next
End Sub

La plage de test pour le moment est D4:D7 de la feuille "Feuil1". Si la solution te va, il faut adapter cette plage de cellules.

Bonjour RAJA,

je regarde cela ce soir .

Merci

Bonjour Raja,

J'ai mis le code et le bloquage est sur cette ligne

reponse = MsgBox("Rappel " & c.Offset(0, -3), vbYesNoCancel)

et peux tu m'expliquer &c.Offset(0,-3)

Car par la suite il faudra que dans le message s'affiche la valeur des cellules en A

Je vais passer par un tableau qui créera une liste si besoin. une liste

Merci

86testrappel.xlsm (14.26 Ko)

Re,

Mea Culpa. Merci de corriger comme suivant ou bien reprend mon code entier qui est corrigé actuellement :

reponse = MsgBox("Rappel " & cel.Offset(0, -3), vbYesNoCancel)

Dans la macro on parcourt la plage D4:D7 en avançant cellule par cellule. Cette référence est indiqué par l'objet cel dans notre macro. cel.Offset(0,-3) référence la cellule (ici cel) sur la même ligne mais 3 colonne à gauche de la cellule active ou la cellule(objet cel) sur laquelle on travaille.

Par exemple dans la boucle (For Each) la première itération traite cel qui correspond à la cellule D4, cel.Offset(0,-3) donc réfère à la cellule A4.

Bonsoir RAJA

HHOUUUUAAAA quel belle explication.

Merci très sincèrement et de tout cœur.

Vivement demain que je fasse le changement

Merci

Rechercher des sujets similaires à "msgbox fonction"