Verifier si un nombre contient des chiffres inférieur à

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 17 janv. 2012 à 10:52
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 17 janv. 2012 à 16:43
Bonjour

j'ai un nombre de N chiffre (N <= 10)

je veux verifier si le nombre ne contient
pas un chiffre supérieur à N-1
ex
si j'ai 1234 4>3
0123 c'est bon
120470 7>5
si N = 10 tous les chiffres sont acceptés

merci

7 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 janv. 2012 à 11:07
Bonjour,

Pas sûr de t'avair bien compris.
Si c'est ce que j'ai cru deviner ===>> transposes ceci (pour VB6) en VB.Net ===>>


Private Sub Command1_Click()
  Dim nbmax As Integer, nombre As String
  nbmax = 5
  nombre = "01264"
  MsgBox toto(nbmax, nombre)
End Sub
Private Function toto(nbmax As Integer, nombre As String) As Boolean
  Dim i As Integer
  toto = True
  For i = 1 To Len(nombre)
    If Val(Mid(nombre, i, 1)) > nbmax Then
      toto = False
      Exit Function
    End If
  Next
End Function

Encore que sous VB6, j'aurais utilisé strconv (ne sais pas si possible en VB.Net)
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 janv. 2012 à 11:10
A moins que tu n'aies voulu dire ceci :
Private Sub Command1_Click()
  Dim nbmax As Integer, nombre As String
  nombre = "01264"
  MsgBox toto(nombre)
End Sub
Private Function toto(nombre As String) As Boolean
  Dim i As Integer
  toto = True
  For i = 1 To Len(nombre)
    If Val(Mid(nombre, i, 1)) > Len(nombre) Then
      toto = False
      Exit Function
    End If
  Next
End Function

qui t'affranchit de nbMax ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 janv. 2012 à 11:29
ceci étant dit :
Si VB.Net offrait la fonction STRCONV, je l'utiliserais volontiers +++>> un array ===>> fonction Math.max sur cet array


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
17 janv. 2012 à 11:57
Bonjour,
Une idée...

    Private Function ChiffresBornes(ByVal nombre As String) As Boolean
        Dim listeNombres As String = "0123456789".Substring(0, nombre.Length + 1)
        For Each cr As Char In nombre
            If listeNombres.Contains(cr) = False Then
                Return False
            End If
        Next
        Return True
    End Function

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
17 janv. 2012 à 13:54
Bonjour,

Si je comprends bien, tu as un nombre et N est est sa longueur (longueur qui est inférieur à 11):
j'ai un nombre de N chiffre (N <= 10)


je veux verifier si le nombre ne contient
pas un chiffre supérieur à N-1


Dans ce cas:
N = longueur du nombre
0123456789 (N 10) et (N - 1 9)
Si tu scrutes tous les chiffres du nombre, tu n'en trouveras jamais un chiffre supérieur à N-1, (9).

En revanche dans ce cas:
15932 (N 5) et (N - 1 4)
Tu trouveras des chiffres supérieurs à (N-1)

C'est ça que tu veux comme résultat?
Ce qui me ferait réfléchir comme ça:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Nombre = "15932"
        If ContientChiffresSupérieurs(Nombre) = True Then
            MsgBox("Le nombre " & Nombre & " contient des chiffres supérieurs à la (longueur du nombre -1)")
        Else
            MsgBox("Le nombre " & Nombre & " ne contient pas des chiffres supérieurs à la (longueur du nombre -1)")
        End If
    End Sub

    Private Function ContientChiffresSupérieurs(ByVal Nombre As String) As Boolean
        Dim Longueur = Nombre.Length
        Dim Resultat As Boolean = False
        For Each Ch As Char In Nombre
            If IsNumeric(Ch) = True Then
                If Val(Ch) > (Longueur - 1) Then Resultat = True
            End If
        Next
        Return Resultat
    End Function





Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
17 janv. 2012 à 15:24
je pensais sans faire de boucle
avec une boucle
ucfoutu ton code est bon il faut l'adapter
mdevaux62 j'ai un peu modifié
plutot

Dim listeNombres As String = "0123456789".Substring(word.Length)
'listNombres liste de chiffre exclue
dim flag as boolean
flag = false
For Each cr As Char In nombre
  If listeNombres.Contains(cr) = True Then
       flag = true
       Exit For
   End If
 Next
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 janv. 2012 à 16:43
comme je te l'ai dit plus haut, tu peux éviter une boucle si VB.Net t'offre la fonction strconv.
et en utilisant Math.Max
Regarde par exemple ceci (écrit pour VBA) avec strconv (si tu l'as) et WorksheetFunction.Max (que toi, tu devrais remplacer par Math.Max)

Private Function toto(nombre As String) As Boolean
  Dim titi() As Byte
  titi = StrConv(nombre, vbFromUnicode)
  If Chr(WorksheetFunction.Max(titi)) <Len(nombre) Then toto True
End Function

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous