SERIEUXETCOOL
XLDnaute Occasionnel
Bonsoir le Forum,
J'ai une petite question de nouveau...
Sous Vba et Excel 2007, dans un module j'utilise "Application.GetOpenFilename". Je cherche maintenant à prohiber l'ouverture d'un fichier dont le nom du chemin d'accès comporterait plus de 250 caractères. Sinon sa plante ma Macro.
250 caractères sa fait beaucoup certains me diront. Mais avec les dossiers et sous dossier plus un nom de fichier assez long et bien les 250 caractères sont parfois vite atteints. Du coup je souhaite anticiper ces éventuelles erreurs de plantage.
Question : Comment pourrais-je m'y prendre ?
Voici le bout de code que j'utilise :
Voici les idées que j'ai en tête mais que je ne sais pas utiliser vu mon niveau. Je me dis que l'on pourrait peut être déterminer le nombre de caractères de la variable "Chemin" et vérifier que ce nombre soit inférieur à 250 ?
Sinon sur le net je suis tombé sur la fonction "GetShortPathName" mais je ne la comprends pas. Du coup pas possible de la tester.
Voici le code utilisé pour cette fonction :
Quelqu'un pourrait il m'aiguiller sur mon problème de nombre de caractères ?
Un grand merci,
André
J'ai une petite question de nouveau...
Sous Vba et Excel 2007, dans un module j'utilise "Application.GetOpenFilename". Je cherche maintenant à prohiber l'ouverture d'un fichier dont le nom du chemin d'accès comporterait plus de 250 caractères. Sinon sa plante ma Macro.
250 caractères sa fait beaucoup certains me diront. Mais avec les dossiers et sous dossier plus un nom de fichier assez long et bien les 250 caractères sont parfois vite atteints. Du coup je souhaite anticiper ces éventuelles erreurs de plantage.
Question : Comment pourrais-je m'y prendre ?
Voici le bout de code que j'utilise :
Code:
i = 1 'Initialise la première ligne
Chemin = "TEST" 'Pour que la boucle ne s'arrête pas tout de suite
Chemin = Application.GetOpenFilename("Texte, *.txt") 'Boite de dialogue
If InStr(Chemin, "\") = 0 Then 'Si Chemin n'a pas de \ donc que l'opérateur a fait annuler
GOON = False 'Variable publique qui change d'état
GoTo Fin 'Va à l'étiquette Fin:
End If 'Fin du test
Voici les idées que j'ai en tête mais que je ne sais pas utiliser vu mon niveau. Je me dis que l'on pourrait peut être déterminer le nombre de caractères de la variable "Chemin" et vérifier que ce nombre soit inférieur à 250 ?
Sinon sur le net je suis tombé sur la fonction "GetShortPathName" mais je ne la comprends pas. Du coup pas possible de la tester.
Voici le code utilisé pour cette fonction :
Code:
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Const MAX_PATH_LENGHT = 255
Function ShortPath(LongPath As String) As String
Dim tmpShortPath As String
Dim RC As Long
tmpShortPath = Space(MAX_PATH_LENGHT + 1)
RC = GetShortPathName(LongPath, tmpShortPath, MAX_PATH_LENGHT + 1)
ShortPath = Left(tmpShortPath, InStr(tmpShortPath, Chr$(0)) - 1)
End Function
Private Sub Test()
MsgBox ShortPath(" C:\Projets\Samples\NewStepperLuxe\Lib\AMORTISSEUR COMPLET.top.png")
End Sub
Quelqu'un pourrait il m'aiguiller sur mon problème de nombre de caractères ?
Un grand merci,
André