Récupérer texte entre 2 caractères

Résolu/Fermé
PYGOS69 Messages postés 452 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 - 3 juin 2020 à 10:34
PYGOS69 Messages postés 452 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 - 3 juin 2020 à 17:59
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 jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
3 juin 2020 à 11:43
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 jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 21
3 juin 2020 à 17:59
Merci cs_le pivert,

La fonction Split est intéressante pour d'autres projets...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié le 3 juin 2020 à 12:10
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 jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 21
3 juin 2020 à 13:52
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
3 juin 2020 à 16:22
1
PYGOS69 Messages postés 452 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 10 octobre 2023 21
Modifié le 3 juin 2020 à 17:57
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