Verifier si un nombre contient des chiffres inférieur à

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
6
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


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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
53
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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