|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : février 2006 Messages : 106 ![]() |
Bonsoir.
La documentation de Word 2002 sur la fonctio Dir et son second argument ne me semble pas claire. Le second argument est, disons, un champ de bits. Voici ce que dit la documentation pour commencer : " Dir, fonction Renvoie une valeur de type String représentant le nom d'un fichier, d'un répertoire ou d'un dossier correspondant à une chaîne de recherche, à un attribut de fichier ou au nom de volume d'un lecteur. Syntaxe Dir[(pathname[, attributes])] " Que faut-il entendre exactement par " correspondant à un attribut de fichiers " ? Avant de donner un exemple de code et son résultat, je copie ce que la documentation indique sur la façon de désigner les attributs : Constante Valeur Description vbNormal 0 (Par défaut) Spécifie les fichiers sans attributs. vbReadOnly 1 Spécifie les fichiers accessibles en lecture seule ainsi que les fichiers sans attributs. vbHidden 2 Spécifie les fichiers cachés ainsi que les fichiers sans attributs. vbSystem 4 Spécifie les fichiers système ainsi que les fichiers sans attributs. Non disponible sur le Macintosh. vbVolume 8 Spécifie un nom de volume ; si un autre attribut est spécifié, la constante vbVolume est ignorée. Non disponible sur Macintosh. vbDirectory 16 Spécifie les dossiers ainsi que les fichiers sans attributs. vbAlias 64 Le nom du fichier spécifié est un alias. Disponible uniquement sur le Macintosh. Voici maintenant un code que j'ai écrit pour tester cela : Code :
S'il a les attributs "Lecture seule" et "Archive" mais pas l'attribut "Fichier caché", le MsgBox dit qu'il existe. S'il a les trois attributs "Lecture seule", "Fichier caché" et "Archive", le MsgBox dit qu'il n'existe pas. Je ne vois pas quelle est la règle qui peut faire attendre ce résultat. Quelqu'un peut-il me l'expliquer ? Merci d'avance. |
||
|
|
00
|
|
|
#2 |
|
Inactif
Inscription : décembre 2005 Messages : 3 784 ![]() |
Ben !...
si tu limites aux fichiers "normaux", il arrête ainsi sa sélection... Si tu relis ce qu'il convient de mettre en arguments pour attributes, tu te rendras compte de ce que les opérateurs y sont permis. Dans le cas qui t'intéresse, il me semble que l'opérateur OR est celui que tu dois utiliser... pour l'argument attributes. |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : février 2006 Messages : 106 ![]() |
Merci, mais je ne comprends pas.
Dans mes deux essais, je me suis "limité aux fichiers normaux" (je reprends ton expression), et pourtant la macro a trouvé un fichier en lecture seule. Comment se fait-il qu'elle trouve un fichier en lecture seule et qu'elle ne trouve pas un fichier caché ? Aucun de ces fichiers n'est "sans attributs", me semble-t-il ? Désolé si je suis lourd, mais s'il fallait attendre de comprendre avant de demander... Mersenne. |
|
|
00
|
|
|
#4 | |
|
Inactif
Inscription : décembre 2005 Messages : 3 784 ![]() |
Voila les arguments possibles :
Citation:
2) ne pas confondre le recensement d'un fichier avec les interventions éventuelles sur le fichier. Si le fichier n'est ni caché, ni un fichier système, ni un répertoire ou sous-répertoire, ni la racine d'un disque, il sera recensable par vbnormal. |
|
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : février 2006 Messages : 106 ![]() |
Merci, mais si tu relis la documentation du Word 2002 telle que je l'ai copiée, tu verras qu'il y a bien une valeur vbReadOnly (elle est égale à 1).
Cette documentation est-elle fautive ? Puis-je te demander la source où tu as trouvé qu'il n'y a pas de valeur pour la lecture seule ? Merci d'avance. Mersenne. |
|
|
00
|
|
|
#6 |
|
Inactif
Inscription : décembre 2005 Messages : 3 784 ![]() |
Je n'ai pas Word VBA. J'ai donc regardé directement dans VB...
Ils ont peut-être fait une faute en traduisant ou en faisant un copier-coller d'autres constantes utilisées à d'autres fins que celles du Dir. As-tu bien compris qu'un fichier ReadOnly devait pouvoir être recensé, même si on ne pouvait pas le modifier ?... C'est tout simple. |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : février 2006 Messages : 106 ![]() |
Merci.
Tu as peut-être raison, mais c'est un peu bizarre que VB n'utilise pas la valeur 1, il me semble. Pour qu'un fichier soit trouvé par Dir(NomCompletDeFichier, vbValeurDAttribut), faut-il que la valeur des attributs de ce fichier soit identique à vbValeurDAttribut, ou suffit-il que le fichier possède tous les attributs impliqués par vbValeurDAttribut, et éventuellement d'autres attributs en plus ? Je n'ai pas trouvé de réponse claire à cette question. Comme ma macro trouvait les ReadOnly avec le paramètre vbNormal, je croyais que la seconde hypothèse était la bonne. Si tu peux m'indiquer une source non ambiguë, merci d'avance. Mersenne. P.S. Pourquoi ne pourrait-on jamais avoir besoin d'une recherche qui ne s'intéresse pas aux fichiers ReadOnly ? |
|
|
00
|
|
|
#8 | |
|
Inactif
Inscription : décembre 2005 Messages : 3 784 ![]() |
Je ne vois pas d'autres sources que ce que je t'ai déjà dit.
Maintenant, si tu veux pouvoir recenser tous les fichiers, quel que soit leur attribut, utilise donc l'opérateur OR (Or attmachin or attchouette, etc...) J'ai par contre également VBA EXCEL et, là aussi, j'y vois comme arguments pour Dir : Citation:
|
|
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : février 2006 Messages : 106 ![]() |
Merci pour la référence.
(Edit : j'avais demandé s'il y avait de la documentation sur Internet.) En tout cas, on dirait qu'il y a un bug ou une erreur dans la documentation du Word 2002. Mersenne. |
|
|
00
|
|
|
#10 |
|
Inactif
Inscription : décembre 2005 Messages : 3 784 ![]() |
Ah ça oui, alors : je connais un excellent site, tout prés de toi et tout prêt à te servir, sans passer par internet.
Son nom ? AIDE EN LIGNE Vois sur ta barre : "Aide" ou "Help" ou "?" selon ta version .... clique dessus... frappe Dir dans la boite qui va s'ouvrir... et lis... Tu peux également frapper Dir où tu veux, dans ton code, sélectionner ce mot .... et frapper la touche F1....! EDIT: on s'est croisés. Je réponds à ta nouvelle question : un recensement n'est pas un inventaire précis. le Dir va faire exactement ce que ferait ton explorateur... |
|
|
00
|
|
|
#11 | |
|
Nouveau Membre du Club
![]() Inscription : février 2006 Messages : 106 ![]() |
Citation:
Mersenne. |
|
|
|
00
|
|
|
#12 |
|
Inactif
Inscription : décembre 2005 Messages : 3 784 ![]() |
Ne possédant pas ta version, je ne peux ni vérifier, ni confirmer, ni infirmer...
D'autres le feront sans doute à ma place... |
|
|
00
|
|
|
#13 | ||
![]() ![]() Alain GerardConsultant informatique Inscription : mai 2005 Messages : 3 671 ![]() |
Citation:
De plus, la logique de sa question est tout à fait correcte. Je n'ai pas d'explication.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres! Pensez aussi à voter pour les réponses qui vous ont aidés. ------------ Je dois beaucoup de mes connaissances à mes erreurs! |
||
|
|
00
|
|
|
#14 | |
|
Inactif
Inscription : décembre 2005 Messages : 3 784 ![]() |
Nous parlons bien tous des attributs invocables en VBA en argument de DIR, - car c'est DIR qui est concerné - (et qui chez moi n'incluent pas le readonly et sont ceux que j'ai indiqués) n'est-ce-pas ?
et pas des constantes prévues, de façon générale par VB et notamment pour l'utlisation de GetAttr et SetAttr,et qui sont : Citation:
Je vais essayer de trouver un voisin avec VB 2000 |
|
|
|
00
|
|
|
#15 | |
|
Inactif
Inscription : décembre 2005 Messages : 3 784 ![]() |
Bon. Inutile de déranger le voisin... M. Google a fait l'affaire.
Voilà ce que l'on y trouve à propos de l'utilisation de DIR sous VBA : Citation:
|
|
|
|
00
|
|
|
#16 |
|
Expert Confirmé
![]() Inscription : mai 2005 Messages : 3 419 ![]() |
les différentes valeurs possibles font une checksum de valeur 51
sous windows l'argument est optionnel il suffit de ne rien mettre pour tout avoir si vous tenez à avoir un truc il faut utiliser la comparaison byte à byte (c'est pas la mienne est plus grosse etc ) donc vbnormal or 51 |
|
|
00
|
|
|
#17 | ||
![]() ![]() Alain GerardConsultant informatique Inscription : mai 2005 Messages : 3 671 ![]() |
Citation:
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres! Pensez aussi à voter pour les réponses qui vous ont aidés. ------------ Je dois beaucoup de mes connaissances à mes erreurs! |
||
|
|
00
|
|
|
#18 |
|
Nouveau Membre du Club
![]() Inscription : février 2006 Messages : 106 ![]() |
Merci jmfmarques, mais je ne suis pas sûr de comprendre.
Avez-vous remarqué que vbReadOnly figure bel et bien dans la liste que vous venez de poster(à la fin de la liste) ? (Edit : je n'avais pas lu le post d'Alain Tech, qui fait la même remarque.) Mersenne. |
|
|
00
|
|
|
#19 | |
|
Nouveau Membre du Club
![]() Inscription : février 2006 Messages : 106 ![]() |
Citation:
J'ai tout de même l'impression que la pratique ne correspond pas à la théorie. Comment se fait-il qu'avec l'argument vbNormal (valeur 0), un fichier en lecture seule (non caché) est trouvé et un fichier caché n'est pas trouvé ? Mersenne. |
|
|
|
00
|
|
|
#20 | ||
|
Nouveau Membre du Club
![]() Inscription : février 2006 Messages : 106 ![]() |
Citation:
Remarquez que la chaîne qui forme le premier argument ne se termine pas par le caractère \ Tous mes essais m'ont convaincu que, dans ce cas, l'objet cherché est l'objet (fichier ou répertoire) désigné par la chaîne et non un de ses éléments. D'ailleurs, je rappelle que si le fichier indiqué dans ma macro ne comporte pas (dans la réalité) l'attribut "caché", il est bel et bien trouvé par la macro. Mersenne. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com