Ouverture d'un fichier=>Récupérer nom du dossier où se trouve le fichier [Résolu]

Signaler
Messages postés
16
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 mars 2013
-
Messages postés
16
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 mars 2013
-
Bonjour, j'ai un petit problème sur mon programme en vb.

En faite, je veux, sur un clique d'un bouton demander l'ouverture d'un fichier et que après, je récupère le nom du dossier où se trouve le fichier.

Si par exemple le fichier se situe dans C:\Temp\,
je veux une message box qui me marque : "Temp"

Mais je veux un programme qui s'adapte au chemin du fichier, c'est à dire que si le fichier que l'on va chercher se trouve dans :
C:\Program Files\Windows\Config, je veux qu'il m'écrive "Config".

J'ai commencé par écrire se programme :

Dim sChemin As String ' Chemin du fichier

sChemin = Application.GetOpenFilename ' C:\Temp

répertoire = Mid(sChemin, 1, InStrRev(sChemin, "") - 1)

répertoire = Mid(répertoire, 4, InStrRev(répertoire, "") + 2)
msgbox répertoire



Le problème avec ce programme est qu'il s'adapte uniquement pour le chemin C:\Temp. Si je change le chemin, il ne récupère plus le dernier dossier.

J'espère que j'ai été assez clair dans mes explications...lol

Si vous avez une solutions, ce serait super sympa de me la faire partager.

Merci à tous.

8 réponses

Bonjour triv.

Il me semble que vous n'êtes pas dans la bonne section du forum. Vous vous êtes inscrit en vb.net, alors que vous programmez en vb6. Dites-moi si je me trompe.

Cordialement.



Étant illettré, je signe d'une croix : ×

Re:
Ok... en VB6 alors:
Dim sChemin As String
Dim Liste() As String
sChemin = "c:\users\toto\desktop\fichier.txt" 'exemple d'un chemin complet
Liste = Split(sChemin, "")
MsgBox Liste(UBound(Liste) - 1)



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Bonjour,

C'est ça que tu veux faire?
 OpenFileDialog1.ShowDialog()
        Dim Liste As New ListBox
        Liste.Items.Clear()
        For Each Rep In Split(OpenFileDialog1.FileName, "")
            Liste.Items.Add(Rep)
        Next
        MessageBox.Show(Liste.Items.Item(Liste.Items.Count - 2))



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
16
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 mars 2013

Bonjour a ok, désolé je n'ai pas fait attention. Est-il possible de déplacer mon topic dans la bonne section ?

Merci.
Re.

Il vous faudra attendre qu'un administrateur bienveillant fasse ce déplacement.

Cordialement.


Étant illettré, je signe d'une croix : ×
Messages postés
16
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 mars 2013

Oki ton programme marche impeccable acive.

Merci à tous pour vos réponses et bon dimanche
Messages postés
16
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 mars 2013

Bonjour, je relance le topic car je veux faire évoluer mon programme: je veux faire des sélections multiples.

Le seul problème est que lorsque je fais ainsi, la variable schemin n'est plus un string mais un variant et le code du dessous ne marche plus (erreur incompatibilité de type).

sChemin = Application.GetOpenFilename(, , , , True) ' C:\Temp

répertoire = Mid(sChemin, 1, InStrRev(sChemin, "") - 1)


répertoire = Mid(répertoire, 4, InStrRev(répertoire, "") + 2)

msgbox répertoire


j'ai essayé de faire une instruction pour transformer un variant en string mais ça ne marche pas.

Un peu d'aide ne serait pas de refus

Je vous remercie d'avance
Messages postés
16
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 mars 2013

C'est bon j'ai trouvé la réponse, j'ai vu qu'en faite sChemin était un tableau donc je complété mon code en écrivant ceci :

Dim ouvrir As Variant
Dim sChemin As String


ouvrir = Application.GetOpenFilename(, , , , True) ' C:\Temp

sChemin = ouvrir(1)
MsgBox sChemin
répertoire = Mid(sChemin, 1, InStrRev(sChemin, "") - 1)
MsgBox répertoire
répertoire = Mid(répertoire, InStrRev(répertoire, "cas"), 50)

MsgBox répertoire


MAintenant j'enregistrer cette macro en tant que "classeur de macro personnel" mais la quand je veux lancer l'enregistrement de la macro, il me dit :
Le classeur Macros personnelles dans le dossier de démarrage doit être ouvert pendant l'enregistrement

Enregistrement impossible


Je ne comprend pas trop la signification de cette erreur.

Si vous pouvez m'éclairer...

merci