IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tronquer le texte contenu dans une variable object ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut Tronquer le texte contenu dans une variable object ?
    Bonjour à tous,
    Je récupère en fait le nom d’un dossier dans une variable Object à travers une boîte de sélection de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Dim Shell As Object, GetDossier As Object, Dossier As Object
     
    'Initialisation de l'explorateur
    Set Shell = CreateObject("Shell.Application")
    'Boîte de dialogue pour la sélection du dossier
    Set GetDossier = Shell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
     
    On Error Resume Next
    'Récupération du chemin
    Set Dossier = GetDossier.Items.Item
    J’aimerais en fait tronquer le nom du dossier pour ne garder que ce qui est à gauche du séparateur ‘_’ avec un code de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Pos = InStr(1, Dossier, "_", 1)
            nomDossierSansExtension = Left(Dossier, Pos - 1)

    Cela ne semble possible que sur des chaînes String (cela ne fonctionne pas en tout cas avec ma variable Object), faudrait-il que je stocke le contenu de ma variable dans une variable de type String ? Si oui comment cela doit-il se faire ?

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salutn

    tu definis une variable string en plus, et tu lui affectes le contenu de ta variable objet.

    ca marche j'ai testé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Sub explorer()
     
     Dim Shell As Object, GetDossier As Object, Dossier As Object
     Dim chemin As String
     
     
    'Initialisation de l'explorateur
    Set Shell = CreateObject("Shell.Application")
    'Boîte de dialogue pour la sélection du dossier
    Set GetDossier = Shell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
     
    On Error Resume Next
    'Récupération du chemin
    Set Dossier = GetDossier.Items.Item
    chemin = Dossier
    Debug.Print chemin
     
    End Sub
    Génial ton code, je ne connaissais pas et j'en ai justement besoin.

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    Juste deux choses :

    1) je ne vois nul besoin de passer par une variable tremplin chemin...

    2) qu'est ce "On Error Resume Next" ? C'est pour quoi ? pour éviter une erreur si l'utilisateur a annulé ?

    Pas bon (pas beau) !

    Voilà ce que devrait être ton code, donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Option Explicit
    Private Sub Command1_Click()
       Dim Shell As Object, GetDossier As Object, Dossier As Object
       Set Shell = CreateObject("Shell.Application")
       Set GetDossier = Shell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
       If GetDossier Is Nothing Then ' l'utilisateur n'a pas sélectionné un dossier
         Exit Sub
       End If
       Set Dossier = GetDossier.Items.Item
       Dim nomDossierSansExtension As String, pos As Integer
       pos = InStr(Dossier, "_")
       If pos > 0 Then
         nomDossierSansExtension = Left(Dossier, pos - 1)
       Else
         nomDossierSansExtension = Dossier
       End If
       MsgBox nomDossierSansExtension
    End Sub

  4. #4
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonjour,

    Juste deux choses :

    1) je ne vois nul besoin de passer par une variable tremplin chemin...

    2) qu'est ce "On Error Resume Next" ? C'est pour quoi ? pour éviter une erreur si l'utilisateur a annulé ?
    Ton code fonctionne parfaitement, merci à toi.
    Le On error resume next était bien en fait une saleté résiduelle qui n'avait rien à faire tel quel dans le code.
    Bon après-midi,
    M

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Savoir si le texte extrait de la BDD est contenu dans une variable ?
    Par cyberlp dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 18/11/2010, 13h42
  2. Réponses: 18
    Dernier message: 27/10/2006, 14h15
  3. Comment afficher une valeur contenue dans une variable ?
    Par manubrard dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 15h56
  4. Condition contenu dans une variable string
    Par tomo0013 dans le forum Access
    Réponses: 6
    Dernier message: 01/12/2005, 14h15
  5. Réponses: 7
    Dernier message: 25/10/2005, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo