[vba] Fonction Nom de Fichiers

Fonction Nom de Fichiers [vba] - VB/VBA/VBS - Programmation

Marsh Posté le 27-06-2005 à 14:45:26    

Bonjour à tous,
 
pour l'une de mes macros, j'ai besoin de connaître de nom de mon fichier pour ensuite le comparer aux fichiers ouverts, et ainsi l'ouvrir si pas ouvert.
 
Pour cela j'ai écris une fonction, à l'aide de mon manuel de référence VBA, qui me donne le nom du fichier à partir du chemin complet. Pour une raison qui m'échappe, la fonction NomFichier ne fonctionne pas:
 

Code :
  1. Function ObtenirNomFichier(stNomComplet As String) As String
  2.     'ObtenirNomFichier retourne le nom de fichier, comme Toto.xls à partir
  3.     'de la fin d'un chemin complet tel que C:\Données\Cash.xls
  4.     'stNomComplet est retournée si aucun séparateur de chemin n'est trouvé
  5.    
  6.     Dim stSeparateurChemin As String    'caractère de séparateur de chemin
  7.     Dim iLongueurNomFichier As Integer  'Longueur de stNomComplet
  8.     Dim i As Integer
  9.    
  10.     stSeparateurChemin = Application.PathSeparator
  11.     Debug.Print ("Séparateur: " & stSeparateurChemin)
  12.     iLongueurFichier = Len(stNomComplet)
  13.     Debug.Print iLongueurFichier
  14.     'trouve le dernier caractère de séparateur de chemin s'il existe
  15.     For i = iLongueurNomFichier To 1 Step -1
  16.         If Mid(stNomComplet, i, 1) = stSeparateurChemin Then Exit For
  17.     Next i
  18.     ObtenirNomFichier = Right(stNomComplet, iLongueurNomFichier - i)
  19.     Debug.Print ("i: " & i)
  20.     Debug.Print ("fichier:" & ObtenirNomFichier)
  21.     Debug.Print ("----------------------------------------" )
  22. End Function


 
j'obtient le résultat suivant avec la fenête d'execution:
 
ObtenirNomFichier("c:\data\toto.xls" )
Séparateur: \
 16  
i: 0
fichier:
----------------------------------------

pour le moment je tourne en rond, je suis surement passé à coté de quelque chose.
 
quel est votre avis?
 
 
 
 

Reply

Marsh Posté le 27-06-2005 à 14:45:26   

Reply

Marsh Posté le 27-06-2005 à 14:58:52    

essaie ceci :
Dim fso As FileSystemObject
Dim strFileName As String
 
Set fso = New FileSystemObject
 
strFileName = fso.GetFileName("c:\autoexec.bat" )
MsgBox strFileName

Reply

Marsh Posté le 28-06-2005 à 11:35:23    

aucun résultats,  
 
la fenêtre qui apparait est vide,
 
il me manque peut être un package?

Reply

Marsh Posté le 28-06-2005 à 11:37:25    

D'autres avis?

Reply

Marsh Posté le 28-06-2005 à 12:05:01    

J'utilise la mm méthode que friday_13.
Mais tu dois rajouter la librairire : microsoft scripting runtime pour que ca fonctionne

Reply

Marsh Posté le 28-06-2005 à 12:13:26    

la fenêtre reste désespérement vide

Reply

Marsh Posté le 28-06-2005 à 12:20:21    

Je ne comprend pas quel nom de fichier tu veux comparer.
En gros tu as des fichiers dans un répertoire, et s'il n'est pas ouvert tu veux l'ouvrir c ca ?

Reply

Marsh Posté le 28-06-2005 à 12:29:53    

Dans un premier temps, je souhaite récupérer les noms des fichiers de travail pour les transformer en variables.
 
Le but est de supprimer les contraintes des noms de fichiers, ils  peuvent être modifier par l'utilisateur, mais aussi pour éviter préciser les noms des fichiers en dur dans mon code.
 
Ensuite je vais manipuler ces différent nom de fichiers et crées des boucles de contrôles pour vérifier le chemin du répertoire de travail; élément nécessaire au contrôle de l'éxecutable sous windows (éxécutable "Fortran" )


Message édité par bluehangel le 28-06-2005 à 12:34:34
Reply

Marsh Posté le 29-06-2005 à 09:13:32    

trouvé :
 
    * Function ObtenirNomFichier(stNomComplet As String) As String
    *     'ObtenirNomFichier retourne le nom de fichier, comme Toto.xls à partir
    *     'de la fin d'un chemin complet tel que C:\Données\Cash.xls
    *     'stNomComplet est retournée si aucun séparateur de chemin n'est trouvé
    *      
    *     Dim stSeparateurChemin As String    'caractère de séparateur de chemin
    *     Dim iLongueurNomFichier As Integer  'Longueur de stNomComplet
    *     Dim i As Integer
    *      
    *     stSeparateurChemin = Application.PathSeparator
    *     Debug.Print ("Séparateur: " & stSeparateurChemin)
    *     iLongueurFichier = Len(stNomComplet)
    *     Debug.Print iLongueurFichier
    *     'trouve le dernier caractère de séparateur de chemin s'il existe
    *     For i = iLongueurNomFichier To 1 Step -1
    *         If Mid(stNomComplet, i, 1) = stSeparateurChemin Then Exit For
    *     Next i
    *     ObtenirNomFichier = Right(stNomComplet, iLongueurNomFichier - i)
    *     Debug.Print ("i: " & i)
    *     Debug.Print ("fichier:" & ObtenirNomFichier)
    *     Debug.Print ("----------------------------------------" )
    *
    * End Function
 
 :D  
je l'ai vu juste en compilant  :lol:


Message édité par #SubZero le 29-06-2005 à 09:14:59
Reply

Marsh Posté le 29-06-2005 à 09:45:13    

Merci,  
c'est la bourde que je cherchais,
 
question: tu compiles avec quel logiciel?


Message édité par bluehangel le 29-06-2005 à 09:52:02
Reply

Marsh Posté le 29-06-2005 à 09:45:13   

Reply

Marsh Posté le 29-06-2005 à 20:02:12    

J'ai utilisé Access et dans la fenêtre de code j'ai un bouton pour "compiler"
C'est du moins ce qu'indique l'info-bulles  ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed