Récupérer une valeur numérique maximale dans une chaine de caractères

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 258 fois - Téléchargée 26 fois

Contenu du snippet

Ce bout de code permet de récupèrer la valeur numérique maximale contenu dans une chaine de caractères.

Je m'explique :

Votre chaine de caractère se compose de la façon suivante :
"20,12,1,5,2560,12356,100,202,25,74"

Cette fonction va donc comparer chaque valeur numérique dans la chaine pour en déterminer la plus grande.

Le séparateur peut être soit une virgule, un point-virgule voir même un espace. Tout le code se situe dans une fonction donc facilement exploitable à partir de n'importe quel projet.

Source / Exemple :


Public Function Valeur_Maxi(Chaine As String, Separateur As String) As Integer

Dim Recup As String
Dim Partiel As String

' Ajoute à la chaine un séparateur de plus
Chaine = Chaine & Separateur

' Compte le nbr de caractère
For i = 1 To Len(Chaine)
    
    ' Si i trouve le séparateur ou arrive à la fin
    If Mid$(Chaine, i, 1) = Separateur Or i = Len(Chaine) Then
        
        ' Si Recup < Partiel alors Recup = Partiel
        If Val(Recup) < Val(Partiel) Then Recup = Partiel
        Partiel = ""
        
    Else
    
        ' Incrémente la variable de comparaison
        Partiel = Partiel + Mid$(Chaine, i, 1)
        
    End If

Next i

' Récupère la valeur maxi
Valeur_Maxi = CInt(Recup)

End Function

Conclusion :


Pour le tester c'est très simple:
-----------------------------------

1. Commencer un nouveau projet

2. Ajouter un contrôle texte et un bouton de commande

3. Ajouter "20,12,1,5,2560,12356,100,202,25,74" dans le contrôle texte

4. Utilisez le code MsgBox Valeur_Maxi(Text1.text, ",") dans le bouton de commande

Have Fun ^_^

A voir également

Ajouter un commentaire

Commentaires

yiab
Messages postés
27
Date d'inscription
jeudi 10 juillet 2008
Statut
Membre
Dernière intervention
31 mai 2015
-
bonjour,
tout d'abord merci pour ton code qui m'a été très utile

je suis débutant en vb6, et j'essaye malgré tout de développer de quoi manipuler du Gcode
je suis donc tombé sur ton code qui fonctionne tres bien avec les entier les "Long" et les nombres a virgules
mais qui ne voulait rien savoir quand il s'agit de chiffres tels que "0,1 ou 0,xx"

donc j'ai tatonné, et j'ai fini par avoir l'idée de remplacer :
Valeur_Maxi = Cint(Recup) (ou plutôt Csng(Recup) en ce qui me concerne)
par :
Valeur_Maxi = Val(Recup)

et la ça marche nickel ! pour ceux que ça interesse

Public Function Valeur_Maxi(Chaine As String, Separateur As String) As Single
Dim Recup As String
Dim Partiel As String
' Compte le nbr de caractère
For i = 1 To Len(Chaine)
'Incrémente la variable de comparaison
Partiel = Partiel + Mid$(Chaine, i, 1)
'Si i trouve le séparateur ou arrive à la fin
If Mid$(Chaine, i, 1) Separateur Or i Len(Chaine) Then
' Si Recup < Partiel alors Recup = Partiel
If Val(Recup) < Val(Partiel) Then Recup = Partiel
Partiel = ""
End If
Next i
' Récupère la valeur maxi
Valeur_Maxi = Val(Recup)
End Function

Private Sub Command1_Click()
'le text2 renvoie la valeur recup située apres le X
Text2.Text = Valeur_Maxi(Text1.Text, "X")
'le text3 renvoie la valeur recup située apres le Z
Text3.Text = Valeur_Maxi(Text1.Text, "-")
end sub
voilà une Form, 3 textbox
vous coller ça (un bout de Gcode) dans le Text1

G01 Y0 Z-0.445
G01 X0.2 Z-0.383
G01 X0.4 Z-0.383
G01 X0.6 Z-0.445
G01 X0.8 Z-0.383
G01 X1 Z-0.383
G01 X1.2 Z-0.383
G01 X1.4 Z-0.32
G01 X1.6 Z-0.383
G01 X1.8 Z-0.383
G01 X2 Z-0.383
G01 X2.2 Z-0.32
G01 X2.4 Z-0.383
G01 X2.6 Z-0.32
G01 X2.8 Z-0.32
G01 X3 Z-0.445
G01 X3.2 Z-0.383
G01 X3.4 Z-0.445
G01 X3.6 Z-0.32
G01 X3.8 Z-0.383
G01 X4 Z-0.383
G01 X4.2 Z-0.32
G01 X4.4 Z-0.32
G01 X4.6 Z-0.383
G01 X4.8 Z-0.383
G01 X5 Z-0.383
G01 X5.2 Z-0.383
G01 X5.4 Z-0.383
G01 X5.6 Z-0.32
G01 X5.8 Z-0.445
G01 X6 Z-0.445
G01 X6.2 Z-0.445
G01 X6.4 Z-0.32
G01 X6.6 Z-0.32
G01 X6.8 Z-0.445

voilà et merci nofutur pour ton code qui m'a permis de mieux appréhender
cette chose mystérieuse qu'est le VB6
Sinsitrus
Messages postés
863
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
-
Salut !
Je n'ai pas bien compris comment proceder... vous pouvez mieux m'expliquer svp !
cs_NoFutur
Messages postés
171
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007
-
Eh bien si j'avais VB6 j'aurai pu utilisé cette fonction mais comme je l'ai pô j'ai du faire avec les moyens du bord lol

Mais maintenant ça y est j'ai compris à quoi y sert Split dans VB6 !
On dira que c'est le Split du VB5 pour faire original :o)

@plus ;-)
cs_rene38
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10 -
Ou bien en utilisant la fonction SPLIT :
Public Function Valeur_Maxi(Chaine As String, Separateur As String) As Integer
Dim tabl() As String, i As Integer
tabl = Split(Chaine, Separateur)
Valeur_Maxi = Val(tabl(0))
For i = 1 To UBound(tabl)
If Val(tabl(i)) > Valeur_Maxi Then Valeur_Maxi = Val(tabl(i))
Next i
End Function

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.