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+++

Jacky67

XLDnaute Barbatruc
Bonjour,
En formule à tester
Code:
=STXT(A1;TROUVE("KDL";A1)+3;TROUVE("/";STXT(A1;TROUVE("KDL";A1)+3;NBCAR(A1)))-1)
 

Zon

XLDnaute Impliqué
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+++
 

Jacky67

XLDnaute Barbatruc
Bonsoir jacky67
Merci pour la formule , mais dans la cas suivant elle n'est pas fonctionnelle : A1= 142/2012 KDL.P 75?
A+
Re..
Et
Code:
=STXT(A1;TROUVE("KDL";A1)+3;SIERREUR(SI(TROUVE(".";STXT(A1;TROUVE("KDL";A1)+3;99));2);1))
En anglais
Code:
=MID(A1,FIND("KDL",A1)+3,IFERROR(IF(FIND(".",MID(A1,FIND("KDL",A1)+3,99)),2),1))
 

Pièces jointes

  • KDL.xlsx
    18.6 KB · Affichages: 5
Dernière édition:

chaelie2015

XLDnaute Accro
Bonjour ZON
Donc cette fonction ExtraireLettreApresKDL() extrait une lettre suivant "KDL" dans la chaîne d'entrée et renvoie cette lettre, ou une combinaison avec le point si nécessaire, ou une chaîne vide si aucune lettre ne suit "KDL" dans la chaîne.
MERCI
 

Discussions similaires

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