Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
719 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA/Excel] Ouverture de Fichier User Friendly

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA/Excel] Ouverture de Fichier User Friendly

n°2275435
Gnarlock07​06
Posté le 11-02-2016 à 02:59:02  profilanswer
 

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 !

mood
Publicité
Posté le 11-02-2016 à 02:59:02  profilanswer
 

n°2275450
Marc L
Posté le 11-02-2016 à 10:21:55  profilanswer
 

 
            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) …
 

n°2275455
Gnarlock07​06
Posté le 11-02-2016 à 10:53:14  profilanswer
 

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 !!

n°2275461
Marc L
Posté le 11-02-2016 à 12:24:11  profilanswer
 

 
            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 …
 

n°2275470
Marc L
Posté le 11-02-2016 à 13:57:29  profilanswer
 

 
            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 …
 

n°2275575
Gnarlock07​06
Posté le 12-02-2016 à 21:39:53  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA/Excel] Ouverture de Fichier User Friendly

 

Sujets relatifs
[VBA]Numéro de colonne d'après son libelléimporter données vers autre fichier excel automatiquement
Fonction couper-coller VBArécupérer valeur JComboBox dans une fichier txt
comment récupérer valeur JComboBox dans une fichier txt[Excel] Incrémenter si doublon dans une colonne
Pas d'IOException sous UNIX écriture de fichierChronomètre en VBA
Compter le nombre de lignes d'un fichier . 
Plus de sujets relatifs à : [VBA/Excel] Ouverture de Fichier User Friendly


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR