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

Résolu
Messages postés
24
Date d'inscription
vendredi 3 juillet 2009
Statut
Membre
Dernière intervention
21 septembre 2010
-
Messages postés
24
Date d'inscription
vendredi 3 juillet 2009
Statut
Membre
Dernière intervention
21 septembre 2010
-
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

Messages postés
34717
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 janvier 2022
358
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
Messages postés
24
Date d'inscription
vendredi 3 juillet 2009
Statut
Membre
Dernière intervention
21 septembre 2010

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