[RESOLU] Probleme de tri de chaine de caractere...
En VB
J' ai ==>TOTO_AVANT=" 1;2;3;4;4;5;6;7;7"
Je veux transformer TOTO_AVANT pour enlever les doublons
ex==> TOTO_APRES="1;2;3;4;5;6;7"
C'est peut etre super simple mais je galaire....
Merci d'avance
'********************je recommence**********
Dim DVALEUR1 as Integer
Dim DVALEUR2 as Variant
DIM DRESULTAT as Variant
DVALEUR1 = 2
DVALEUR2="1-12-3-4-15-"
'****quand je fait...
DRESULTAT = InStr(1,DVALEUR2, DVALEUR1)
'****Ca devrait me renvoyer 0 ==>MAIS CA ME RENVOIE 4?????
'*
'*
'***Peut etre un probleme de declaration de variable?...
merci bien pour votre aide mais j'ai touver plus simple....
Citation:
Envoyé par Muhad'hib
Salut,
Je vois que j'avais mal compris ton besoin (apparament je suis pas le seul !).
En ce qui concerne ton code essaie comme ça plutot :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Sub toto()
Dim DVALEUR1 As String
Dim DVALEUR2 As String
Dim DRESULTAT As Integer
DVALEUR1 = 2
DVALEUR2 = "1-12-3-4-15-"
DRESULTAT = InStr(1, DVALEUR2, DVALEUR1)
Debug.Print DRESULTAT
End Sub |
C'est bien des déclarations que vient le pb.
Ayant (je pense) mieux compris ton pb, c'est User qui tiens la solution :
Citation:
Envoyé par User
le mieux c'est d'utiliser la fonction split pour transformer la chaine en un tableau de valeur
Si tu veux tu dois pouvoir t'inspirer de ça (même si c'est lourd comme méthode :oops: ) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| Sub toto()
Dim DVALEUR2 As String
Dim Tableau() As String 'déclaration du tableau avec doublons
Dim Resultat() As String 'déclaration du tableau sans doulons
Dim I As Integer
Dim J As Integer 'sert à pointer Resultat
Dim Flag As Boolean
Dim Compteur As Integer 'sert à pointer Tableau
Dim Toto_apres As String
DVALEUR2 = "1-1-12-3-4-15-1-3"
On Error GoTo Toto_Err
Tableau = Split(DVALEUR2, "-")
'voir tableau
For I = 0 To 6
Debug.Print Tableau(I)
Next
'remplir resultat sans les doublons
J = 0
ReDim Resultat(0)
Flag = False
Compteur = 0
Do 'on parcourt tableau
For I = 0 To J 'on parcourt resultat pour tester si c'est un doublon
If Tableau(Compteur) = Resultat(I) Then
Flag = True
Exit For
End If
Next
If Flag = False Then 'si pas un doublon => ajoute la nouvelle valeur
Resultat(J) = Tableau(Compteur)
J = J + 1
ReDim Preserve Resultat(J)
End If
Flag = False
Compteur = Compteur + 1
Loop
Toto_Err:
If Err.Number = 9 Then
ReDim Preserve Resultat(J - 1)
For I = 0 To J - 1
Debug.Print Resultat(I)
Toto_apres = Toto_apres & "-" & Resultat(I)
Next
Toto_apres = Right(Toto_apres, Len(Toto_apres) - 1)
Debug.Print Toto_apres
Exit Sub
Else
MsgBox "Erreur N° " & Err.Number & " " & Err.Description
End If
End Sub |
A+
Citation:
Envoyé par GESCOM2000
Salut,
J'ai trouver plus simple!!!!!!!!!***
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Sub toto()
Dim DVALEUR1 As variant
Dim DVALEUR2 As variant
Dim DVALEUR3 As variant
Dim DRESULTAT As variant
DVALEUR1 = 2 'valeur à rechercher dans la chaine
'******************************************
'**ce qui donne -2- et la il confond pas avec -12-**
DVALEUR3= "-" & DVALEUR1 & "-"
'******************************************
DVALEUR2 = "1-12-3-4-15-"
DRESULTAT = InStr(1, DVALEUR2, DVALEUR3)
Debug.Print DRESULTAT
'**Bref defois ont ce prend la tete pour des bricole....
End Sub |
A+
[RESOLU]