InputBox et format %

Bonjour,

Je cherche une solution afin que lorsque l’utilisateur clique sur le bouton du fichier ci-joint, le chiffre par défaut apparaisse dans le InputBox exactement comme il apparaît dans la cellule F2 (deux chiffres après la virgule et le signe %), puis le forcer à inscrire un format identique lors de la saisie, avec un message qui apparaîtrait en cas d’erreur, quelque chose du genre « Veuillez saisir un chiffre en % (Par exemple 5.05 %) ».

Si possible, il faudrait que les chiffres inscrits automatiquement le soient toujours avec deux zéros après la virgule (dans la cellule F2, mais également dans le InputBox).

Bien entendu que l’utilisateur pourrait par contre saisir un chiffre du genre 6% uniquement.

A vous relire.

29classeur3.zip (6.24 Ko)

Nul besoin de saisir le % dans l'inputbox,

Il faut seulement vérifier que l'information saisi par l'utilisateur est bien un nombre. Après tu applique le format que tu veux dans la cellule de destination. La seule astuce consiste à multiplier par 100 pour afficher le bon % dans l'inputbox et de rediviser par 100 à la fin.

Voici un exemple :

Option Explicit
Sub Démo()
    Dim bValid As Boolean
    Dim repUtilisateur As Variant

    bValid = False

    While Not bValid
        repUtilisateur = InputBox("Indiquer le taux AVS-AC", "Taux AVS-AC", Range("F2").Value * 100)

        On Error Resume Next
        repUtilisateur = repUtilisateur / 100
        On Error GoTo 0
        If IsNumeric(repUtilisateur) Then
            bValid = True
        Else
            MsgBox "Erreur de saisie, veuillez saisir un nombre", vbExclamation
        End If
    Wend
    Range("F2").Value = repUtilisateur
End Sub

A travailler, notamment concernant les séparateurs décimaux (virgule ou point) qui ne sont pas du tout vérifié.

L'inputbox se répète tant que la saisie n'est pas valide (attention car cela peux irriter certains utilisateurs ^^)

Bonjour

Une petite étude

Le % est obligatoire (mais pas d'office)

La sortie par annuler ou par la croix est permise

Bonjour à tous deux,

Banzai, Ta solution bloque si j'inscris un chiffre avec une virgule ou un point. Je pense que ça vient du fait qu'en Suisse nous utilisons des points à la place des virgules. J’ai bien essayé d’inverser les virgules et les points dans la ligne Range("F2") = Val(Replace(Rep, ",", ".")) / 100 - de même que dans la saisie - mais ça ne change rien. Mais on pourrait laisser tomber car finalement je trouve que la solution de Chrix pourrait convenir.

Chrix, bien que ta solution ne corresponde pas exactement à ma demande, je pense qu'elle pourrait finalement parfaitement convenir. Je vais rajouter une explication dans le texte de la InputBox et le tour sera joué.

Un tout grand merci à tous deux pour votre aide

Bonnes salutations.

Pour pouvoir saisir soit des points, soit des virgules tu peux rajouter ça :

Option Explicit

Sub Démo()
    Dim bValid As Boolean
    Dim repUtilisateur As Variant

    bValid = False

    While Not bValid
        repUtilisateur = InputBox("Indiquer le taux AVS-AC", "Taux AVS-AC", Range("F2").Value * 100)

        If InStr(repUtilisateur, ".") > 0 Then repUtilisateur = Replace(repUtilisateur, ".", ",")
        On Error Resume Next
        repUtilisateur = repUtilisateur / 100
        On Error GoTo 0
        If IsNumeric(repUtilisateur) Then
            bValid = True
        Else
            MsgBox "Erreur de saisie, veuillez saisir un nombre", vbExclamation
        End If
    Wend
    Range("F2").Value = repUtilisateur
End Sub

Salut Chrix,

Je te remercie pour ta nouvelle intervention, mais comme je l'avais indiqué je vais me contenter de ta première solution qui me convient finalement très bien. Parfois le mieux est l'ennemi du bien

Cordialement

Rechercher des sujets similaires à "inputbox format"