XL 2021 Extraire de mots d'une cellule

thval

XLDnaute Nouveau
Bonjour
Quel serait la formule pour extraire d'une cellule tous les mot d'une phrase de plus de 3 lettres ?
Par exemple, en A1 j'ai la phrase "travaux sur le pont provisoire de l'Aisne"
Je voudrais en B1 avoir que les mots de plus de 3 lettres, c'est à dire "travaux pont provisoire Aisne"
Est ce faisable ?
Sachant que j'ai des phrase de A1 à A1000 et que je voudrais retrouver tout cela de B1 à B1000 évidemment.
Merci pour votre aide.
 

Staple1600

XLDnaute Barbatruc
Bonjour

Une solution avec une fonction VBA personnalisée
Code:
Function TROISCAR(s As String) As String
Dim v
For Each v In Split(s, " ")
TROISCAR = TROISCAR & " " & Left(v, 3)
Next v
TROISCAR = Mid(TROISCAR, 2)
End Function
TROISCAR.PNG


EDITION: Houps, j'ai mal compris la question
Ici ma fonction extrait les 3 premiers caractères de chaque mot.
 

thval

XLDnaute Nouveau
Bonjour

Une solution avec une fonction VBA personnalisée
Code:
Function TROISCAR(s As String) As String
Dim v
For Each v In Split(s, " ")
TROISCAR = TROISCAR & " " & Left(v, 3)
Next v
TROISCAR = Mid(TROISCAR, 2)
End Function
Regarde la pièce jointe 1180041
Bonjour
Cela extrait 3 lettres par mots, ce n'est pas ce que je recherche. Je veux extraire les mots de plus de 3 lettres.
Merci quand meme.
 

Staple1600

XLDnaute Barbatruc
Re

Celle-ci devrait mieux correspondre au besoin
Code:
Function TROISCAR(s As String) As String
Dim v
For Each v In Split(s, " ")
If Len(v) > 3 Then
TROISCAR = TROISCAR & " " & v
End If
Next v
TROISCAR = Mid(TROISCAR, 2)
End Function

PS: Tu avais lu l'EDITION de mon premier message ? :rolleyes:
 

thval

XLDnaute Nouveau
Re

Celle-ci devrait mieux correspondre au besoin
Code:
Function TROISCAR(s As String) As String
Dim v
For Each v In Split(s, " ")
If Len(v) > 3 Then
TROISCAR = TROISCAR & " " & v
End If
Next v
TROISCAR = Mid(TROISCAR, 2)
End Function

PS: Tu avais lu l'EDITION de mon premier message ? :rolleyes:
Ok
Ou dois je mettre cela pour que cela fonctionne pour toutes les cellules de B1 à B1000 par exemple ?
Merci
 

Staple1600

XLDnaute Barbatruc
Bonjour @djidji59430

Chouette formule ! ;)

je me permets d'ajouter ceci
=JOINDRE.TEXTE(" ";VRAI;FILTRE(SI(NBCAR(FRACTIONNER.TEXTE(A1;" "))>3;FRACTIONNER.TEXTE(A1;" "));SI(NBCAR(FRACTIONNER.TEXTE(A1;" "))>3;FRACTIONNER.TEXTE(A1;" "))<>FAUX))

@thval
la formule ne fonctionne qu'avec Office 365

Pour la solution par macro, il suffit de recopier la formule vers le bas
(comme sur la copie d'écran du message#2)
La formule est au départ en B1

NB: Le code VBA doit être au préalable copié dans un module standard.
(Depuis Excel ALT+F11 -> Insertion/Module )
 

thval

XLDnaute Nouveau
Bonjour @djidji59430

Chouette formule ! ;)

je me permets d'ajouter ceci
=JOINDRE.TEXTE(" ";VRAI;FILTRE(SI(NBCAR(FRACTIONNER.TEXTE(A1;" "))>3;FRACTIONNER.TEXTE(A1;" "));SI(NBCAR(FRACTIONNER.TEXTE(A1;" "))>3;FRACTIONNER.TEXTE(A1;" "))<>FAUX))

@thval
la formule ne fonctionne qu'avec Office 365

Pour la solution par macro, il suffit de recopier la formule vers le bas
(comme sur la copie d'écran du message#2)
La formule est au départ en B1

NB: Le code VBA doit être au préalable copié dans un module standard.
(Depuis Excel ALT+F11 -> Insertion/Module )
OKAY, pour le VBA. J'ai compris
Ca marche parfaitement.
Merci pour votre aide
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 222
Membres
103 158
dernier inscrit
laufin