[VBA/Excel] Ouverture de Fichier User Friendly

Ouverture de Fichier User Friendly [VBA/Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 11-02-2016 à 02:59:02    

Salut à tous !
 
 
Je poste mon premier message sur cette partie du forum après de longues et infructueuses recherches sur internet  :pfff:  
 
J'ai un niveau intermédiaire en VBA et je souhaite faire quelque chose qui parait simple :  
 
Avoir un bouton de type Userform,  
 
Lorsqu'on clique sur ce bouton, l'explorateur windows s'ouvre en étant par défaut dans le dossier du classeur actuel, l'utilisateur peut alors ouvrir un autre fichier excel, comme s'il ouvrait via CTRL+O
 
Or ce que j'aimerais faire, c'est qu'une fois le fichier choisi, ce dernier s'ouvre en arrière plan et que les données situées sur la première page soient copiées vers mon classeur actuel avant de refermer le classeur ouvert.
 
 
En clair, si mon classeur s'appelle main, j'ai envie de pouvoir ouvrir un classeur (que je vais choisir, sans connaitre le nom à l'avance), appelé données.xls et à l'ouverture d'importer la première page dans un nouvel onglet de mon main.
 
 
Bien entendu, je sais qu'il y a la "solution" d'avoir une liste contenant le path prédéfini des fichiers à ouvrir et de les ouvrir traditionnellement via une macro, mais ce n'est pas ce que je veux faire là...
 
 
Merci d'avance pour votre aide !

Reply

Marsh Posté le 11-02-2016 à 02:59:02   

Reply

Marsh Posté le 11-02-2016 à 10:21:55    

 
            Bonjour !
 

Gnarlock0706 a écrit :

Lorsqu'on clique sur ce bouton, l'explorateur windows s'ouvre en étant par défaut dans le dossier du classeur actuel, l'utilisateur peut alors ouvrir un autre fichier excel, comme s'il ouvrait via CTRL+O


            Via la méthode GetOpenFilename
 
 

Gnarlock0706 a écrit :

c'est qu'une fois le fichier choisi, ce dernier s'ouvre en arrière plan et que les données situées sur la première page soient copiées vers mon classeur actuel avant de refermer le classeur ouvert.


            Diverses possibilités !
 
            Le plus simple pour les débutants est de désactiver l'affichage via la propriété ScreenUpdating
            puis d'ouvrir classiquement le classeur par la méthode Workbooks.Open
 
            Autre voie via la fonction GetObject
 
            Et dans ces deux cas fermer le classeur via la méthode Workbooks.Close.
            Tout est documenté dans l'aide interne du VBA !
 
 
            Il existe aussi une possibilité sans ouvrir le classeur via un ActiveX ADODB et en sélectionnant le bon driver selon la version d'Excel
            si la feuille de calculs source est bien structurée (bloc contigu de données) …
 

Reply

Marsh Posté le 11-02-2016 à 10:53:14    

Marc L a écrit :

 
            Bonjour !
 


 

Marc L a écrit :


            Via la méthode GetOpenFilename
 
 


 

Marc L a écrit :


            Diverses possibilités !
 
            Le plus simple pour les débutants est de désactiver l'affichage via la propriété ScreenUpdating
            puis d'ouvrir classiquement le classeur par la méthode Workbooks.Open
 
            Autre voie via la fonction GetObject
 
            Et dans ces deux cas fermer le classeur via la méthode Workbooks.Close.
            Tout est documenté dans l'aide interne du VBA !
 
 
            Il existe aussi une possibilité sans ouvrir le classeur via un ActiveX ADODB et en sélectionnant le bon driver selon la version d'Excel
            si la feuille de calculs source est bien structurée (bloc contigu de données) …
 


 
Bonjour Marc,  
 
Merci beaucoup de votre aide !
 
 
Concernant votre réponse, j'aimerais vous demander quelques éclaircissement : je viens de tester la première méthode qui marche très bien et a le mérite d'être simple !
 
Cependant quels sont ses inconvénients (par exemple est-ce mieux d'utiliser getobjet ?)
 
Lorsque les fichiers peuvent être potentiellement mal typés, la méthode adob est impossible à mettre en oeuvre ? (d'ailleurs quels sont les avantages à l'utiliser par rapport aux méthodes précédentes ?)
 
Merci encore !!

Reply

Marsh Posté le 11-02-2016 à 12:24:11    

 
            GetObject est plutôt utile pour ouvrir un fichier d'une autre application et par défaut l'objet est censé être invisible.
 
            Via ADODB seul un bloc contigu de données est chargé.
            L'avantage avec un énorme classeur à la limite de la capacité maximale de mémoire gérée par Excel est d'y accéder sans l'ouvrir.
 
            Le choix de la méthode dépend de la capacité de maintenir dans le futur le code en cas de modification,
            par l'auteur comme par des collaborateurs : donc sans contrainte spécifique, on va au plus simple.
 
            A noter : lors d'une réponse, inutile de citer le message juste précédent, merci …
 

Reply

Marsh Posté le 11-02-2016 à 13:57:29    

 
            J'ai oublié pour ADODB la possibilité d'appliquer à la volée une requête SQL pour charger des données sous conditions, c'est plus rapide …
 

Reply

Marsh Posté le 12-02-2016 à 21:39:53    

Merci, je note pour la requête ! Pour ce projet il n'y en aura pas besoin mais pour des grosses BDD ça peut être utile,  
 
Merci encore

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed