excel vb : dir et kill

kazkaz

Membre enregistré
1 Décembre 2010
2
0
bonjour
dans une macro , quand je mets

file = dir(dossier)
do while (file <> "")
msgbox file
file = dir
loop
je vois tous les fichiers du dossier
------------------
mais quand j'écris

file = dir(dossier)
do while (file <> "")
kill file
file = dir
loop
la macro ne supprime pas tous les fichiers, malgré qu'ils soient tous attribués vbnormal
Quelqu'un a-t-il une explication
merci
 
la macro ne supprime pas tous les fichiers, malgré qu'ils soient tous attribués vbnormal
Quelqu'un a-t-il une explication
En fait la macro supprime un fichier sur deux. Après le premier passage, le premier fichier est supprimé. Mais la boucle s'attaque au deuxième fichier, lequel est en réalité le troisième puisque le véritable deuxième fichier a remonté d'un cran et se trouve en première position.

En fait, pour contourner ce problème, il faut relancer la recherche à chaque tour de boucle. En l'écrivant comme ceci, ça devrait marcher :
Bloc de code:
Sub test()

dossier = "Disque Dur:users:machin:Documents:Toto"
ChDir dossier
file = Dir("")
Do While (file <> "")
Kill file
file = Dir("")
Loop

End Sub

Note : je ne suis pas sûr d'avoir tout bien vu mais si la boucle fonctionne correctement dans Excel 2004, dans Excel 2011, ça a l'air buggé !!!
 
De rien.

J'en profite pour signaler qu'il serait (pour d'autres raisons) plus rigoureux de récupérer tous les noms de fichier dans une matrice dans un premier temps et de les supprimer ensuite. Ton exemple initial est justement un illustration des risques de problèmes qu'on peut rencontrer en ne bordant pas complètement l'opération qu'on mène - et la recherche de la cause de l'erreur est parfois ardue...

Bon, ceci dit, j'ai un peu creusé le problème rencontré avec Excel 2011, il semble bien y avoir un bug dans les noms et chemins d'accès ramenés par la fonction "Dir", même en récupérant proprement le résultat. À la place du nom du premier fichier, c'est le nom du dossier lui-même qui remonte. Alors que tout ça fonctionne très bien dans Excel 2004 et Excel 2010 sous Windows. Espérons que ça sera corrigé dans une mise à jour prochaine !
 
j'ai un peu creusé le problème rencontré avec Excel 2011, il semble bien y avoir un bug dans les noms et chemins d'accès ramenés par la fonction "Dir", même en récupérant proprement le résultat. À la place du nom du premier fichier, c'est le nom du dossier lui-même qui remonte.
J'ai creusé un peu plus et ai localisé le problème : par le plus grand des hasards, dans les tests que j'ai fait j'ai utilisé des fichiers dont le nom comportait une lettre accentuée. Et c'est ça (et apparemment uniquement ça) qui mettait le bazar (et uniquement dans Office 2011). C'est donc bien un bug introduit dans cette version d'Office (le problème était identique dans Word et PowerPoint). Il n'est (hélas) pas rare que nos amis d'outre-Atlantique oublient de tenir compte des lettres accentuées... Bon, bug signalé et remonté, reste à souhaiter qu'il soit corrigé, donc !