Extraire données et les restituer

Le
sunburn
Bonjour,
j'ai développé un petit tableur.
J'ai fais pas mal de modif sur ma V2, sans penser à ce que devenait ma V1.
Bref, ça va être "pourri" si je veux faire un "patch".
Donc, je me suis dis : "Fais une macro qui extrait les données de la V1,
pour les importer sur ma V2".
Mais pouvez-vous m'aider, j'ai un peu de mal.

Dans mon optique, il faudrait demander à l'utilisateur de choisir le fichier
de la V1. Idéalement, le dossier de recherche pourrait être le dossier mère
de celui ou est ma V2 :
exemple : ma V2 est dans C:DOCMOI2009, donc mon dossier de recherche à
afficher est C:DOCMOI (sachant que le chemin bouge tout le temps, il faut
gérer avec "thisworkbook.path" je pense, de mémoire).

Donc, comment faire pour faire que dans ma V2 (classeur actif), il récupère
des infos avec parcimonie :
V2 onglet "ALPHA" cellule F5 = V1 onglet "BETA" cellule H6
V2 onglet "CHARLIE" cellule H9 = V1 onglet "DELTA" cellule L8
V2 onglet "ECHO" cellule K7 = V1 onglet "FOX-TROT" cellule A5
etc..

et cela, si possible, sans ouvrir V1.

Je vous remercie de votre aide.
YANN
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LSteph
Le #19710361
Bonjour,

bonne méthode amha écraser la v1 avec la v2

--
lSteph


sunburn a écrit :
Bonjour,
j'ai développé un petit tableur.
J'ai fais pas mal de modif sur ma V2, sans penser à ce que devenait ma V1.
Bref, ça va être "pourri" si je veux faire un "patch"....
Donc, je me suis dis : "Fais une macro qui extrait les données de la V1,
pour les importer sur ma V2".
Mais pouvez-vous m'aider, j'ai un peu de mal.

Dans mon optique, il faudrait demander à l'utilisateur de choisir le fichier
de la V1. Idéalement, le dossier de recherche pourrait être le dossier mère
de celui ou est ma V2 :
exemple : ma V2 est dans C:DOCMOI2009, donc mon dossier de recherche à
afficher est C:DOCMOI (sachant que le chemin bouge tout le temps, il faut
gérer avec "thisworkbook.path" je pense, de mémoire).

Donc, comment faire pour faire que dans ma V2 (classeur actif), il récupère
des infos avec parcimonie :
V2 onglet "ALPHA" cellule F5 = V1 onglet "BETA" cellule H6
V2 onglet "CHARLIE" cellule H9 = V1 onglet "DELTA" cellule L8
V2 onglet "ECHO" cellule K7 = V1 onglet "FOX-TROT" cellule A5
etc.....

et cela, si possible, sans ouvrir V1.

Je vous remercie de votre aide.
YANN


FFO
Le #19712381
Salut à toi

