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

[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

Staple1600

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

Bonsoir à tous


Juste de passage pour remercier mapomme
(cf mon précédent message et sa prise en compte à 6h15 du matin par mapomme
Quelle promptitude , tu dors jamais ?)
 

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

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
 

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
 

Discussions similaires

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