Variable single dans inputbox et virgule du pavé numérique
Fermé
refcemad
Messages postés
39
Date d'inscription
mercredi 12 janvier 2011
Statut
Membre
Dernière intervention
10 mai 2018
-
4 déc. 2015 à 00:38
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 4 déc. 2015 à 12:59
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 4 déc. 2015 à 12:59
A voir également:
- Variable single dans inputbox et virgule du pavé numérique
- Pavé numérique bloqué - Guide
- Verrouillage numérique PC portable : débloquer le clavier - Guide
- É majuscule sans pavé numérique - Forum Clavier
- É sur un clavier ASUS de PC PORTABLE - Forum Bureautique
4 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
4 déc. 2015 à 00:54
4 déc. 2015 à 00:54
Bonjour,
Tu pourrais utiliser les expressions régulières (les regex) pour vérifier que la valeur entrée est bien un nombre
Par exemple, la regex suivante fonctionne uniquement avec des valeurs du style :
4646
456,878
.5646
0,4564
887.56545
Regex:
Voici des explications et des exemples pour la mise en pratique des regex dans Excel
https://www.commentcamarche.net/faq/41005-vba-initiation-aux-expressions-rationnelles
Ou encore :
https://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops
Tu pourrais utiliser les expressions régulières (les regex) pour vérifier que la valeur entrée est bien un nombre
Par exemple, la regex suivante fonctionne uniquement avec des valeurs du style :
4646
456,878
.5646
0,4564
887.56545
Regex:
^(([0-9]+(\.|,)([0-9]+\b)?|\.[0-9]))|^([0-9]*)$
Voici des explications et des exemples pour la mise en pratique des regex dans Excel
https://www.commentcamarche.net/faq/41005-vba-initiation-aux-expressions-rationnelles
Ou encore :
https://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops
refcemad
Messages postés
39
Date d'inscription
mercredi 12 janvier 2011
Statut
Membre
Dernière intervention
10 mai 2018
1
4 déc. 2015 à 01:36
4 déc. 2015 à 01:36
Bonjour et merci de l'intérêt porté à ma question.
Mais... Ouh là ! Ca va faire mal. J'avoue, je n'ai pas encore tout lu mais j'ai quand même été jusqu'à :
"Dans votre éditeur VBA, dans le menu outils, allez dans références. Parcourez les différentes références et cochez : "Microsoft vbscript regular expression 5.5" "
Ca, c'est fait.
Je n'ai pas l'habitude que tout me tombe tout cuit dans le bec mais pour une fois, si je pouvais avoir un tuyau... J'en fait quoi du Regex
^(([0-9]+(\.|,)([0-9]+\b)?|\.[0-9]))|^([0-9]*)$ ?
En tout cas, merci beaucoup pour votre sollicitude. A vous lire (mais demain, maintenant).
Mais... Ouh là ! Ca va faire mal. J'avoue, je n'ai pas encore tout lu mais j'ai quand même été jusqu'à :
"Dans votre éditeur VBA, dans le menu outils, allez dans références. Parcourez les différentes références et cochez : "Microsoft vbscript regular expression 5.5" "
Ca, c'est fait.
Je n'ai pas l'habitude que tout me tombe tout cuit dans le bec mais pour une fois, si je pouvais avoir un tuyau... J'en fait quoi du Regex
^(([0-9]+(\.|,)([0-9]+\b)?|\.[0-9]))|^([0-9]*)$ ?
En tout cas, merci beaucoup pour votre sollicitude. A vous lire (mais demain, maintenant).
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
4 déc. 2015 à 09:28
4 déc. 2015 à 09:28
Voici un exemple :
Et la fonction qui va avec (celle qui contient la regex)
Sub exemple() Dim unevaleur As String unevaleur = "13565,45" If test_si_nombre(unevaleur) Then MsgBox "C'est un nombre" Else MsgBox "Ce n'est pas un nombre" End If End Sub
Et la fonction qui va avec (celle qui contient la regex)
Private Function test_si_nombre(ByVal valeuratester) As Boolean 'Dans votre éditeur VBA, dans le menu outils, allez dans références. et cochez : ' ' "Microsoft vbscript regular expression 5.5"" Dim reg As Object Set reg = CreateObject("vbscript.regexp") 'La regex : reg.Pattern = "^(([0-9]+(,)([0-9]+\b)?|\.[0-9]))|^([0-9]*)$" 'Renvoie True ou False en fonction du test test_si_nombre = reg.test(valeuratester) End Function
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié par pijaku le 4/12/2015 à 13:01
Modifié par pijaku le 4/12/2015 à 13:01
Bonjour refcemad,
Salutations à Jordane45,
Une autre possibilité avec une fonction de test et un peu de récursivité :
EDIT : oups!!!
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
Salutations à Jordane45,
Une autre possibilité avec une fonction de test et un peu de récursivité :
Sub TestMasse_() Dim Masse As Single Do While Masse < 10 Masse = F_Masse() Loop MsgBox "masse = " & Masse End Sub Function F_Masse() As Single Dim masseTest 'remplace le . par , masseTest = Replace(InputBox("Ici la Masse :"), ".", ",") If Not IsNumeric(masseTest) Then masseTest = F_Masse() F_Masse = masseTest End Function
EDIT : oups!!!
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
4 déc. 2015 à 00:55
Si tu ne veux que la virgule, il suffit de retirer le "\.|" qui se trouve au "presque" début de la regex.