Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Général VBA

Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.

Réponse
 
Outils de la discussion
Vieux 21/04/2008, 13h37   #1 (permalink)
Membre Confirmé
 
Date d'inscription: mars 2008
Messages: 202
Par défaut recuperer une partie de ma variable

bonjour,

je voudrais recuperer une partie de ma variable (string) en VBA

ma variable "FileName" contient un chemin
D:/toto/cortex.svg

et moi je voudrais recuperer cortex.svg

est ce que quelqu'un a une idée?

merci
cortex59 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 13h50   #2 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2007
Âge: 22
Messages: 77
Par défaut

salut,
en utilisant les fonctions Mid et InstrRev tu dois pouvoir le faire.

la fonction Mid(Chaine, Start, Length) extrait une partie de la chaine

la fonction InstrRev(Start, ChaineConteneur, CaratereRecherche) te renvoi la position du caractère recherché dans la chaine, ici en commencant par la fin de la chaine (utile si ton chemin contient un nombre indéterminé de "\"), sinon Instr commence par le début

j'espère que ça pourra t'aider
robri est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h03   #3 (permalink)
Membre expérimenté
 
Date d'inscription: juin 2004
Localisation: Paris
Âge: 27
Messages: 579
Par défaut

Salut !

Tu peux également utiliser la méthode split de la classe String :

Code :
 
s = "D:/toto/cortex.svg"
Dim res() as string = s.split(TonSeparateur)
 
split parse la chaîne selon le séparateur, et renvoie un tableau de string.
=> res(s.length -1) est le nom de ton fichier...
pacmann est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h10   #4 (permalink)
Membre Confirmé
 
Date d'inscription: mars 2008
Messages: 202
Par défaut

re

Code :
Dim res As String
res = svgFileName.Split("/")
ceci ne fonctione pas!
le qualifiquateur est incorect (svgFileName)

svgFileName : est la variable qui contient mon chemin

merci

sinon j'ai essayer aussi

Code :
Dim res As String
res = Mid(svgFileName, InStrRev(svgFileName, "/"))
mais ca ne fonctionne pas!

merci

Dernière modification par AlainTech ; 21/04/2008 à 19h32 Motif: Fusion de 2 messages
cortex59 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h22   #5 (permalink)
Membre expérimenté
 
Date d'inscription: juin 2004
Localisation: Paris
Âge: 27
Messages: 579
Par défaut

split renvoie un tableau !
(relis mon post...)

Et lis aussi les messages d'erreur quand ça ne marche pas :
- ça peut t'aider à avancer
- ça peut nous aider à comprendre ce qui ne marche pas
pacmann est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h23   #6 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2007
Âge: 22
Messages: 77
Par défaut

j'avais complètement oublié split

par contre la syntaxe correcte est : Split(Chaine, Separateur)

Code :
Dim res() As String
res = Split(svgFileName,"/")
?
robri est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h25   #7 (permalink)
Membre Confirmé
 
Date d'inscription: février 2008
Messages: 220
Par défaut

Bonjour,
ce ceode n'est pas optimise mais bon
Code :
Dim nom As String = "Nom/belge/mons"
        Dim i As Integer
        For i = 1 To Len(nom)
            If (Mid(nom, i, 1) = "/") Then
                MsgBox(Mid(nom, i + 1, Len(nom) - i))
            End If
        Next
 
A la fin de la boucle j'obtiens mons

Bonne continuation
quentincabo est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h30   #8 (permalink)
Modérateur
 
Avatar de tomlev
 
Date d'inscription: février 2004
Localisation: Paris
Âge: 27
Messages: 4 192
Par défaut

Il y a plus simple que de passer par des Split...
Code :
Dim fi As New FileInfo("D:\toto\cortex.svg")
Dim name As String = fi.Name
Ou encore plus simple:
Code :
Dim name As String = Path.GetFileName("D:\toto\cortex.svg")
(Pour les 2 méthodes, il faut importer le namespace System.IO)
__________________
Pas de questions techniques par MP
Il ne sert à rien de dire "ça fait une erreur" sans donner le message d'erreur !!
Avant de poster, as-tu cherché dans les cours, la FAQ, le forum et sur Google ?

Viens affronter ma brute !
tomlev est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h40   #9 (permalink)
Membre Confirmé
 
Date d'inscription: février 2008
Messages: 220
Par défaut

merci Tomlev

Simple, cours, performant que demander de plus???

Et encore merci
quentincabo est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h42   #10 (permalink)
Membre Confirmé
 
Date d'inscription: mars 2008
Messages: 202
Par défaut

Code :
Dim ii As Integer
        For ii = 1 To Len(svgFileName)
            If (Mid(svgFileName, ii, 1) = "/") Then
             res = (Mid(svgFileName, ii + 1, Len(svgFileName) - ii))
            End If
        Next
ceci me renvoi :
res =""

ensuite j'ai essayer
Code :
Dim res As String
res = Mid(svgFileName, InStrRev(svgFileName, "/"))
il me retourne l'erreur suivante : "argument ou appel de procedure incorect"
cortex59 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h45   #11 (permalink)
Modérateur
 
Avatar de tomlev
 
Date d'inscription: février 2004
Localisation: Paris
Âge: 27
Messages: 4 192
Par défaut

utilise ce que j'ai indiqué 3 posts plus haut...
__________________
Pas de questions techniques par MP
Il ne sert à rien de dire "ça fait une erreur" sans donner le message d'erreur !!
Avant de poster, as-tu cherché dans les cours, la FAQ, le forum et sur Google ?

Viens affronter ma brute !
tomlev est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h47   #12 (permalink)
Membre Confirmé
 
Date d'inscription: mars 2008
Messages: 202
Par défaut

re,

Code :
Dim res As String
res = Path.GetFileName("svgFileName")
ceci me dit que Path n'est pas defini

merci
cortex59 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h52   #13 (permalink)
Membre Confirmé
 
Date d'inscription: février 2008
Messages: 220
Par défaut

Pour répondre à ta question:
Citation:
Pour les 2 méthodes, il faut importer le namespace System.IO
J'ai réessayer avec ma procédure et j'obtiens le résultat escompté càd cortex.svg
Code :
 
 Dim svgfilename As String = "D:/toto/cortex.svg"
Dim ii As Integer
        For ii = 1 To Len(svgFileName)
            If (Mid(svgFileName, ii, 1) = "/") Then
             res = (Mid(svgFileName, ii + 1, Len(svgFileName) - ii))
            End If
        Next ii
msgbox(res)
 
 
quentincabo est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 14h56   #14 (permalink)
Membre Confirmé
 
Date d'inscription: mars 2008
Messages: 202
Par défaut

je travail sur visio, importer le namespace System.IO est ce posible ?

si oui comment faire?

merci
cortex59 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/04/2008, 15h03   #15 (permalink)
Modérateur
 
Avatar de tomlev
 
Date d'inscription: février 2004
Localisation: Paris
Âge: 27
Messages: 4 192
Par défaut

Tout au début de ton fichier, ajoute ça :
Code :
Imports System.IO
__________________
Pas de questions techniques par MP
Il ne sert à rien de dire "ça fait une erreur" sans donner le message d'erreur !!
Avant de poster, as-tu cherché dans les cours, la FAQ, le forum et sur Google ?

Viens affronter ma brute !
tomlev est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Général VBA

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide