Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Extraire données et les restituer

4 réponses
Avatar
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:DOC\MOI\2009, donc mon dossier de recherche à
afficher est C:DOC\MOI (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

4 réponses

Avatar
LSteph
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


Avatar
FFO
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 !!!!!
Avatar
sunburn
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 !!!!!



Avatar
MichDenis
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" a écrit dans le message de groupe de
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