MsgBox avec option "Clear"

Bonjour à tous,

Je souhaiterais savoir s'il est possible d'insérer une option dans un MsgBox qui permet d'initialiser des plages fixése en amont.

Durant mes recherches pour répondre à cette problématique j'ai trouvé l'option "vbYesNoCancel".

Mais cette dernière ne me permet pas de réaliser ce que je souhaite.

C'est pourquoi je voudrais savoir si cela est possible avec un simple MsgBox?

Merci d'avance pour tous ceux qui pourront m'éclairer sur ce sujet.

Bonjour Black_Hole,

ça pourrait être une MsgBox qui pose la question :

« Voulez-vous initialiser les plages situées au-dessus de la ligne active ? »

3 boutons de vbYesNoCancel ; et c'est seulement si la réponse est oui qu'on fait le job ; avant de lancer la macro, l'utilisateur devra se placer sur la bonne ligne pour indiquer que c'est celles au-dessus qui doivent être initialisées.

ligne 1 non prise en compte car y'a aucune ligne au-dessus ; si en ligne 2, alors une seule ligne au-dessus : job fait que pour la ligne 1.

si la 1ère ligne de données de ton tableau est la ligne 5, alors la ligne active sera prise en compte à partir de la ligne 6.

et de quelle colonne à quelle colonne ? quel genre d'initialisation ? effacement cellule ou donnée par défaut ?

pour tout ça, envoie un fichier avec des données fictives, et un exemple du résultat attendu.

dhany

Bonjour @dhany,

C'est effectivement l'option que je recherchais. J'ai fait quelques modifications pour qu'elle corresponde au mieux à ce que je voulais. Donc voilà un peu ce que ça donne.

En tout cas ça marche correctement.

Mille mercis pour votre aide.

 Select Case MsgBox(Prompt:="Souhaitez-vous initialiser votre saisie?", _
                       Buttons:=vbYesNo + vbExclamation)
        Case vbYes
            Range("M50:M54").ClearContents
            Range("O50:O54").ClearContents
        Case vbNo
            Range("M50").Select

            Exit Sub
  End Select

merci pour ton retour, et pour avoir passé le sujet en résolu ; cependant, pour ton code VBA, je trouve que c'est inutile de faire un Select Case juste pour 2 cas seulement ; aussi, je te propose cet autre code VBA :

Sub Essai()
  Dim rép%: rép = MsgBox("Souhaitez-vous initialiser votre saisie ?", 52)
  If rép = 6 Then [M50:M54, O50:O54].ClearContents Else [M50].Select
End Sub

à te lire pour avoir ton avis.

dhany

Bonjour @dhany,

Concernant le code de votre dernier message, j'ai quelques questions à ce sujet:

1/ Que signifie le "52" dans le msgbox?

2/ Pourquoi "If rép=6", je ne comprends pas cette égalité, pourriez-vous m'expliciter la raison svp?

Merci d'avance pour votre précieuse aide.

Bonjour Black_Hole,

* vbExclamation = 48 et vbYesNo = 4 ➯ 48 + 4 = 52 = vbExclamation + vbYesNo

* le retour de MsgBox est un integer ; 6 = vbYes

dhany

D'accord, c'est beaucoup plus clair.

Mille mercis.

Rechercher des sujets similaires à "msgbox option clear"