Récupérer texte entre 2 caractères

Résolu
PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   -  
PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   -
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

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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

1
PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   21
 
Merci cs_le pivert,

La fonction Split est intéressante pour d'autres projets...
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
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


1
PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   21
 
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 ?
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
1
PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   21
 
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 !
0