C'est une fonction utilisant InStr pour trouver le nom d'un fichier avec ou sans extention à partir d'une Adresse complète.
Il y a une fonction intéressante, la fonction Découpe qui permet de découper un peu comme on veut une chaine de charactères. (Il faut l'étudier bien qu'elle soit commentée)
Source / Exemple :
Option Explicit
Public Function RcpNom(Adresse As String, Optional AcExt As Boolean = True) As String
If (Len(Adresse) < 4) Or (InStr(Adresse, "\") = 0) Then Exit Function
'Si l'adresse contient moins de 4 caractères ou aucun anti-slash ("\") il quitte la fonction
If AcExt Then RcpNom = Decoupe(Adresse, "\") Else RcpNom = Decoupe(Decoupe(Adresse, "\"), ".", True)
'Si on souhaite récupérer l'extention avec le nom (AcExt=True) il ne découpe que le nom du fichier en entier
'Sinon il retire aussi l'extention qu'il trouvera à partir du dernier point
End Function
Private Function Decoupe(Chn As String, Chr As String, Optional DcpLft As Boolean = False, Optional Ct As Long = 2000000000) As String
'Ceci est une fonction qui pourra vous être grandement utile
'Dans le cas où vous voulez faire une découpe à partir du dernier nombre trouvé
'ou après le Ct ième charactère Chr s'il existe sinon ce sera le dernier
Dim Nb As Long, Cpt As Long 'Déclaration des variables numériques
Nb = InStr(Chn, Chr) 'Renvoi le rang du charactère recherché
Cpt = 1 'Le premier charactère est trouvé
Do While (InStr(Nb + 1, Chn, Chr) <> 0) And (Cpt < Ct) 'Si on ne trouve plus de charactère Chr
'ou que l'on arrive à la position du Ct ième charactères il quitte la boucle
Nb = InStr(Nb + 1, Chn, Chr) 'Le rang du prochain caractère Chr dans la chaine Chn implémenté en Nb
Cpt = Cpt + 1 'Incrémentation
Loop 'Retour au condition de la boucle
If Nb = 0 Then Decoupe = Chn: Exit Function 'Si Nb vaut 0 alors on ne peut pas découper
'car il y a aucun charactère Chr dans la chaine, donc le renvoi equivaut à la chaine à découper et il quitte la fonction
If DcpLft Then Decoupe = Left(Chn, Nb - 1) Else Decoupe = Right(Chn, Len(Chn) - Nb)
'S'il s'agit d'une découpe à partir de la gauche il implémente la variable Decoupe en conséquence
'Sinon il fait de même mais à partir de la droite
End Function
Private Sub Form_Load()
Dim Adr As String
Adr = "c:\windows\command1\\\dddff\\\ef\\g\hhh\couc..__dddop.mpeg"
MsgBox RcpNom(Adr), , Decoupe(Adr, "\", True, 3)
End Sub
Conclusion :
Ce n'est pas une grande trouvaille, mais ça peut toujours aider le jour où vous en aurez besoin :p ;)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.