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 ^_^
10 oct. 2008 à 22:43
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
14 déc. 2006 à 16:58
Je n'ai pas bien compris comment proceder... vous pouvez mieux m'expliquer svp !
1 mars 2004 à 20:19
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 ;-)
1 mars 2004 à 19:35
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.