Récupérer des données d'un autre classeur au nom variable

Cra49

XLDnaute Nouveau
Bonjour,

Besoin de votre aide, une nouvelle fois ^^
Voila, j'ai un fichier qu'on appellera "Réunion". Je souhaiterai remplir ce fichier avec les données d'un autre classeur, au nom variable. Voila mon code actuel :


Sub Récupération_des_données()
Dim SAP As Workbook, Réunion As Workbook
Set Réunion = ThisWorkbook
Dim Fichier$

Fichier = InputBox("Nom du fichier exporté")
Application.ScreenUpdating = False

'vérifie que le classeur au nom variable (SAP) est ouvert, sinon demande ouverture et sortie macro

On Error Resume Next
Set SAP = Workbooks(Fichier)
If SAP Is Nothing Then MsgBox " Vous devez d'abord exporter les données": Exit Sub

Application.DisplayAlerts = False

Dim cel As Range
Application.ScreenUpdating = 0

With ActiveWorkbook
Set cel = .Sheets(1).Columns("A:A").Find("test")
If Not cel Is Nothing Then
Réunion.Sheets("1").Cells(1, 3) = 1
Réunion.Sheets("1").Cells(2, 3) = 2
Else
MsgBox "Echec ", , "N'existe pas": wbks.Close: Exit Sub
End If
End With
End Sub


Mon problème étant que, même en rentrant mon nom de fichier dans l'inputbox, cela ne semble pas s'enregistrer dans le "Set SAP = Workbooks(Fichier)" et du coup cela m'affiche toujours le message d'erreur "Vous devez d'abord exporter les données"

Petite info supplémentaire, mon fichier d'où je récupère les données, est un fichier "export" qui exporte les données d'un logiciel non excel, sous format excel, donc je n'ai pas particulièrement de chemin d'accès

J'espère être claire :s

Merci d'avance !
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Récupérer des données d'un autre classeur au nom variable

Bonsoir à tous

Cra49
Il faut le nom du fichier et le chemin
Exemple
Code:
Sub a()
Dim Chemin$, fichier$, wBK As Workbook
Chemin = "C:\Temp\"
fichier = InputBox("Nom du fichier?", "Sélection Fichier", "Nomfichier.xls")
Set wBK = Workbooks.Open(Chemin & fichier)
End Sub
NB: Pour tester, tu dois un répertoire C:\Temp sur ton disque dur et saisir le nom d'un fichier existant.
Test OK sur mon PC.

Ou alors tu t'inspires simplement de cette macro d’illustration pour modifier ton code VBA existant ;)
 

Cra49

XLDnaute Nouveau
Re : Récupérer des données d'un autre classeur au nom variable

Le problème est que je n'ai pas de chemin d'accès de ce fichier, il n'est pas enregistré en tant que tel sur le PC, il est juste exporté d'un logiciel.

Est-il possible d'extraire les données de ce fichier, sans avoir à l'enregistrer sur le PC?

En gros, j'ouvre mon logiciel, je clique sur "export au format excel", donc ma feuille excel s'ouvre, et là je lance mon code pour récupérer les données de cette feuille excel (sans enregistrement au préalable)?

Sinon j'ajouterai une étape d'enregistrement pour créer un chemin d'accès à ce fichier, mais ca serait tellement plus simple si j'avais pas à faire ça ^^

Merci de ton aide!
 

Staple1600

XLDnaute Barbatruc
Re : Récupérer des données d'un autre classeur au nom variable

Re


Cra49
En gros, j'ouvre mon logiciel, je clique sur "export au format excel", donc ma feuille excel s'ouvre
Donc cela suppose que ta macro est dans un autre fichier ouvert, non ?
Donc si tu testes ceci MsgBox ActiveWorkBook.Name
Tu obtiens le nom de quel classeur ?
Celui contenant la macro N
ou celui du fichier d'Export ?
 

Cra49

XLDnaute Nouveau
Re : Récupérer des données d'un autre classeur au nom variable

J'obtiens le nom du fichier contenant la macro.

Pour résumé,

1- J'exporte mes données du logiciel dans un fichier excel non enregistré sur le PC
2- Je vais sur mon fichier "Réunion", qui contient la macro
3- Mise en route de la macro pour compléter le fichier Réunion avec certaines données du fichier "export"

Du coup, l'ActiveWorkbook est le fichier Réunion
 

Staple1600

XLDnaute Barbatruc
Re : Récupérer des données d'un autre classeur au nom variable

Re

Cra49
Essaies de voir ce que cela peut donnr avec ta problématique une fois les adaptations réalisées.
VB:
Sub a()
Dim w As Workbook
For Each w In Workbooks
If Not w.Name Like ActiveWorkbook.Name Then
MsgBox w.Name
'ici mettre ton code VBA de traitement
End If
Next
End Sub
 

