Nom de fichier trop long

franck17

XLDnaute Junior
Bonjour a tous

Voila mon probleme
Apres 8 jous d'efforts j'arrive a ce que je voulais faire mais un probleme persiste ligne 17 le nom du fichier doit etre trop long comment regler ce probleme car la moitié de mes fichiers sont du meme genre donc 8 jours d'éfforts pour rien :mad:

Voir fichier joint
Merci d'avance et bon dimanche
 

Pièces jointes

  • Lister_Fichier_FD.zip
    37.8 KB · Affichages: 99

lapix

XLDnaute Occasionnel
Re : Nom de fichier trop long

salut

Il me semble que getopenfilename recupere un nom de fichier avec le chemin complet (c:\abcd\123.txt).
Quand tu ecris .LookIn = Directory, tu recherches dans un chemin (c:\abcd)

Tu dois donc pouvoir obtenir de ton getfilename un chemin si tu enleves tout ce qui est a droite du dernier '\'
(transformer c:\abcd\123.txt en c:\abcd)
+----------------------------------------------------+
ou sinon tu peux essayer ce code (c'est pas moi l'auteur mais il fonctionne tres bien :

Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim path As String
Dim r As Long, X As Long, pos As Integer
bInfo.pidlRoot = 0&
If IsMissing(Msg) Then
bInfo.lpszTitle = "Select a folder."
Else
bInfo.lpszTitle = Msg
End If
bInfo.ulFlags = &H1
X = SHBrowseForFolder(bInfo)
path = Space$(512)
r = SHGetPathFromIDList(ByVal X, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
Range("A1") = GetDirectory
Else
GetDirectory = ""
End If
End Function

Sub appel()
Dim Chemin as String
On Error Resume Next
Msg = "Selection du répertoire désiré..."
Chemin=GetDirectory(Msg)
End Sub
 

franck17

XLDnaute Junior
Re : Nom de fichier trop long

Salut Lapix

Mon probleme c'est quand je clique sur la ligne 17 pour voir l'image il y a une erreur d'execution qui doit etre du au nom de fichier trop long je pense mais je ne suis pas tres expert en VBA.
Comment resoudre cette erreur d'execution?:confused:
Merci pour ton aide.
 

lapix

XLDnaute Occasionnel
Re : Nom de fichier trop long

bonjour,

Pour avoir essayé en detail, le seul probleme que je rencontre,c'est quand le fichier renseigné dans la cellule n'existe pas.

J'ai ajouté une cellule avec comme lien un fichier image de c:\documents..........\mes images\collines.jgp et ca fonctionnait correctement.
Si le fichier n'existe pas , il me mets une erreur de memoire....

Verifie bien tes chemins...
 

franck17

XLDnaute Junior
Re : Nom de fichier trop long

Bonjour Lapix

Merci de m'aider mais les chemins sont bons car ils sont juste listés donc la recuperation des chemins doit etre bonne.
Si je renomme le fichier pour qu'il soit moins long c'est ok.
Donc il n'y aurait pas un parametre a modifier pour lister des fichiers avec des noms assez longs.:confused:

Message---> Erreur d'execution '-2147024809(80070057)
La valeur tapée est en dehors des limites

Merci
 

lapix

XLDnaute Occasionnel
Re : Nom de fichier trop long

bonsoir

C'est peut etre lié a ton environnement (versions...)
Tu peux essayer de remplacer par des noms courts (xxxxxx~x)

Tu as essayé de remplacer les espaces par des '%20' ?
Peut etre qu'il n'aime pas les espaces....
 

franck17

XLDnaute Junior
Re : Nom de fichier trop long

Bonsoir Lapix

Alors la ça ce complique!

Ma version, excel 2000.
Comment faire pour remplacer par des noms courts (xxxxxx~x).?
Et comment faire pour remplacer les espaces par des '%20' ?
Par données convertir ?
Peut tu me donner des explications merci
Je debute sur excel et VBA et ça commence a me ......

Merci bonne soirée
 

lapix

XLDnaute Occasionnel
Re : Nom de fichier trop long

salut,

Dans un premier temps fait un test simplement. Si ca resoud ton probleme on saura comment traiter la globalité.

pour le %20 (qui est la representation de l'espace):

C:\Projets\Samples\NewStepperLuxe\Lib\AMORTISSEUR COMPLET.top.png
devient
C:\Projets\Samples\NewStepperLuxe\Lib\AMORTISSEUR%20COMPLET.top.png

tu fait ce remplacement là dans la cellule de ton choix, tu cliques et tu vois si ca repond a ton probleme.

Sinon on essaiera autre chose.Mais une a la fois. Pas la peine de courir tous les lievres en meme temps

A te lire
 

franck17

XLDnaute Junior
Re : Nom de fichier trop long

Salut.

Alors le fichier
C:\Projets\Samples\NewStepperLuxe\Lib\AMORTISSEUR COMPLET.top.png

sans rien faire ca marche si je rajoute %20

C:\Projets\Samples\NewStepperLuxe\Lib\AMORTISSEUR%20COMPLET.top.png

Erreur d'execution '7'
Mémoire insuffisant

Donc c'est pas ça.
Peut etre avec des noms courts (xxxxxx~x)
Mais la je ne sais pas faire non plus
Car le fichier qui me pose probleme
C:\Projets\Samples\NewStepperLuxe\Plateau de ligne reference N° 123987120 du poste de fabrication\Schema.top.png
Si je le renomme
C:\Projets\Samples\NewStepperLuxe\Plateau de ligne reference N° 123987120 du poste de\Schema.top.png
que je refais Rcherche dans TopSolid ça marche
Donc apres avoir enlever (fabrication) ça marche c'est pourquoi je pense que le nom est trop long.
Comment transformer un nom long en nom court???:confused:

Merci de ton aide a +
 

lapix

XLDnaute Occasionnel
Re : Nom de fichier trop long

Re salut

Precision : le %20 remplace l'espace, il n'est pas en plus de l'espace

Pour les noms courts :
il sont composes de 8 caracteres + l'extension. C'est aussi vrai pour les noms de dossier et sont transformes de la facon suivante :
les 6 premiers caracteres sans les espaces + '~x' , x qui represente le chrono du fichier.

soit dans ton exemple :

C:\projets\samples\newste~1\platea~1\schema~1.top.png
(pas sur de la fin) aie aie aie...

sinon tu peux recuperer le nom court avec la function suivante :

=======================================
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



courage...
 

franck17

XLDnaute Junior
Re : Nom de fichier trop long

Bonsoir Lapix

:) :p Super ça marche c'etait bien le nom de fichier qui etait trop long.
Merci beaucoup
Vu que tu metrises la situation,comment je pourrais integrer la réduction du nom automatique si il est trop long dans mon code VBA.
Autre probleme quand je clique sur Lancer TopSolid ça ne marche plus a cause du nom qui a ete raccouci.
Il y a un formule pour remettre en nom long ?
Ok d'accord je suis casse c....

Dans tous les cas MERCI de ton aide
 

lapix

XLDnaute Occasionnel
Re : Nom de fichier trop long

salut

Dans ta feuille XL tu laisse le nom de fichier long, ca ne derange pas
Dans ton code tu remplaces :
Image.Fill.UserPicture Lien
par
Image.Fill.UserPicture ShortPath(Lien)

comme cela tu auras le chemin en clair mais la recherche du fichier se fera sur le nom court


Ca devrait corriger ton probleme TopSolid
 

franck17

XLDnaute Junior
Re : Nom de fichier trop long

Bonjour Lapix

ALORS LA BRAVO :D

Ca marche impeccable,
je voulais recuperer la ligne active pour inserer une ligne reduire le nom tout ça dans une macro un truc pour m'occuper le restant de la semaine......
alors que toi un mot en plus et hop ça roule

Merci pour ton aide et surement a une prochaine fois.

je me lance dans une gestion de base de données avec listage de tous mes repertoires recuperation des noms de fichiers les eclater pour les ranger dans des colonnes avec filtres ..:confused: ..........donc la prochaine.
 

Discussions similaires

Réponses
3
Affichages
525
Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 294
Messages
2 086 920
Membres
103 404
dernier inscrit
sultan87