IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Userform et ouverture de Répertoire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Divers
    Inscrit en
    Septembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Septembre 2011
    Messages : 16
    Par défaut Userform et ouverture de Répertoire
    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:

    • Ouvrir le répertoire dans la taille maximale (plein écran)
    • Que le userform apparaisse devant le répertoire ouvert
    • Vérifier que le répertoire a bien été fermé par l'utilisateur, sinon le fermer


    En espérant avoir été plus clair que lors mon dernier message, je vous remercie de votre attention.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    retour1:
     
              Fichier = Dir(chemin2 & "*.xls*")
              compteur = 0
                Do While Len(Fichier) > 0
                    If compteur = 1 Then ' Cela signifie qu'il y a plus 'un fichier .xls
                        Set objShell = New Shell
                        objShell.Explore (chemin2) 'ouvre le répertoire dont le chemin d'accès est chemin2
     
                        TROP.Show 'Doit apparaitre devant le répertoire
     
                        GoTo retour1 'recommence la boucle pour vérifier que les fichiers superflux ont été supprimés
                    End If
     
                    Range("i" & (laligne)) = Fichier ' inscrit le nom du fichier dans une cellule du classeur
                    Fichier = Dir()
                    compteur = 1
                Loop

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    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 ?

  3. #3
    Membre averti
    Homme Profil pro
    Divers
    Inscrit en
    Septembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Septembre 2011
    Messages : 16
    Par défaut
    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.

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    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 ?

  5. #5
    Membre averti
    Homme Profil pro
    Divers
    Inscrit en
    Septembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Septembre 2011
    Messages : 16
    Par défaut
    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...)

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    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.

Discussions similaires

  1. [VBA-E] Ouvrir un Userform à l'ouverture du fichier excel
    Par dimitrios dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/12/2006, 16h35
  2. Montrer userform lors ouverture fichier excel
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/11/2006, 15h20
  3. Réponses: 4
    Dernier message: 09/06/2006, 10h08
  4. Excel : lancement d'un userform à l'ouverture du classeur
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/12/2005, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo