Autres (RESOLU) Extraire des lettres âpres "KDL"

chaelie2015

XLDnaute Accro
Bonsoir Forum
Suivant le même principe de la discussion de "Extraire une année composée de quatre chiffres ("aaaa")" précédente , cette fois-ci, je souhaite extraire les lettres après 'KDL' soit L ou .L ou P ou .P
exemple un :dans A1 = 071/2011 KDL.P/11 donc j'aurai dans B1= .P
exemple deux : A1 =73/2012-KDLL/26 donc j'aurai dans B1= L
j'ai trouvé cette fonction
VB:
Function ExtraireLettreApresKDL(chaine As String) As String
    Dim positionKDL As Integer
    Dim extrait As String
    
    positionKDL = InStr(1, chaine, "KDL", vbTextCompare)
    
    If positionKDL > 0 And positionKDL < Len(chaine) - 2 Then
        extrait = Mid(chaine, positionKDL + 3, 1)
        If extrait = "L" Or extrait = ".L" Or extrait = "P" Or extrait = ".P" Then
            ExtraireLettreApresKDL = extrait
        Else
            ExtraireLettreApresKDL = ""
        End If
    Else
        ExtraireLettreApresKDL = ""
    End If
End Function
Mais elle n'affiche pas des résultats souhaité comme dans l'exemple un ci dessus
Merci
 
Dernière édition:
Solution
Salut,

Mid(chaine, positionKDL + 3, 1) te donne qu'un caractère dans la chaine,
si c'est P ou L la fonction retourne P ou l
si c'est le point il faut tester le caractère juste après pour voir si c'est L ou P.

un exemple de code

VB:
If positionKDL > 0 And positionKDL < Len(chaine) - 2 Then
      extrait = Mid(chaine, positionKDL + 3, 1)

      Select Case extrait
         Case "L", "P": ExtraireLettreApresKDL = extrait
         Case ".":
            extrait = Mid(chaine, positionKDL + 4, 1)
            If extrait = "L" Or extrait = "P" Then ExtraireLettreApresKDL = "." & Mid(chaine, positionKDL + 4, 1)
      End Select
   Else
      ExtraireLettreApresKDL = ""
   End If


A+++

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
315 127
Messages
2 116 534
Membres
112 771
dernier inscrit
mikadu49