[RÉSOLU] Renvoyer la position d'un mot dans une chaîne de caractères

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

clochete

XLDnaute Nouveau
Bonjour les artistes forumeurs !

Je dispose d'une fonction qui extrait un mot selon sa position dans la chaîne. Cette fonction sert à extraire des caractéristiques variables dans de très longues chaînes de caractères. Hors, repérer la position du mot à extraire dans ces chaînes est compliqué et source de nombreuses erreurs.

Je souhaiterai donc soit modifier la fonction ci-dessous soit en écrire une nouvelle qui me renverrai la position du mot dans la chaîne.

Code:
Function Extraire_Mot(Texte As String, No_Mot) As String
Dim CountMot As Long
  
        With Application.WorksheetFunction
        CountMot = Len(Texte) - Len(.Substitute(Texte, " ", "")) + 1
            No_Mot = No_Mot - 1
            Extraire_Mot = Mid(Mid(Mid(.Substitute(Texte, " ", "^", No_Mot), 1, 256), _
                .Find("^", .Substitute(Texte, " ", "^", No_Mot)), 256), 2, _
                .Find(" ", Mid(Mid(.Substitute(Texte, " ", "^", No_Mot), 1, 256), _
                .Find("^", .Substitute(Texte, " ", "^", No_Mot)), 256)) - 2)
      
    End With
End Function

Jusqu'à présent, toute mes tentatives me renvoient la position du premier caractère du mot cherché et non la position du mot.

Merci à tous pour votre aide.

Clochete
 
Dernière édition:

Pièces jointes

Re : Renvoyer la position d'un mot dans une chaîne de caractères

Bonsoir à tous,

Non sans mal, je tiens enfin la solution pour renvoyer la position d'un mot dans une chaîne de caractères. J'ai retrouvé mon chemin 😎

Code:
Function Position_Mot(Texte, Mot)

Dim Tablo() As String
Dim i As Integer

Tablo = Split(Texte, " ", -1, 1)
For i = 0 To UBound(Tablo)
    If Tablo(i) = Mot Then
     Position_Mot = i + 1
      End If
  Next i
  
End Function

Merci à tous pour votre aide 😀
Clochete
 
Re : [RÉSOLU] Renvoyer la position d'un mot dans une chaîne de caractères

Bonsoir à tous

clochete
Pour infos:
L'espace étant le séparateur par défaut, et -1 la valeur par défaut de limite
tu peux écrire ta fonction ainsi
Code:
Function Position_Mot(Texte, Mot)
Dim Tablo() As String
Dim i As Integer
Tablo = Split(Texte, , , 1)
For i = 0 To UBound(Tablo)
    If Tablo(i) = Mot Then
     Position_Mot = i + 1
      End If
Next i
End Function
 
Re : [RÉSOLU] Renvoyer la position d'un mot dans une chaîne de caractères

Bonsoir Staple1600,

Merci. J'ai tendance à oublier que les arguments laissés par défaut n'ont pas besoin d'être renseignés.
M'est d'avis que tu me le rediras 😉

Douce nuit de flanelle
😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour