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

  • Initiateur de la discussion Initiateur de la discussion clochete
  • Date de début Date de début

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 !

C

clochete

Guest
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 modification par un modérateur:

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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
7
Affichages
2 K
syriak
S
Y
Réponses
2
Affichages
814
Retour