Utilisation InputBox

Bonjour,

J'ai utilisé InputBox mais je ne trouve rien sur l'utilisation du bouton annuler et la croix qui ferme l'input.

De plus je veux faire apparaitre une flèche entre la saisie des nombres dans l'input et l'affichage du résultat mais je n'y parvient pas.

La flèche s'affiche toujours après le résultat au lieu d'avant.

Ensuite en fin de macro, je souhaiterai supprimer cette flèche.

Fichier ci-dessous :

11classeur2.xlsm (20.22 Ko)

Bonsoir JeanF44

Voici une partie de réponse

For Tpr = 1 To 2
     Val = Application.InputBox("Documentez un nombre", "SAISIE", Type:=1)'Saisie ds nombres
     If Val = 0 Then Exit Sub 'Si annuler on quitte
        If Tpr = 1 Then ' Si variable boucle = 0
               Range("N5").Value = Val ' Mettre 1ier nombre dans cette cellule
               Val1 = Val  'La variable Val1 prend la valeur Val
             Else   ' Sinon
                Range("N7").Value = Val   ' Mettre 2ieme nombre dans cette cellule
                Val2 = Val  ' La variable Val2 prend la valeur Val
        End If   ' Fin de condition
  Next Tpr

Cdt

Henri

Bonsoir AFEH

Merci pour la réponse.

En fin de compte il faut prendre "Application.InputBox" au lieu de "InputBox" pour permettre de résoudre la solution du bouton annuler ou la croix.

En passant par un "UserForm", on peut ajouter les boutons 1 à 1 et leur mettre des codes, et ça serait peut-être une autre solution ?

Par contre dans la solution il pour pouvoir documenter le 2ième nombre il faut mettre "For Tpr = 1 to 3" sinon avec "For Tpr = 1 to 2" je ne peux documenter qu'un nombre

Bonjour

Bonjour à tous

Un autre proposition.

Bye !

11classeur2-v1.xlsm (25.60 Ko)

Bonsoir et merci de la réponse gmb,

La flèche ne s'affiche pas

J'aurai peut-être du dire que j'étais sous excel 2019 d'office Pro Plus 2019

Nouvelle version

Bye !

capture
13classeur2-v2.xlsm (26.66 Ko)

Bonsoir gmb et merci,

Désolé mais ça ne fonctionne pas chez moi (Excel2019 !!!)

annotation 2020 03 10 202632

Bonjour à tous,

Voici une version avec Formulaire

Cdt

Henri

14jeanf44.xlsm (22.01 Ko)

Bonjour AFEH et merci de la réponse

Après le téléchargement du fichier et exécution, j'ai un bug. Voir capture d'écran ci-dessous :

annotation 2020 03 11 132250 capture d ecran 5

PS : Le problème ne vient pas de la version d'excel ou d'office

Bonjour,

Dans ma version :

msoShapeDownArrow

est égal à 36

d'où mon code pour le supprimer

.Shapes(msoShapeDownArrow = 36).Delete

Chez toi il doit s'agir d'un autre chiffre que 36.

Remplace le code entier par celui-ci pour essayer.

Private Sub CommandButton1_Click()
    Dim Résultat$, NomShape As String
    Résultat = Val(Replace(Me.TextBox1, ",", ".")) * Val(Replace(Me.TextBox2, ",", "."))
    With ActiveSheet
        'ActiveSheet.Shapes.AddShape(msoShapeDownArrow, 592.2, 121.2, 20.4, 67.2).Select
        .Shapes.AddShape(msoShapeDownArrow, 560.2, 121.2, 20.4, 67.2).Select
            NomShape = Selection.Name
        .Range("J14") = Résultat
        Unload Me
        Application.Wait Now + TimeValue("0:0: 3")

        .Shapes(msoShapeDownArrow = Right(NomShape, 2)).Delete
        .Range("J14,N5,N7").ClearContents
    End With
End Sub

si ton chiffre est inférieur ou égal à 2 caractères (ex: 36) alors ce code est bon, sinon modifie le chiffre dans le code suivant:

Right(NomShape, 2))

Un autre avantage, on peut saisir des données décimales.

Cdt

Henri

Bonsoir et merci de la réponse,

J'ai remplacé l'ancien code par le nouveau et toujours un bug au même endroit

annotation 2020 03 11 194109

J'ai changé le chiffre dans "Right(NomShape, 2))" et ça ne passe pas non plus

J'ai fait "Range ("J16") = NomShape" et le numéro après "Down Arrow" change en augmentant de 1 sans rien changer dans "Right(NomShape, 2))"

