Extraire une chaîne de caractères au sein d'une autre

modus57

XLDnaute Occasionnel
Bonjour à tous. :)
Comment extraire les caractères « I:\DOSSIERS ADHÉRENTS\Adhérents contrats » de la chaîne
« I:\DOSSIERS ADHÉRENTS\Adhérents contrats\DUMONT Pierre\Projets\Avant projets\DUMONT Pierre AP 1.0 du 18-12-12 »
J’ai essayé :
Code:
Sub extraire()
Dim NomAdhérent As String
NomAdhérent = Range("nom_adhérent ")
    Tableau = Split(NomAdhérent, "\")(0) & "\" & Split(NomAdhérent, "\")(1) & "\" & Split(NomAdhérent, "\")(2)
    MsgBox Tableau
End Sub
Ça fonctionne, mais est-ce possible de simplifier ou utiliser une autre syntaxe, j’ai cherché sur internet je n’ai pas trouvé.
Auriez-vous une réponse.
Merci d’avance.
 

Dranreb

XLDnaute Barbatruc
Re : Extraire une chaîne de caractères au sein d'une autre

Bonjour
Tester comme ça:
VB:
Sub extraire()
Dim NomAdhérent As String, Tableau() As String
NomAdhérent = Range("nom_adhérent ")
Tableau = Split(NomAdhérent, "\")
ReDim Preserve Tableau(0 To 2)
MsgBox Join(Tableau, "\")
End Sub
Cordialement.
 

Misange

XLDnaute Barbatruc
Re : Extraire une chaîne de caractères au sein d'une autre

Bonjour

Si ça fonctionne, pourquoi souhaites tu une autre syntaxe ? Celle-ci n'est pas particulièrement compliquée...

Sinon sans formule et sans macro, il te suffit d'utiliser la fonction données/convertir en indiquant le / comme séparateur pour récupérer les différents éléments de ton texte.
 

modus57

XLDnaute Occasionnel
Re : Extraire une chaîne de caractères au sein d'une autre

Bonjour, excellente journée à tous.:D

Merci beaucoup pour vos réponses.

La proposition de Dranreb est une bonne solution, à retenir.

Une question, la solution BOISGONTIER sans formule et sans macro :
=GAUCHE(A1;CHERCHE("|";SUBSTITUE(A1;"\";"|";3))-1)
peut ‘elle être traduite en VBA ?
 

modus57

XLDnaute Occasionnel
Re : Extraire une chaîne de caractères au sein d'une autre

En fait je souhaiterais dans un ComboBox d’un UserForm utiliser ce style de code par exemple :
ComboBox1 = GAUCHE(TextBox1,CHERCHE("|",SUBSTITUTE(TextBox1,"\","|",3))-1)
A adapter bien sûr.
@ ++
 

Dranreb

XLDnaute Barbatruc
Re : Extraire une chaîne de caractères au sein d'une autre

Bonjour.
VB:
ComboBox1.Add RacineChemin(Chemin, 3)
…
Function RacineChemin(ByVal Chemin As String, Niv As Long) As String
Dim Tableau() As String
Tableau = Split(Chemin, "\")
ReDim Preserve Tableau(0 To Niv - 1)
RacineChemin = Join(Tableau, "\")
End Sub
Si pas adapté, référez vous à la recommandation de ma signature.
 
Dernière édition:

modus57

XLDnaute Occasionnel
Re : Extraire une chaîne de caractères au sein d'une autre

Bonjour Dranreb.

Je ne comprend pas comment avec ton dernier code extraire les caractères « I:\DOSSIERS ADHÉRENTS\Adhérents contrats » de la chaîne «I:\DOSSIERS ADHÉRENTS\Adhérents contrats\DUMONT Pierre\Projets\Avant projets\DUMONT Pierre AP 1.0 du 18-12-12» du ComboBox1 pour les transférer dans le TextBox1 ?

Pourriez-vous m'expliquer SVP.

@ +
 

Dranreb

XLDnaute Barbatruc
Re : Extraire une chaîne de caractères au sein d'une autre

Bonjour.
Ton modèle d'instruction était une affectation à ComboBox1.
Comme il n'est pas d'usage d'affecter par macro une valeur à ComboBox.Text j'avais supposé que tu voulais l'ajouter à sa liste.
Pour l'affecter à un TextBox, bien sûr c'est:
VB:
TextBox1.Text = RacineChemin(Chemin, 3)
avec Chemin: la chaine à traiter contenant le chemin.
 

modus57

XLDnaute Occasionnel
Re : Extraire une chaîne de caractères au sein d'une autre

Bonjour Dranreb. :confused:

Par manque de temps j'ai tardé à tester ta procédure.

Je n'arrive pas à l’imbriquer, pourriez-vous me donner un peu plus d'indications et de précisions.

N'étant un expert j'insiste un peu.

Pour faire simple dans un UserForm qui comprend un ComboBox1 et un TextBox1 en cliquant sur le CommandButton1.

Le but : extraire les caractères « I:\DOSSIERS ADHÉRENTS\Adhérents contrats » de la chaîne «I:\DOSSIERS ADHÉRENTS\Adhérents contrats\DUMONT Pierre\Projets\Avant projets\DUMONT Pierre AP 1.0 du 18-12-12» du ComboBox1 pour les insérer dans le TextBox1.

Je ne vois pas où placer le code.

Merci d'avance pour vos explications.
 

Dranreb

XLDnaute Barbatruc
Re : Extraire une chaîne de caractères au sein d'une autre

La fonction RacineChemin peut être écrite dans un module ordinaire, ou dans le module ou elle est utilisée.
L'expression qui l'emploie doit être affectée à ce qu'il faut là où il faut.
Je ne répondrai plus aux questions si vous ne joignez pas de classeur.
 

JCGL

XLDnaute Barbatruc
Re : Extraire une chaîne de caractères au sein d'une autre

Bonjour à tous,

Ta TextBox n'en est pas une : c'est une ListBox...


VB:
Option Explicit


Private Sub CommandButton1_Click()
Dim Chemin As String
    TextBox1.Text = RacineChemin(Chemin, 3)
End Sub


Private Sub UserForm_Activate()
    ComboBox1 = Range("nom_adherent")
End Sub


Function RacineChemin(ByVal Chemin As String, Niv As Long) As String
Dim Tableau() As String
Chemin = Range("nom_adherent")
    Tableau = Split(Chemin, "\")
    ReDim Preserve Tableau(0 To Niv - 1)
    RacineChemin = Join(Tableau, "\")
End Function


A+ à tous
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 085
Membres
103 461
dernier inscrit
dams94