Bug avec InputBox si données vides

Bonjour à tous,

J’ai une InputBox qui permet, en saisissant un numéro de client, de supprimer un onglet et une ligne dans un autre onglet. Le « problème », c’est que l’InputBox ne supporte que des chiffres. Si malencontreusement on clique sur OK sans avoir rien saisi ou en saisissant autre chose que des chiffres (certes, ce n’est pas censé arriver en théorie), cela créé un bug dans la macro (erreur d’exécution ‘13’) sur la ligne : Num = InputBox("Saisissez le numéro que vous voulez supprimer", "Suppression client").

J’aimerais supprimer ce bug. Par exemple, si on clique sur OK sans avoir rien saisi ou en ayant saisi autre chose que des chiffres, une boîte de dialogue Yes/No pourrait afficher le message « La valeur saisie est incorrecte. Merci de recommencer. »

Je joins mon fichier à ce message. Le bouton "Supprimer client" se trouve sur la ligne 1 de l'onglet "Recap_dossiers".

Merci d'avance à tous ceux qui pourront m'aider !

Bonne soirée

4suppression.xlsm (125.34 Ko)

Bonjour toutes et tous,

Le bouton de command3 (Annuler)

remplace End

par

Unload Me

Cela à l'air de fonctionner ci-dessous:

Private Sub CommandButton1_Click()
'bouton saisie
    Dim Plage As Range
    Dim Nom As String
    Dim Num As Integer
    Dim reponse

On Error GoTo MauvaisType
    'selection du numéro à supprimer
    Do
    Num = InputBox("Saisissez le numéro que vous voulez supprimer", "Suppression client")
        If Num Then
        Exit Do
        Else
            If MsgBox("Voulez-vous continuer ?", vbYesNo) = vbNo Then
            End
            End If
        End If
    Loop

    'suppression du client
        Set Plage = Sheets("Recap_dossiers").Range("C:C").Find(Num)
    If Plage Is Nothing Then
        If MsgBox("La valeur saisie est incorrecte. Merci de recommencer", vbExclamation & vbYesNo) = vbNo Then
        Exit Sub
        End If
    Else

    Nom = Plage.Text
    Application.DisplayAlerts = False 'permet de ne pas afficher un autre message d'alerte de suppression
    Sheets(Nom).Delete
    Sheets("Recap_dossiers").Range("A" & Plage.Row & ":R" & Plage.Row).ClearContents
    End If
    End

MauvaisType:
MsgBox "Vous n'avez pas saisi un nombre entier", vbCritical
End Sub

Private Sub CommandButton3_Click()
'bouton annuler
Unload Me
End Sub

crdlt,

André

Bonjour André et merci beaucoup !

Cela résout le problème de bug erreur d'exécution 13

Je me suis permis de remettre Dim Num As Long (à la place d'Integer), sinon je ne pouvais pas saisir 123456 dans l'InputBox.

Après des tests, j'ai encore 2 petits problèmes :

- Si mon numéro de client est 1 => le client se supprime si on saisit 1,2 dans l'InputBox => j'aimerais que l'Input Box n'accepte aucun autre caractère que des chiffres

- Si mon numéro de client est 020202999 => le client se supprime si on saisit 2 dans l'InputBox alors qu'il ne devrait se supprimer que si on saisit exactement 020202999.

Je joins le fichier avec ces 2 exemples.

Merci d'avance si quelqu'un a une solution a ses problèmes.

Bonne journée à tous

4suppression2.xlsm (156.39 Ko)

Re,

Idée:

je changerai de stratégie, moins complexe, en plaçant une textbox1 et un bouton de commande de validation et un pour quitter/ou annuler

Note: cette textbox n’accepterai qure des chiffres alphanumérique

merci à Banzaï64 ici

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 If InStr(1, "0123456789", Chr(KeyAscii)) = 0 And KeyAscii <> 8 Then
    MsgBox "Caractère non autorisé"
    KeyAscii = 0
 End If
End Sub

Merci André c'est surement une très bonne idée mais étant novice en macro, je ne sais pas comment intégrer cette macro à ma macro actuelle... Peux-tu m'expliquer ?

Merci !

Bonjour toutes et tous,

Ce que j'ai pu faire ci-joint

@ tester

crdlt,

André

Bonjour André

Quel travail ! Un grand merci !

Cela résout beaucoup de problèmes

Il m'en reste malheureusement encore un (cité dans mon précédent message) :

- si le numéro de client est 123456789 et que je saisis 456 ou 678 dans la textbox pour le supprimer => le client se supprime alors qu'il ne devrait se supprimer que si je saisis strictement 123456789

Idem si le numéro de client est 020202999 et que je saisis 2 ou 20 ou 202. Bref, dès que la macro reconnaît une chaîne de caractères présent dans le numéro de client, il supprime le client.

Mea Culpa, en fatit ça fonctionne parfaitement.

Un grand grand merci André !

Rechercher des sujets similaires à "bug inputbox donnees vides"