Menu

Aide sur explorateur de document. [Résolu]

MokonaN - 16 mai 2018 à 16:20 - Dernière réponse :  MokonaN
- 17 mai 2018 à 15:49
Bonjour à tous,

Je vous contacte car mes nombreuses recherches n'ont pas aboutit. Je voulais savoir si vous pouvez m'aider dans cette opération.
Je souhaite faire un code qui me permet à partir de l'explorateur de document de sélectionner un classeur excel afin de pouvoir l'exploiter en récupérant des données dessus pour l'intégrer sur une feuille d'un autre classeur ( ou se trouve le code source de la macro).
Pour mes débuts j'ai déjà le code suivant :
Sub Ouvrirfenetre()
Dim MonDossier as String
Dim i as Integer
' je pensais utiliser le i dans une boucle for finalement je ne l'utilise pas
Dim flag as Boolean
Dim classeurcode, classeurouvert as Workbook
Set classeurcode = thisWorkbook
' ici je stipule que le classeur ouvert est le classeur ou se trouve la macro et je le nomme classeurcode
MonDossier =" T: chemin du document "
'je donne le chemin du document ou je veux chercher mes données j'ai vraiment besoin de cette étape car le document sur lequel je vais prendre les données n'est pas forcément le même ça dépend des années ect ...
flag = true
if len(Dir(MonDossier, vbDirectory)) > 0 then
Shell Environ ("WINDIR") & " \explorer.exe " & MonDossier, vbNormalFocus
' petite vérification de routine
end if

Do while flag
' ici je veux essayer de faire une boucle qui permet de stopper le code tant que l'utilisateur n'a pas sélectionné l'autre classeur excel malheureusement c'est cette étape que je n'arrive pas à faire
DoEvents
Loop

Set classeurouvert = ActiveWorkbook
' pour essayer autrement j'ai donc déclarer que le dernier classeur actif qui est normalement le classeur ouvert par l'utilisateur à partir de l'explorateur de dossier. Quand je compile tout mon code cela ne marche pas quand je fais étape par étape avec F8 dans ce contexte ça marche. L'objectif est tout de même que cela se face lors de la compilation complète du code.
classeurcode.worksheets("SYNTHESE").Range("F16").Value = classeurouvert.Worksheets(4). Range("H43").Value
' ici je prend la donnée nécessaire pour remplir ma feuille excel qui se trouve dans le classeurcode
end Sub


Je vous remercie d'avance pour vos éléments de réponse, et votre aide.

Afficher la suite 

Votre réponse

8 réponses

cs_Le Pivert 5138 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 17 mai 2018 Dernière intervention - 16 mai 2018 à 18:37
0
Utile
Bonjour,

Ce qu'il te faut, c'est une boite de dialogue pour sélectionner un fichier.

Regarde cela:

http://www.info-3000.com/vbvba/fichiers/#BoiteDialogueIntegree

Il y a aussi plein de choses interessantes!
cs_Le Pivert 5138 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 17 mai 2018 Dernière intervention - 17 mai 2018 à 11:40
Cette boite de dialogue te renvoi le chemin d'un fichier et non d'un dossier:

Sub traitement()
Dim dossier
Dim classeuractu As Workbook
Set classeuractu = ThisWorkbook

Application.FileDialog(msoFileDialogFilePicker).InitialFileName = " T: chemin de mon dossier "
 If Application.FileDialog(msoFileDialogFilePicker).Show = True Then
       MsgBox Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
    End If
'classeuractu.Worksheets("synthese").Range("F16").Value = dossier.Worksheets(4).Range("h43").Value
End Sub
Dans ce cas il faut que je reste sur ma première version de code mais que je trouve un moyen pour faire le lien entre les deux documents ... du coup il faut que je trouve la bonne boite de dialogue pour sélectionner un fichier
cs_Le Pivert 5138 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 17 mai 2018 Dernière intervention - 17 mai 2018 à 15:04
Voir ci-dessous
cs_Le Pivert 5138 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 17 mai 2018 Dernière intervention > cs_Le Pivert 5138 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 17 mai 2018 Dernière intervention - 17 mai 2018 à 15:07
Mais c'est cette boite de dialogue qu'il faut employer pour ouvrir un classeur. Regarde ce que fait cette macro:

Sub traitement()
Dim fichier
Dim classeuractu As Workbook
Set classeuractu = ThisWorkbook

Application.FileDialog(msoFileDialogFilePicker).InitialFileName = " T: chemin de mon dossier "
 If Application.FileDialog(msoFileDialogFilePicker).Show = True Then
       fichier = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
    End If
Application.Workbooks.Open fichier
End Sub


et pour travailler sur 2 classeurs voir ceci:

https://vb.developpez.com/faqvba/?page=3.2#MultiBook

@+ Le Pivert
Nickel !
J'ai fait du bidouillage et j'ai réussi à obtenir le résultat que je veux.
Merci pour ton aide précieuse :)
Commenter la réponse de cs_Le Pivert