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

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:

Modeste geedee

XLDnaute Barbatruc

Pièces jointes

  • renvoyer-la-position-dun-mot-dans-une-chaine-de-caracteres.xlsm
    15.3 KB · Affichages: 34

clochete

XLDnaute Nouveau
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 :cool:

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 :D
Clochete
 

Staple1600

XLDnaute Barbatruc
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
 

clochete

XLDnaute Nouveau
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
:cool:
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 336
Membres
111 104
dernier inscrit
JEMADA