Split et récuperation des données

Résolu
scrincer Messages postés 18 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 3 avril 2009 - 5 sept. 2008 à 16:57
jean_marc_n2 Messages postés 170 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 24 janvier 2009 - 7 sept. 2008 à 13:44
Voila mon probleme:

Dim monTab() As String
monTab = Split(Adodc1.Recordset.Fields("Block").Value, ";")

En fait je coupe:

22;23;24;25;14;3;66;67;68;69;80;91;95;84;73;74;75;76;32;31;30;29;18;7;

Je voudrais par la suite pouvoir utiliser les valeurs pour faire un espece de

picture1(montab(1)).blablabla 

J'obtient un erreur puisque les variables sont en string (Type Mismatch)

n'y aurai-t-il pas un moyen de redim montab en preservant leur valeur en integer ?

2eme question comment je peux savoir la plus grande valeur de montab(?) je connais absolument rien au tableau
N'y a t-il pas un espece de truc similaire a UBOUND ????

merci pour vos reponses !

3 réponses

scrincer Messages postés 18 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 3 avril 2009
5 sept. 2008 à 17:22
OK dsl pour la question je viens de trouver :(

Dim monTab() As String
monTab = Split(Adodc1.Recordset.Fields("Block").Value, ";")
For i = 0 To UBound(monTab)
block = Val(monTab(i))
pbmap(block).Tag = "B"
Next i

Mais tant qu'a y etre j'aurai une question extremement stupide, avec le controle ADODC comment puis-je sauter d'un enregistrement a l'autre sans passer necessairement du 1 a 2 pour aller a 3... je trouve pas la commande qui doit etre asser simple
3
DblK Messages postés 51 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 2 octobre 2008
5 sept. 2008 à 18:45
Bonjour,

Juste une petite remarque la boucle suivante :

For i = 0 to Ubound(monTab)
doit être remplacé par
For i = 0 to Ubound(monTab) - 1

Car le tableau commence à 0.
De plus il faut savoir qu'à chaque itération de la boucle, vb recalcul ubound(montab) ; donc cela ralenti ton code pour rien.

Il serait plus judicieux de calculer la valeur de "ubound(montab) -1" dans un integer ou long et de l'utiliser dans ta boucle.

En ce qui concerne ta question sur le controle ADODC je n'en sais rien xD

DblK
0
jean_marc_n2 Messages postés 170 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 24 janvier 2009
7 sept. 2008 à 13:44
Hello,

pour calculer la plus grande valeur de ton tableau, il suffit de parcourir tous les élémente et de calculer le maximum au fur et à mesure.

Voici par exemple:

Dim montab() As String
Dim upBound As Long
Dim s As String
Dim i As Long
Dim Max As Long

s = "12;78;45;23;1;98;46;32;91;17;32"

montab = Split(s, ";")

Max = -1
upBound = UBound(montab)
For i = 0 To upBound
If CLng(montab(i)) > Max Then
Max = CLng(montab(i))
End If
Next i

MsgBox "Plus grande valeur de montab() : " & Max

Pour tout ce qui concerne la manipulation de chaînes de caractères, je te conseille la lecture de ces 2 articles du site de la FAQ VB:

http://faq.vb.free.fr/index.php?question=188

et

http://faq.vb.free.fr/index.php?question=187

Tu y trouveras du code prêt à l'emploi, des explications détaillées et de nombreux liens vers la documentation de Visual Basic concernant ces questions.

Cordialement;

(jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
0
Rejoignez-nous