|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Divers Inscription : septembre 2011 Messages : 16 ![]() |
Bonjour tout le monde,
J'ai un petit soucis de gestion de la position d'un userform et de l'ouverture et fermeture d'un userform. Mon code permet de vérifier qu'il y a un seul fichier .xls dans un répertoire, s'il y a plus d'un fichier .xls le répertoire s'ouvre, l'utilisateur doit supprimer les fichiers superflus, puis fermer fermer le répertoire et cliquer sur ok (dans le userform) Mes problèmes:
En espérant avoir été plus clair que lors mon dernier message, je vous remercie de votre attention. Code :
|
||
|
|
00
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Tu vas au devant de grandes difficultés dans cette direction. Pourquoi ne pas utiliser un contrôle TreeView ou ListView, voire une ListBox sur lesquels tu as toute la maîtrise voulue ?
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Divers Inscription : septembre 2011 Messages : 16 ![]() |
Bonjour Daniel et merci pour ton complément d'information,
Etant débutant en VBA, je ne connais pas les solutions que tu proposes... Dans ce que je cherche à faire, l'utilisateur devrait pouvoir ouvrir les fichiers pour vérifier lesquels il doit supprimer, puis la macro devrait prendre le relais... Est-ce possible avec l'une de tes propostions? Je vais découvrir treeview, listview et listbox, voir un peu comment cela fonctionne. Un grand merci à toi. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Je suis d'accord avec Daniel, si tu es débutant en VBA, ne te lance pas dans l'utilisation des API Windows qui sont sans doute la seule solution à ce que tu veux faire exactement.
Maintenant, même si c'est plus simple, l'utilisation de ListView ou autre risque d'être tout de même assez laborieuse pour un débutant en VBA, surtout si tu veux que l'utilisateur puisse vérifier le contenu des fichiers avant de les effacer. Pourquoi ne pas tout simplement laisser comme tu as fait en bloquant la macro tant qu'il n'y a pas un seul fichier. En gros laisser tomber le dernier point de ta demande. Est-ce vraiment grave si le répertoire reste ouvert pour l'utilisateur ? |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Divers Inscription : septembre 2011 Messages : 16 ![]() |
Salut ZebreLoup,
Merci pour ton intervention. Non ce ne serait pas une catastrophe si le répertoire reste ouvert... Par contre je viens de constaté qu'il est impossible d'ouvrir un fichier .xls de ce répertoire puisque la macro est en mode pause. Je pourrais résoudre ce problème en ajoutant un bouton dans le Userform "Annuler et vérifier manuellement le contenu des fichiers). Tout à fait envisageable. Par contre, le userform reste derrière le répertoire ouvert, si bien que l'utilisateur a d'un coup un répertoire ouvert mais ne sait pas ce qu'il doit faire. Je ne sais pas comment faire pour que le userform soit devant le répertoire.... As-tu une solution? Merci. (Je suis entrain de regarder pour les listview, pas évident...) |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Tu dois effectivement pouvoir trouver un solution pour arrêter la macro et renseigner une propriété du UserForm pour que ton programme contenant cette vérification reprenne à cette étape seulement.
Par exemple tu sépares ton code en 2 et lors de la vérification, s'il y a plus d'un fichier, tu ouvres le répertoire, tu mets un paramètre multiFileCheck que tu as créé à False. Et lors du prochain lancement (enfin de chaque lancement) soit tu enchaines les deux procédures, soit seulement la deuxième en fonction de ce paramètre. Pour ce qui est de la position du UserForm, tu peux aussi faire apparaitre une MsgBox qui explique ce qu'il faut faire avant l'affichage du répertoire. |
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Divers Inscription : septembre 2011 Messages : 16 ![]() |
Hello,
En effet, le msgbox avant l'affichage du répertoire permettra à l'utilisateur de savoir ce qu'il faut faire.... Ensuite le code peut reprendre au même endroit, ce n'est pas un soucis. (il refait le test) Cela me semble être la bonne solution, en tous cas en attendant la maitrise des listview. à ce sujet, j'ai récupéré le code ci-dessous, mais j'ai une erreur pour FindExecutable Faut-il que j'ajoute une référence? Si oui laquelle? Un grand merci pour ta solution du msgbox avant l'affichage. Code :
|
||
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Tu n'as pas du récupérer tout le code nécessaire. Tu auras le même problème avec GetIconFromFile. Ca doit être une fonction issue de l'API windows dont on parlait au dessus.
Un exemple trouvé sur Google : Code :
|
||
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Citation:
http://silkyroad.developpez.com/VBA/ListView/
__________________
Cordialement. Daniel Citation:
|
||
|
00
|
|
|
#10 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Un exemple avec un userform (UserForm1), une ListView (ListView1) et un command button (CommandButton1). Note que les fichiers supprimés ne vont pas dans la corbeille, mais sont effacés définitivement. Une alternative est de les mettre dans un dossier dépotoir. Le code est à mettre ddans le module de l'userform :
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
Copyright © 2000-2012 - www.developpez.com