Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…