Tiatia63
Messages postés60Date d'inscriptionmardi 12 juin 2007StatutMembreDernière intervention23 décembre 2010
-
11 juil. 2007 à 11:28
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
11 juil. 2007 à 14:39
Comment faire afficher un message (msgbox) quand on ne trouve pas le fichier.
Dans ma listbox, quand je sélectionne la ligne, et que je clique sur un bouton, j'ouvre le fichier correspondant au nom de la ligne.
Voilà ce que j'ai fait...
Dim nuance As String, Fichier As String
Dim i As Variant
Call USFBienvenueAl.Dossier(NomDossier)
CHEMIN = NomDossier + "\Fiches Matières Al"
i = 0
For i = 0 To 200
If UsfRésultatsAl.ListBox2.Selected(i) = True Then
nuance = UsfRésultatsAl.ListBox2.List(i)
Fichier = CHEMIN & nuance & ".pdf"
Exit For
End If
Next i
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 11 juil. 2007 à 11:52
Bonjour à tous,
Ou alors...Peut-être(Renfield) cela :
Public Function FileExist(ByRef inFile As String) As Boolean
'*****************************/
' Fonction qui renvoi si fichier existant /
'*****************************/
On Error Resume Next
Let FileExist = CBool(FileLen(inFile) + 1)
End Function
Utilisation :
If FileExist(Chemin de ton fichier à vérifier dans rep définit) Then
MsgBox " Le fichier existe"
else
MsgBox " Le fichier n'existe pas"
End if
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 juil. 2007 à 11:51
Oh là !
Ta question est : comment s'assurer de l'existence d'un fichier ?
La réponse est celle que je t'ai donnée.
Ce n'est qu'ensuite (si existence) que tu l'ouvres par ton ShellExecute !
Mais j'ajouterais (en plus de ce qu'a fair observer RenField, que le meilleur moyen de ne pas choisir un fichier qui n'existe pas reste de très loin d'afficher tous simplement les seuls fichiers qui existent !
La fonction dir, associée à une simple listbox, te permet de lister dans ta listbox les fichiers d'un répertoire, y compris en filtrant leur extension !
Je viens de te mettre sur un chemin plus sage.
A toi de te retrousser les manches un peu.
Reviens avec un code d'essai et je t'aiderai si tu n'y parviens pas seul (mais je veux te voir t'y mettre).
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 juil. 2007 à 11:55
Bonjour Exploreur,
Regarde ce que j'ai écrit juste avant.
Il connait le nom du dossier (CHEMIN = NomDossier + "\Fiches Matières Al")
Rien ne l'empêche alors de travailler plus proprement et de n'offrir que les fichiers du dit répertoire (y compris en les filtrant). Et s'ils sont dans cette liste, ils existent forcément !
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 juil. 2007 à 12:08
J'insiste, Tiatia63 Il est bien plus pro et adroit de n'afficher dans ta listbox que les fichiers (forcément existants) du répertoire en cause (y compris en filtrant).
Enfin... fais donc "à ta tête"...
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 11 juil. 2007 à 12:14
Salut Jmfmarques,
Je suis d'accord avec toi sur le principe....Mais....Ce n'est pas toujours sûr que le fichier afffiché dans sa Listbox soit présent sur le disque "au moment T" ou il veut faire une action dessus...
J'utilise cette p'tite fonction dans une de mes application qui tourne sur réseau, et on ne sait jamais si quelqu'un déplace un fichier par erreur ou pire l'éfface..
Jmfmarques, j'explique bien sûr mon point de vue et ne me "braque" pas contre toi....Car tu nous en apprend tout les jours avec tes petit codes bien à toi...(couic, toto,....)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 juil. 2007 à 12:16
Re,
Essaye d'analyser, comprendre et te servir de ce qui suit (exemple à main levée) :
Private Sub Command1_Click()
chemin = "d:" ' ici ton répertoire
filtre = "*.txt" 'ici ton filtre éventuel
fichiers = Dir(chemin & filtre)
Do While fichiers <> ""
Listbox1.AddItem fichiers
fichiers = Dir
Loop
End Sub
J'aurais nettement préféré te voir t'y mettre.
De cette façon : aucun fichier non existant ne risque d'être proposé au chois de l'utilisateur.
Tu débutes et c'est bien, mais débute alors comme il le faut.
Tiatia63
Messages postés60Date d'inscriptionmardi 12 juin 2007StatutMembreDernière intervention23 décembre 2010 11 juil. 2007 à 12:41
Bon alors faut pas m'agresser comme ça! C'est pas ma faute si je comprends pas tout!
Alors je réexplique le truc!
Dans ma listebox j'ai une liste de nom mais après il n'y a pas forcement un fichier qui va avec chaque nom. Mais par contre je veux toujours que la liste de noms apparaisse en entier, que la liste soit complete qu'il existe ou non un fichier qui va avec.
Et toi ce que tu me propose, si j'ai bien compris c'est que je n'affiche dans ma listebox que les noms qui correspondent à un fichier existant...
Mais c'est pas facile d'expliquer par ecrit... désolée
Merci de votre aide.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 11 juil. 2007 à 12:45
en gros, c'est ce qui est proposé.
ce verbe 'proposer' est clair : nulle aggression, juste une posibilié d'action
on t'a filé toutes les billes pour faire ce que tu cherches a faire...
tu as un code pour tester l'existence d'un fichier (jmfmarques t'indiquait très justement Dir)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 juil. 2007 à 13:05
Je lui aurais bien proposé l'utilisation d'une FileListBox, RenField.
Le problème est que j'ai vu quelque part que ce contrôle n'existe pas sous VBA.
(Raison du substitut ListBox en conjugaison avec Dir).
A Tiatia63 : essaye de faire la différence entre essayer de t'aider réellement et t' "agresser". C'est vraiment t'aider, que je cherchais à faire (comment celà peut-il t'échapper ?). C'est dommage.
Tiatia63
Messages postés60Date d'inscriptionmardi 12 juin 2007StatutMembreDernière intervention23 décembre 2010 11 juil. 2007 à 14:26
Voilà alors d'apres tout ce que vous m'avez dit, j'ai essayer deux choses qui marchent. Alors est ce qu'il y en a une qui est mieux que l'autre? Ou c'est encore pas ça et y a mieux?
Fichier = NomDossier & "\Fiches Matières Al" & _
UsfRésultatsAl.ListBox2.Text & ".pdf"
If Dir$(Fichier) <> "" Then
ShellExecute 0, "open", Fichier, vbNullString, CHEMIN, 1
Else
MsgBox "La fiche n'existe pas"
End If
OU
If FileExist(Fichier) Then
ShellExecute 0, "open", Fichier, vbNullString, CHEMIN, 1
Else
MsgBox " La fiche n'existe pas"
End If