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.

28suivi-testbk.xlsm (45.64 Ko)

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 Sub

Bonjour 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.

Rechercher des sujets similaires à "gerer annuler inputbox"