Utilisation d'un fichier excel fermé dans un fichier excel ouver

Résolu/Fermé
Hugues - 3 avril 2015 à 11:33
 Hugues - 17 avril 2015 à 14:12
Bonjour,





Je souhaiterais transférer une plage de donnée d'un fichier excel fermé vers un fichier excel ouvert.
Le problème c'est aussi que le nom du fichier excel appelé dépends d'un choix dans le premier fichier,

Est-ce possible ?

Merci à tous !
A voir également:

5 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 avril 2015 à 12:12
Bonjour,

Le problème c'est aussi que le nom du fichier excel appelé dépends d'un choix dans le premier fichier,

Le premier fichier est celui qui est ouvert ???
0
En effet,

L'utilisateur entre un nom dans le fichier ouvert, le but est de récupérer les données d'un fichier fermé du même nom que l'entrée dans le fichier ouvert...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Hugues
3 avril 2015 à 14:09
Re,

un site a visiter:
https://silkyroad.developpez.com/VBA/ClasseursFermes/

Connaissez vous la programmation VBA excel ?
0
Oui j'ai déjà eu 20 h d'enseignement dessus, cependant nous n'avons jamais parlé de communications entre les fichiers, je vais voir votre tutoriel
0
Ce que je souhaite faire semble correspondre à cette macro car elle est utilisée sur un autre fichier que je n'ai pas crée mais que j'utilise.

En revanche je n'arrive pas à utiliser cette macro sur mon tableur... Quelles sont les modifications à apporter (chemin du fichier...) et où doit-je les faire ?

Sub recupdonnees()



1-Application.ScreenUpdating = False
2-Application.DisplayAlerts = False

3-'Récupération de données

4-Nom_fichier = ActiveWorkbook.Name
5- Windows(Nom_fichier).Activate
6- chemin = ActiveWorkbook.Path
7- 'Sheets("Carac. capteur").Visible = True
8- 'Sheets("résultats h-h").Visible = True

9- Sheets("Carac. capteur").Select

10- ZoneClimatique = Range("E7").Value

11- 'Récupérer les données climatiques
12-Workbooks.Open (chemin & "\Météo 2012\" & ZoneClimatique)
13-recup = ActiveWorkbook.Name

14-Range("K3:K8762,O3:O8762,P3:P8762,M3:M8762,N3:N8762,R3:R8762,S3:S8762").Select
15- Selection.Copy
16- Workbooks(Nom_fichier).Activate

17- Sheets("résultats h-h").Select
18- Range("K3").Select
19- Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

20- Workbooks(recup).Close savechanges:=False
21-Workbooks(Nom_fichier).Activate

22- Sheets("Carac. capteur").Select
23- Application.ScreenUpdating = False







'Fin récupération donnée
End Sub
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
7 avril 2015 à 14:50
Bonjour,

ici:
6- chemin = ActiveWorkbook.Path
en mettre le chemin reel sur disque: "C:\monrepertoire\"

ou
en remplacent chemin par le chemin reel sur disque
12-Workbooks.Open (chemin & "\Météo 2012\" & ZoneClimatique)
0
Après le chemin remplacé et la plage de donnée copiée, où doit-je écrire pour la copier sur mon fichier ouvert ?

Je crois que mes connaissances en vba sont très juste pour mon problème ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
7 avril 2015 à 17:28
Re,

pouvez-vous mettres vos fichiers (celui qui doit etre ouvert et celui qui doit etre ferme) a dispo (passez par les MP si vous le voulez)

il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
0
Merci bcp pour tes réponses,

Les fichiers sont interne à l'entreprise j'ai donc fais des fichiers factices qui correspondent au problème;
Le fichier de base (1) :
http://cjoint.com/?EDoqVLEULzL

L'utilisateur choisit sa zone climatique ici H1a ou H2b

Ensuite je souhaiterais récupérer les données de ces fichiers (2) (données de taille identiques A1:T8764) :

http://cjoint.com/?EDormOmOfjI

http://cjoint.com/?EDorngI76LO

En fonction de l'entrée de l'utilisateur dans le fichier de base (1) , on récupère les donnée du fichiers (2) qui comporte le nom entré par l'utilisateur.
On copie ensuite les données dans la feuille nommée "Calcul" sur les cellules A5:T8769.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Hugues
14 avril 2015 à 17:25
Bonjour,
Je recupere vos fichier et vous tiens au courant

A+
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
16 avril 2015 à 08:55
Bonjour,

un exemple en ouvrant le fichier selectionne: https://www.cjoint.com/c/EDqjiI3tRem

pourquoi voulez-vous que ce soit fichier ferme ?????
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
16 avril 2015 à 10:10
Re,

un exemple fichier ferme: https://www.cjoint.com/c/EDqkw7OBk2K

pensez a changez le chemin sur le disque pour le fichier
0
Cela fonctionne !
Merci beaucoup pour ton aide et ton temps passé !
Voici donc le code qui a fonctionné pour moi :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B2")) Is Nothing And Target.Count = 1 And Target <> Empty Then
        Application.ScreenUpdating = False
        Classeur = Target
        Workbooks.Open ("Chemin d'accès\" & Classeur & ".xls")
        TInfos = Worksheets(Classeur).Range("A1:T8764")
        ThisWorkbook.Worksheets("Calculs").Range("A5:T8769") = TInfos
        Workbooks(Classeur & ".xls").Close
        Worksheets("Calculs").Activate
    End If
    Application.ScreenUpdating = True
End Sub
0