Gérer le OK et Annuler d'une InputBox
Bonjour,
J'utilise une macro pour annuler ou rétablir une commande grâce à un clic droit sur le numéro de commande.
Toutefois, j'aimerais gérer le bouton "annuler" de l'inputbox pour empêcher la macro de barrer la commande et de supprimer le contenu de la colonne commentaires. De même pouvoir annuler si l'utilisateur va rétablir une commande alors qu'il ne faut pas.
Je vous joins mon fichier test.
Merci d'avance.
Baptiste
Bonsoir,
Quand le bouton "Annuler" est cliqué, inputbox renvoie la valeur nulle (la chaine vide : ""). Utilise cette information.
Bonjour à tous,
un essai prenant en compte la gestion de "annuler sur inputbox" et modifie le fait de barrer ou "débarrer" a priori les cellules:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim Rng2 As Range, Ln As Long, Quest As String
'Cette procédure permet d'annuler ou rétablir une commande avec un clique-droit sur les cellules de la colonne 3 (numéro de commande)
If Target.Column <> 3 Then Exit Sub
If Target.Row < 3 Then Exit Sub
Cancel = True
If Target.Value = "" Then Exit Sub
Ln = Target.Row
Set Rng2 = Range("A" & Ln & ":K" & Ln)
If Target.Font.Strikethrough = False Then
'Si la commande n'est pas encore barrée alors on demande pourquoi l'utilisateur veut annuler la commande
Quest = InputBox("Vous êtes sur le point d'annuler la commande n° " & Range("C" & Ln) & _
", " & Range("E" & Ln) & " : " & Range("H" & Ln) & "." & Chr(10) & Chr(10) & "Indiquer ci-dessous la raison de cette annulation." _
, "Demande d'informations")
If Quest = "" Then Exit Sub 'si annuler ou réponse vide on quitte la sub
'on poursuit puisque quest <> ""
Application.EnableEvents = False
Range("M" & Ln) = Quest
'On ajoute l'heure et date d'annulation (colonne date/heure)
Range("L" & Ln) = "Annulé le " & Date
Range("L" & Ln).Font.Bold = True
Application.EnableEvents = True
Else
'Si la commande est déjà annulée alors on demande à l'utilisateur pourquoi il veut rétablir la commande
Quest = InputBox("Vous êtes sur le point de rétablir la commande n° " & Range("C" & Ln) & _
", " & Range("E" & Ln) & " : " & Range("H" & Ln) & "." & Chr(10) & Chr(10) & "Indiquer ci-dessous la raison de cette modification." _
, "Demande d'informations")
If Quest = "" Then Exit Sub 'si annuler ou réponse vide on quitte la sub
'on poursuit puisque quest <> ""
Application.EnableEvents = False
Range("M" & Ln) = Quest
'On supprime l'heure et date d'annulation (colonne date/heure)
Range("L" & Ln).ClearContents
Range("L" & Ln).Font.Bold = False
Application.EnableEvents = True
End If
'on inverse le "barré" des cellules cherchées
Rng2.Font.Strikethrough = Not Rng2.Font.Strikethrough
End SubBonjour AlgoPlus,
C'est exactement ce dont j'avais besoin, merci de ton aide !
Le fait que le motif barré ne se mettent qu'après avoir cliqué sur OK et après avoir mis la raison de l'annulation est bien plus propre.
Encore merci
Baptiste.