je me permets d'envoyer un message sur ce forum car je bute sur un point technique concernant les actions possible avec le module VbAbortRetryIgnore d'un Msgbox.
(à noter que je suis pas très fort en VB)
pour illustrer mon propos, j'ai joint un fichier au présent envoi.
en indiquant par exemple le chiffre 7 en F2, la macro MsgBox s'affiche pour signaler une erreur. le code de cette macro est le suivant:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("erreur_epargne").Value > 0 Then
Select Case MsgBox("opération impossible", vbAbortRetryIgnore + vbExclamation, "Erreur détectée")
Case vbAbort
End
Case vbRetry
Case vbIgnore
Exit Sub
End Select
End If
End Sub
C'est tout ce que j'ai réussi à faire pour l'instant.
mon souhait serait que les cases VbAbort et VbRetry fonctionnent de la même façon que les messages d'erreur que l'on trouve dans "validation de données".
ainsi, avec la case VbAbort, F2 devrait redevenir vide si la case était vide avant la saisie de cette cellule ou conserver la valeur qui était la sienne avant la saisie de la cellule si une valeur était indiquée.
avec la case VbRetry, F2 serait sélectionné automatiquement pour être resaisi.
enfin, avec la case VbIgnore, je souhaiterais qu'elle fonctionne comme si, en utlisant une "validation de données", on répondrait oui au message d'avertissement "Voulez vous continuer?", c'est à dire valider la saisie et ne plus avoir le Msgbox d'erreur.
est il possible également dans ce cas de modifier la couleur de la valeur pour que celle-ci apparaisse en rouge par exemple?
je souhaiterais que cela puisse fonctionner sur toute la colonne F du tableau c'est à dire de F2 à F17.
j'espère que mes explications ont été suffisamment claires.
si une chère âme charitable pouvait m'aiguiller, ce serait vraiment très sympa
Si on a droit à un message avant même d'avoir saisi quoi que ce soit ça va être coton...
Peux tu nous expliquer quelle difference tu vois entre VbAbort et VbRetry puisque dans les 2 cas c'est la valeur initiale qui sera réaffichée, ce qui annule l'opération
En admettant que l'utilisateur puisse forcer la saisie d'une valeur erronée (mais dans ce cas faut-il indiquer "opération impossible" ?!) pourquoi alors ne pas juste afficher un message informant l'utilisateur !?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F2:F17")) Is Nothing And Target <> 7 Then
If MsgBox("Erreur détectée" & vbLf & "Voulez-vous continuer ?", _
vbOKCancel + vbCritical) = 2 Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End If
End Sub
Re : besoin d'aide pour MsgBox avec vbAbortRetryIgnore
Bonjour Kjin, bonjour à tous les internautes de ce site.
Merci beaucoup Kjin pour ton aide et le code proposé. Les fonctionnalités de la Msgbox sont très bien.
en ce qui concerne, Vbabort, c'est en effet la valeur initiale qui doit etre réaffichée.
Vbretry, en revanche, devrait conserver la valeur eronnée et mettre la cellule en surbrillance afin de permettre la resaisie (ce que permet la msgbox qui s'affiche lorsque l'on utilise le module de validation de données sur Excel)
pour être plus précis sur le déclenchement de la Msgbox et la construction du tableau Excel:
lorsque je saisie une valeur dans la colonne F (exemple: 7), une formule de concaténation des valeurs contenues dans les colonnes E et F (ex: octobre7) se déclenche dans la colonne G.
en fait, c'est lorsque la valeur inscrite en colonne G est différente de la lite des valeurs référencées en Z2:Z16 que la Msgbox doit se déclencher.
en revanche, retranscire cela en langage VB est, pour le profane que je suis, une grande interrogation.