annotation 2020 03 11 200411 annotation 2020 03 11 2004111

Bonjour,

Pourquoi se compliquer l'existence?

Remplace la ligne en jaune par celle-ci.

.Shapes(NomShape).Delete

Chez moi ça fonctionne

Cdt

Henri

Bonjour,

Un exemple de ce que l'on peut faire avec une InputBox.

Ici ne tolère qu'une saisie numérique différente de 0 :

Option Explicit

Sub essaiInput()
Dim dd As Double
    Do
        dd = InBox()
    Loop While dd = 0
    MsgBox "Votre saisie : " & dd
End Sub

Function InBox() As Double
Dim iVar As Variant
    iVar = InputBox("Saisie numérique", "SAISIE")
    If StrPtr(iVar) = 0 Then
        MsgBox "Vous avez annulé", vbCritical + vbOKOnly, "Annulation utilisateur"
    ElseIf iVar = vbNullString Then
        MsgBox "Aucune saisie", vbCritical + vbOKOnly, "Pas de saisie utilisateur"
    Else
        If IsNumeric(iVar) Then InBox = iVar
    End If
End Function

Bonsoir et merci AFEH

J'ai remplacé la ligne en jaune par votre ligne et ça fonctionne.

Par contre, existe-t-il une solution pour éviter de voir la sélection de la flèche ?

Bonsoir pijaku et merci de la réponse,

Dans votre exemple il n'y a que la saisie d'un nombre et il n'y a pas le problème de la flèche

Bonjour JeanF44 et le forum

La solution est dans la version de gmb (je ne l'avais pas consultée).

remplacer le code par celui-ci

Private Sub CommandButton1_Click()
    Dim Résultat$, NomShape As Object
    Résultat = Val(Replace(Me.TextBox1, ",", ".")) * Val(Replace(Me.TextBox2, ",", "."))
    With ActiveSheet
        Set NomShape = .Shapes.AddShape(msoShapeDownArrow, 592.2, 121.2, 20.4, 67.2)
            .Range("J14") = Résultat
        Unload Me
            Application.Wait Now + TimeValue("0:0: 3")
        NomShape.Delete
            .Range("J14,N5,N7").ClearContents
    End With
End Sub

cdt

Henri

Re AFEH,

Moi non plus je n'avais pas vu la solution de gmb !!!

Elle était dans un fichier que je n'ai pas vu ?

Bonsoir à tous et merci,

Par contre, je ne connaissais pas la fonction Val(…..) et replace(…) et j'ai un peu de mal à ls comprendre étant débutant.

Je ne sais pas si il y a un livre ou documentation avec exemple pour expliquer toutes ces fonctions ou codes qui ne sont pas faciles à trouver !!!

Re bonsoir,

J'ai essayé d'appliquer l'affichage de la flèche à une autre application mais je rencontre quelques bugs.

J'ai un bouton sur lequel j'appuie et une flèche doit apparaître pour montrer l'onglet qui change de couleur puis disparaître quand la couleur de l'onglet revient à la couleur initiale.

Mes bugs sont :

Si je supprime uniquement le code "Application.Wait Now + TimeValue("0:0: 3")" : La flèche n'apparaît pas

Si je supprime uniquement le code "MsgBox ("Test")" : La flèche n'apparaît pas

Si je supprime les deux codes ci-dessus la flèche n'apparaît pas et la couleur de l'onglet ne change pas

Je joins le fichier :

Bonjour,

En fait tu n'as pas bug

pour les 3 cas cités: la fléche apparait et l'onglet se met en rouge et aussitôt tu supprimes ton instruction, ça va tellement vite qu'on ne s'aperçoit de rien.

Sub Bouton1_Cliquer()
Dim NomShape As Object                                                              ' Nom objet
With ActiveSheet
        Set NomShape = .Shapes.AddShape(msoShapeDownArrow, 92.4, 108.4, 31.2, 262.8)
            .Tab.Color = RGB(255, 0, 0)        ' Couleur onglet
           ' Application.Wait Now + TimeValue("0:0: 3")
          'IL FAUT METTRE ICI UNE INSTRUCTION
       '  MsgBox ("Test")
         NomShape.Delete
            .Tab.Color = False
End With
End Sub

Après l'affichage de la flèche et mise en couleur rouge de l'onglet, il faut insérer une instruction.

Une fois que l'instruction est finie, la flèche disparait et la couleur de l'onglet est supprimée.

Cdt

Henri

Rechercher des sujets similaires à "utilisation inputbox"