Cra49

XLDnaute Nouveau
Re : Récupérer des données d'un autre classeur au nom variable

Tout d'abord un grand merci pour ton aide, dans l'idée, ca marche, mais maintenant le problème est que la macro va chercher dans tous mes fichiers excel ouvertes, est il possible de lui restreindre la recherche uniquement à celui ayant les données ?
 

Staple1600

XLDnaute Barbatruc
Re : Récupérer des données d'un autre classeur au nom variable

Re


Cra49

1) Pourquoi tant de fichiers ouverts ?
(Dans l'idéal, tu devrais ouvrir que ton fichier avec la macro puis faire ton export, ainsi il n'y aurait que 2 fichiers ouverts plus éventuellement le classeur de macros personnelles)

2) Y-a-t-il une chaine de caractère facilement identifiable et répétitive dans le nom du fichier d'export?
 

Cra49

XLDnaute Nouveau
Re : Récupérer des données d'un autre classeur au nom variable

Ce fichier n'est pas pour mon utilisation personnelle, mais pour des collègues, et les connaissant, ils ont toujours plein de fichiers ouvert ... j'anticipe ^^

Il semblerait que mon fichier export ait toujours "Classeur" dans son nom
 

Staple1600

XLDnaute Barbatruc
Re : Récupérer des données d'un autre classeur au nom variable

Re

Cra49
Et dans ton fichier d'export , y-a-t- il une valeur dans une cellule qui toujours présente
ou qui contient une chaine de caractère facilement identifiable ?

EDITION
: Peut-être une autre piste à suivre, la date de création du fichier
Voir ce que la macro ci-dessous peut t'inspirer

Code:
Sub abc()
Dim w As Workbook, x
For Each w In Workbooks
If Not w.Name Like ActiveWorkbook.Name Then
x = w.BuiltinDocumentProperties(11)
MsgBox "Nom: " & w.Name & " | Date création | " & x
MsgBox Format(DateValue(Split(x)(0)), "dddd d mmmm yyyy")
MsgBox TimeValue(Split(x)(1))
'ici mettre ton code VBA de traitement
End If
Next
End Sub
 
Dernière édition:

Cra49

XLDnaute Nouveau
Re : Récupérer des données d'un autre classeur au nom variable

Et quel serait le code pour une chaine de caractères toujours identifiables dans le fichier export ? (ma première ligne sera toujours la même normalement, même mieux, le nom de mon onglet sera toujours le même (sur!))
 

Staple1600

XLDnaute Barbatruc
Re : Récupérer des données d'un autre classeur au nom variable

Bonsoir à tous

Cra49
(ma première ligne sera toujours la même normalement, même mieux, le nom de mon onglet sera toujours le même (sur!))
Si dans ton fichier d'export, tu as qu'un seul onglet, avec toujours le même nom, ceci devrait le faire en théorie
Code:
Sub abcd()
Dim w As Workbook, x
For Each w In Workbooks
If Not w.Name Like ActiveWorkbook.Name Then
If w.Worksheets.Count = 1 Then
If w.Sheets(1).Name Like "toto" Then 'adapter le nom de l'onglet
MsgBox w.Name
MsgBox w.BuiltinDocumentProperties(11)
'ici mettre ton code VBA de traitement
End If
End If
End If
Next
End Sub
NB: Test OK sur mon PC où j'avais plusieurs classeurs ouverts mais un seul avec un seule feuille, feuille nommé toto.
Les Msgbox affichent bien les infos concernant ce seul classeur.
 

Cra49

XLDnaute Nouveau
Re : Récupérer des données d'un autre classeur au nom variable

Merciii ! J'ai pas encore essayé mais déjà je comprend le code (c'est déjà énorme ^^), et je pense voir comment l'adapter à mon fichier ! Un grand merci pour ton aide et pour ton temps !
 

Cra49

XLDnaute Nouveau
Re : Récupérer des données d'un autre classeur au nom variable

Bonjour Staple, Bonjour le forum,

Arf je me suis hatée dans ma réponse :s En ré essayant aujourd'hui mon code, cela ne fonctionne plus :( J'avais changé la condition sur le nombre d'onglet, mon fichier en ayant 3, le premier s'appelle toujours "catalogue", le second "feuil2" et le dernier "feuil3". J'avais testé avant de partir en week end et ça semblait marché mais la ça ne marche plus :( Je ne peux pas remplacer le 1 par 3 dans la partie suivante de ton code :

"If w.Worksheets.Count = 1 Then"

?

Coraline
 

Discussions similaires

Réponses
2
Affichages
154

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 501
dernier inscrit
talebafia