Mets ce code dans le Thisworkbook de ton classeur V2 :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target
As Range, Cancel As Boolean)
Onglet = InputBox("saisissez le nom de l'Onglet source", "Onglet source")
Cellule = Range(InputBox("saisissez la cellule de l'Onglet source", "Cellule
source")).Address(ReferenceStyle:=xlR1C1)
VALEUR = ExecuteExcel4Macro("'" & ThisWorkbook.Path & "[V1.xls]" & Onglet &
"'!" & Cellule)
ActiveCell = VALEUR
End Sub

Actualises :

[V1.xls]

du nom de ton classeur V1

Le classeur V1 fermé double cliques dans n'importe quelle cellule de
n'importe quelle onglet de ton classeur V2
Une boîte de dialogue demandera le nom de l'onglet source du classeur V1 et
une autre boîte de dialogue demandera la référence de la cellule source du
classeur V1

Ainsi identifié la valeur de la cellule du classeur V1 sera rapportée dans
la cellule active du classeur V2

Celà devrait te convenir

Dis moi !!!!!
sunburn
Le #19719741
Salut FFO,
en fait, ce que je cherche, c'est a faire une macro avec une seule manip
pour l'utilisateur : il doit uniquement sélectionner le fichier qu'il
considère comme V1.
ensuite, les copies d'informations de la V1 vers la V2, je dois les inscrire
dans la macro. Comme ça, l'utilisateur n'est pas perturbé par des messages ou
autres.
comment puis-je faire ?
Merci
YANN

"FFO" a écrit :

Salut à toi

Mets ce code dans le Thisworkbook de ton classeur V2 :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target
As Range, Cancel As Boolean)
Onglet = InputBox("saisissez le nom de l'Onglet source", "Onglet source")
Cellule = Range(InputBox("saisissez la cellule de l'Onglet source", "Cellule
source")).Address(ReferenceStyle:=xlR1C1)
VALEUR = ExecuteExcel4Macro("'" & ThisWorkbook.Path & "[V1.xls]" & Onglet &
"'!" & Cellule)
ActiveCell = VALEUR
End Sub

Actualises :

[V1.xls]

du nom de ton classeur V1

Le classeur V1 fermé double cliques dans n'importe quelle cellule de
n'importe quelle onglet de ton classeur V2
Une boîte de dialogue demandera le nom de l'onglet source du classeur V1 et
une autre boîte de dialogue demandera la référence de la cellule source du
classeur V1

Ainsi identifié la valeur de la cellule du classeur V1 sera rapportée dans
la cellule active du classeur V2

Celà devrait te convenir

Dis moi !!!!!



MichDenis
Le #19722831
Bonjour Sunburn,

Il n'y a pas de solution magique à ta problématique.
Chaque cellule se retrouve dans une feuille particulière ...

Voici une fonction publiée par John Walkenbach
Récupère la valeur d'une cellule dans un classeur fermé.

'-------------------------------------------
Sub Test()
Dim Chemin As String, Fichier As String
Dim Feuille As String, Adr As String

Chemin = "c:UsersDMDocuments"
Fichier = "Classeur10.xls"
feuille = "Feuil1"
Adr = "A1"

Worksheets("NomDeLaFeuille").Range("A1") = GetValue(Chemin, Fichier, feuille, Adr)

'Si tu préfères tu peux utiliser cette syntaxe :
'Tu inscris en dur, le nom de la feuille et l'adresse de la cellule à récupérer.
Worksheets("NomDeLaFeuille").Range("A2") = GetValue(Chemin, Fichier, "Feuil1", "A1")
'Et tu répètes cette ligne de code pour chacune des cellules à récupérer
End Sub

'-------------------------------------------

Public Function GetValue(ByVal path, _
ByVal file, ByVal sheet, ByVal ref) As Variant

Dim Arg As String
If Right(path, 1) <> "" Then path = path & ""
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If

Arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'--------------------------------------





"sunburn" discussion :
Bonjour,
j'ai développé un petit tableur.
J'ai fais pas mal de modif sur ma V2, sans penser à ce que devenait ma V1.
Bref, ça va être "pourri" si je veux faire un "patch"....
Donc, je me suis dis : "Fais une macro qui extrait les données de la V1,
pour les importer sur ma V2".
Mais pouvez-vous m'aider, j'ai un peu de mal.

Dans mon optique, il faudrait demander à l'utilisateur de choisir le fichier
de la V1. Idéalement, le dossier de recherche pourrait être le dossier mère
de celui ou est ma V2 :
exemple : ma V2 est dans C:DOCMOI2009, donc mon dossier de recherche à
afficher est C:DOCMOI (sachant que le chemin bouge tout le temps, il faut
gérer avec "thisworkbook.path" je pense, de mémoire).

Donc, comment faire pour faire que dans ma V2 (classeur actif), il récupère
des infos avec parcimonie :
V2 onglet "ALPHA" cellule F5 = V1 onglet "BETA" cellule H6
V2 onglet "CHARLIE" cellule H9 = V1 onglet "DELTA" cellule L8
V2 onglet "ECHO" cellule K7 = V1 onglet "FOX-TROT" cellule A5
etc.....

et cela, si possible, sans ouvrir V1.

Je vous remercie de votre aide.
YANN
Publicité
Poster une réponse
Anonyme