Récupérer texte entre 2 caractères [Résolu]

Signaler
Messages postés
181
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
29 juin 2020
-
Messages postés
181
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
29 juin 2020
-
Bonjour,

N'ayant pas trouvé exactement , ce que je recherche? je pose ma question :

en colonne A je liste les fichiers d'un répertoire (à partir de A2) par VBA

PT 2.7.2 Paul.xlsm
PT 2.7.2 Eric.xlsm
PT 2.7.2 Claire.xlsm


Je souhaite récupérer le texte en colonne B, après le dernier espace et avant le dernier . (point)

Dans mon cas le prénom... (exemple : en B2 = Paul)

Merci d'avance,
PYGOS69

Excel 2010

Configuration: Windows / Internet Explorer 11.0

3 réponses

Messages postés
6823
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
1 juillet 2020
528
Bonjour,

Faire Alt F11 pour accèder à l'éditeur

la macro se déclenche à la sélection dans la cellule:

avec la fonction Split

Option Explicit
Dim chaine As String
Dim nombre As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
chaine = Target.Value
separateur
Range("B" & Target.Row).Value = Split(chaine, " ")(nombre)
Range("B" & Target.Row).Value = Split(Range("B" & Target.Row).Value, ".")(0)
End If
End Sub
Sub separateur()
Dim str, num1, num2
str = chaine
num1 = Len(str)
str = Replace(str, " ", "")
num2 = Len(str)
num1 = num1 - num2
nombre = num1 'nombre total de séparateurs
End Sub

Messages postés
181
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
29 juin 2020
2
Merci cs_le pivert,

La fonction Split est intéressante pour d'autres projets...
Messages postés
16162
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
4 juillet 2020
2 985
Bonjour Pygos69

J'avais posté un truc que j'ai supprimé ...

l'idée est d'utiliser ton code que tu as déjà et on inscrit le ie prénom par une fonction à partir du moment ou ton code écrit le nom d'un classeur dans une cellule de ta feuille
Option Explicit
'----------------------------
Function extraire(lig As Integer)
Dim xxx As String, Separe

Separe = Split(Cells(lig, "A"), " ")
xxx = Separe(2)
extraire = Left(xxx, Len(xxx) - 5)
End Function
'----------------------------
'a partir de ton code lorsque le nom du classeur est trouvé
Sub Toncode()
'demo sur une ligne....par exemple la ligne 2
Dim lig As Integer

lig = Range("A2").Row
Range("B2") = extraire(lig)
End Sub


Messages postés
181
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
29 juin 2020
2
Bonjour à tous les 2,

Merci pour votre réactivité, j'opte pour la 2ème solution.

Est-il possible d'effectuer une boucle sur la colonne A et appliquer la fonction extraire sur tous les cellules non vide de la colonne A ?
Messages postés
16162
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
4 juillet 2020
2 985
Messages postés
181
Date d'inscription
jeudi 23 août 2012
Statut
Membre
Dernière intervention
29 juin 2020
2
J'ai bien une ligne en entête.

Si je l'efface , cela fonctionne, sinon erreur...

J'ai modifié, comme suit :

For Cptr= 2 To Nbre

Encore merci !