Comment ouvrir un classeur à partir d'une macro

Messages postés
151
Date d'inscription
lundi 16 janvier 2006
Dernière intervention
19 avril 2016
- 25 mars 2016 à 09:10 - Dernière réponse :
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 25 mars 2016 à 17:16
Bonjour,
J'ai 2 classeurs : "TRAITER" sur disque dur du PC et "DATA" sur clé USB.

Cas 1) Si j'ouvre DATA, puis TRAITER, la macro Workbook_Open sait identifier chacun des classeurs et traiter les données de DATA.
Cas 2) Si j'ouvre TRAITER seulement (workbooks.count=1), comment ouvrir DATA avec Dialog, afin de me retrouver comme le cas 1 ?

J'ai bien chercher dans l'explorateur d'objet, mais c'est aussi nébuleux que l'aide souvent muet.
J'espère de pas trop abuser de votre temps.
A+ bab

PS : la copie d'une partie de feuille d'un classeur vers un autre classeur fonctionne. Merci à ucfoutu.
Afficher la suite 

Votre réponse

3 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 25/03/2016 à 09:39
0
Merci
Bonjour,
C'est à cela que sert la méthode Workbooks.open
exemple :

Workbooks.Open "D:\blabla.xlsm"


EDIT : tu pourras trouver intéressant d'attribuer une variable objet au classeur ainsi ouvert, puis de t'en servir comme tu le souhaites ...
Exemple :
Dim toto As Workbook
Set toto = Workbooks.Open("D:\abab.xlsm")
For Each feuille In toto.Worksheets
MsgBox feuille.Name
Next

qui te permet d'utiliser toto

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
Messages postés
151
Date d'inscription
lundi 16 janvier 2006
Dernière intervention
19 avril 2016
- 25 mars 2016 à 14:18
0
Merci
Rebonjour,
Dans le cas 2, il se peut que le nom du classeur me soit inconnu, de même que le chemin dans le support. Je dois alors rechercher son origine puis le saisir dans le classeur TRAITER qui pourra l'ouvrir.
J'espérais extraire ce classeur (chemin compris) via un Dialogue interne d'une macro de TRAITER afin d'éviter les erreurs de saisie d'un utilisateur Lambda.
Merci quand même de ta réponse, que je peux mettre en place pour l'instant. A+ Bab
Commenter la réponse de BABUDROME
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 26/03/2016 à 06:22
0
Merci
regarde ce que fait par exemple ceci :
titi = Application.Dialogs(xlDialogOpen).Show
If titi Then
Set toto = ActiveWorkbook
MsgBox toto.Name
End If

clique sur le classeur de ton choix deanbs la boîte de dialogue et regarde

EDIT : une autre méthode ? ====>>>
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
With fd
.Filters.Add "Classeurs Excel", "*.xl*", 1
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
MsgBox "tu as choisi le fichier : " & vrtSelectedItem
Next vrtSelectedItem
Else
MsgBox "tu n'as choisi aucun fichier"
End If
End With
Set fd = Nothing

Le reste, avec cette seconde méthode, est facile à deviner (suffit de continuer avec le code de mon tout premier message, puisque le chemin complet est ainsi connu.

Je te précise qu'il t'est également possible de définir un répertoire "initial", en ajoutant par exemple, immédiatement après With fd :
.InitialFileName = "D:\monoutil"

(la boîte de dialogue s'ouvrira ainsi d'abord sur le répertoire D:\monoutil
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.