Rechercher une données parmis plusieur données dans une cellule

Résolu
cs_Alban83 Messages postés 24 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 21 septembre 2010 - 21 sept. 2010 à 10:49
cs_Alban83 Messages postés 24 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 21 septembre 2010 - 21 sept. 2010 à 13:57
Bonjour tout le monde
Mon probléme est que je ne sais pas comment récupérer une donnée dans une cellule.
Voila ce qu'il peut avoir dans une cellule:

COUNTER4,60,CSTA_MONITOR_10,75,CSTA_SESSION_10,1,SWL_VERSION,6,SWL_ACKNOWLEDGE_CODE,7084,

Il peut y avoir plus ou moin de données.
Ma macro doit chercher SWL_VERSION et récuperer la donnée qui se trouve apres, 6 dans ce cas.

Pouvez vous me données des piste?

Merci
Alban

2 réponses

jordane45 Messages postés 36920 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 février 2023 341
21 sept. 2010 à 11:26
Bonjour,
en VBA tu as l'instruction "InStr" qui permet de retourner la position d'un caractère dans une chaine de caractères....

voici par exemple comment tu pourrais l'utiliser :
Sub testVal()
Val_a_Tester = "COUNTER4,60,CSTA_MONITOR_10,75,CSTA_SESSION_10,1,SWL_VERSION,6,SWL_ACKNOWLEDGE_CODE,7084, "
val_a_Comparer = "SWL_VERSION,"
' recherche de la position dans la valeur de "SWL_VERSION"
    Position = InStr(1, Val_a_Tester, val_a_Comparer)
' Recherche de la prochaine virgule après SWL_VERSION,
    Pos_Virg = InStr(Position + Len(val_a_Comparer), Val_a_Tester, ",")

'recupération de la valeur se trouvant à l'endroit désiré ....
    RESULT = Mid(Val_a_Tester, Position + Len(val_a_Comparer), Pos_Virg - (Position + Len(val_a_Comparer)))
End Sub


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
3
cs_Alban83 Messages postés 24 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 21 septembre 2010
21 sept. 2010 à 13:57
Merci pour le code!
C'est ce que je voulais!
Je l'ai un peux adapté.
Merci Jordane.

Sub testVal()

Dim ligne As Long
ligne = Range("A1").End(xlDown).Row

For i = 2 To ligne
    Val_a_Tester = Cells(i, 21)
    val_a_Comparer = "SWL_VERSION,"
    If Val_a_Tester <> "" Then

' recherche de la position dans la valeur de "SWL_VERSION"
       Position = InStr(1, Val_a_Tester, val_a_Comparer)
       If Position <> "0" Then
' Recherche de la prochaine virgule après SWL_VERSION,
       Pos_Virg = InStr(Position + Len(val_a_Comparer), Val_a_Tester, ",")
       

'recupération de la valeur se trouvant à l'endroit désiré ....
      RESULT = Mid(Val_a_Tester, Position + Len(val_a_Comparer), Pos_Virg - (Position + Len(val_a_Comparer)))
      Cells(i, 22) = RESULT
      End If
    End If
Next i
    
End Sub
0