LucyUnDemi
Messages postés34Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention12 mai 2009 4 févr. 2008 à 15:31
Bonjour a tous !
Comme vous l'aurez compris en lisant le titre j'ai un problème avec la fonction Dir !
Voici comment je l'utilise :
Dim dossier As String
dossier = Dir(lettre & ":\Année 2007\OFFRES" & Form1.txt_AchReal.Text & "*", vbDirectory)
Donc voici le problème :
Cette fonction ne fonctionne que quand je suis en mode pas à pas, car quand je l'utilise en mode rapide il me dis que la variable dossier est vide ( dossier = "" )
Voici le code comple de la methode :
Dim rep As String
'obtient le premier fichier ou répertoire
dossier = Dir(lettre & ":\Année 2007\OFFRES" & Form1.txt_AchReal.Text & "*", vbDirectory)
fichier = Dir(lettre & ":\Année 2007\OFFRES" & dossier & "", vbHidden)
'boucle tant que le répertoire n'a pas été entièrement parcouru
Do While (fichier <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(lettre & ":\Année 2007\OFFRES" & dossier & "" & fichier) And vbDirectory) <> vbDirectory Then
TableNom(i) = fichier
TableDate(i) = DateDiff("n", FileDateTime(lettre & ":\Année 2007\OFFRES" & dossier & "" & fichier), DateTime.Now)
TableChemin(i) = lettre & ":\Année 2007\OFFRES" & dossier & "" & fichier
End If
'passe à l'élément suivant
fichier = Dir
i = i + 1
Loop
Dim FichierRecent As String
FichierRecent = FichierExcel 'trie les fichier pour ne garder au final que le fichiers .xls le plus recent
chemin = "Z:\Année 2007\OFFRES" & dossier & "" & FichierRecent
Debug.Print chemin
J'éspére avoir été assez claire dans l'énonce de mon problème.
Merci beaucoup pour votre precieuse aide.
Je vous contacte dès qu'il y a du nouveau.
__________________________________
La vie est trop courte pour la passer a haïre.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 4 févr. 2008 à 18:43
Excuses, j'ai répondu un peu vite (quand on fait plusieurs choses en même temps ...)
Quand il te dit que Dossier est vide, que vaut
lettre & ":\Année 2007\OFFRES" & Form1.txt_AchReal.Text & "*"
que tu lui as fourni ?
Quand il génère le défaut, clique sur Debug
Tape Ctrl-G pour faire apparaitre la fenêtre de debug et tape la commande :
? lettre & ":\Année 2007\OFFRES" & Form1.txt_AchReal.Text & "*"
(le ? = Print vers la fenêtre)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
LucyUnDemi
Messages postés34Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention12 mai 2009 5 févr. 2008 à 09:02
Bonjour a tous !
En faite ma variable 'lettre' contient, la lettre d'un lecteur reseau monté précédement !
C'est justement le montage de ce lecteur reseau qui pose problème.
Quant je monte le lecteur reseau juste avant l'execution de ce précédent code ca ne fonctinne pas ; mais si je monte (et démonte) le lecteur reseau a l'ouverture (et a la fermeture) du programme ca fonctionne !
Mais je préférerais que le lecteur reseau soit monte et demonte avant et apres l'execution de ce code
Merci pour vos reponses je continue a chercher une amélioration de mon coté.
___________________________________
La vie est trop courte pour la passer a haïre.
LucyUnDemi
Messages postés34Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention12 mai 2009 5 févr. 2008 à 14:54
(Re) Bonjour a tous !
Merci pour les reponses et précisions
En faite MPi² dossier = Dir(lettre & ":\Année 2007\OFFRES" & Form1.txt_AchReal.Text & "*", vbDirectory)disont que : lettre "X" et Form1.txt_AchReal.Text "Dus"
ça me donne comme resultat : dossier = "Dus Jean-Claude"
Ensuite
fichier = Dir(lettre & ":\Année 2007\OFFRES" & dossier & "", vbHidden)
me donne : fichier = "Scénes de JC Dus Les Bronzés 3.doc"
donc fichier est le resultat de la recherche d'un fichier (meme cache) dans le dossier 'dossier'
Donc logiquement j'ai pensé comme toi MPi² mais je me suis rendus compte que Dir("X:\Doc\Dus*", vbDirectory) renvoyais que le resultat de "Dus*", de meme pour le fichier.
________________________________________
La vie est trop courte pour la passer a haïre.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 5 févr. 2008 à 21:36
... à mon avis çà ne fonctionne pas parce que le code est executé alors que le lecteur n'est pas encore monté
pour info on peut atteindre une lettre réseau sans "lecteur réseau monté"
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
LucyUnDemi
Messages postés34Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention12 mai 2009 6 févr. 2008 à 17:03
Et Op encore un message dans le vent ; je le refais :
Bonjour
Et bien ... En faite Je pense que quand j'éxécute en pas a pas ou monte le lecteur reseau au lancement de la forme ; le lecteur reseau a bien le temps d'être assimile par le programme. Mais si je le monte juste avant l'execution de mon programme il n'as pas le temps d'être assimilé par le systeme et donc ça plante.
Ca me parais louche mais les faits sont la ; je me suis donc resolut a Monter et Démonter le lecteur reseau au lancement et a l'arret du programme.
Merci pour l'aide et a une prochaine.
______________________________________
La vie est trop courte pour la passer a haïre.
LucyUnDemi
Messages postés34Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention12 mai 2009 7 févr. 2008 à 10:20
Bonjour à tous et Merci
Merci a PCPT !
Ton idée fonctionne bien, j'ai donc appliqué la technique du 'Sleep' apres avoir monté mon lecteur réseau ainsi donc il a bien le temps d'être assymillé (<= Y a une faute là non ?) et quand le programme repart tout fonctionne.
Pour ceux que ça interresse, voici le lien ou j'ai trouve comment utiliser cette technique :
http://www.vbfrance.com/codes/TUTO-TECHNIQUE-ATTENDRE_21180.aspx Donc merci a Jack aussi !
______________________________________
La vie est trop courte pour la passer a haïre.