Je vous expose mon problème. j'ai créer un fichier X. Dans ce fichier j'ai :
Colonne A : Date de début (exemple A2 : 10/02/2011, pareil A3, A4...)
Colonne B : Date de fin (exemple B2 : 15/02/2011, pareil pour B3, B4...)
Colonne C: total (en fonction de l'exemple : 6 jours)
j'ai également dans la cellule D1 : nom du fichier source
Jusque la tout vas bien.
Maintenant les données que j'ai rentré en colonnes A et B provienne d'un autre fichier que je nommerai fichier Y. Je souhaiterais faire ceci : lorsque je tape dans D1 le nom de mon fichier source (donc ici Y), qu'il soit copier automatiquement dans les colonne A et B du fichier X les données des colonnes F et G du fichier Y.
petit point en plus le fichier source de données peut changer, c'est à dire que j'ai plusieurs fichiers sources, et en fonction du nom du fichier indiqué en D1, les copié/coller sont différent. Si je tape en D1 le nom du fichier H, je veux qu'il aille chercher les données du fichier H (pareil colonnes F et G du fichier H à coller dans les colonnes A et B du fichier X).
Possibilités :
j'ai pensé faire une liaison entre les deux fichiers mais comme le fichier source change, je ne pourrais pas mettre ma condition du nom du fichier en D1. j'ai quelque notions de macro (je sais faire un enregistrement par exemple) mais je ne pense pas que ca va nous aider. Je pense que la seul solution est VBA (auquel je n'ai aucune notion :s )
Voila j'espère avoir été clair. je ne sais pas si c'est réalisable.
Re : Transfert de données d'un classeur à un autre en fonction d'une celulle
Salut,
Dans ton cas , l'enregistreur de macro va faire les 3/4 du boulot:
Pour ouvrir le fichier exemple.xls voilà ce qu'il nous dit:
Code:
Sub Macro1()
' Macro1 Macro
' Macro enregistrée le 14/08/2012 par GP2593
'
Workbooks.Open Filename:="C:\Mes Documents\exemple.xls"
End Sub
ensuite on enregistre le copier coller du fichier exemple vers Classeurjulie
Code:
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 14/08/2012 par GP2593
'
'
Windows("exemple.xls").Activate
Range("F6:G34").Select
Selection.Copy
Windows("ClasseurJUlie.xls").Activate
Range("A1").Select
ActiveSheet.Paste
End Sub
Pour répondre à ta demande voilà un exemple de mise en vba avec des variables
On remarque que beaucoup d'instrcutions VBA sont assez intuitive si on parle un anglais scolaire.
Dans même module , on écrit en "dur"
'Les variables permettent d'associer un nom à une valeur ou un objet
Code:
Sub CopierDonnees()
Dim Classeur As Workbook '
Dim NomFichier As String '
NomFichier = Range("D1") ' ou [D1], cells(1,4)
'On stocke directement la valuer de D1 dans nomfichier
'instruction qui s'écrit comme cela en VBA
'en ouvrant le classeur exemple , on en profite
'pour l 'assigner à la variable Classeur
'Set Classeur = Workbooks.Open("C:\Mes Documents\exemple.xls")
'nous on va remplacer "C:\Mes Documents\exemple.xls" par la valeur de D1 qui elle même
' est stockée dans nomficher
Code:
Set Classeur = Workbooks.Open(NomFichier)
Classeur.Sheets(1).[F6:G34].Copy ThisWorkbook.Sheets("Feuil1").[A2]
ici on stocke la référence de l'objet classeur, c'est pour cela qu'on utilise Set
'on peut ensuite fermer le fichier que l'on vient d'ouvrir
Code:
Classeur.Close
End Sub
'ASTUCES
'Pour copier sur la 1 ere cellule vide de la colonne A,
'on se servira [A65536].end(xlup)(2)
'on peut faire de même pour la plage source...avec Range([F6],[A65536].end(xlup))
Il reste à voir ce qu'il se passe si on se trompe en saisissant le nom complet du ficher exemple
VBA va nous envoyer un erreur 1004, donc je te laisse le soin de chercher dans l'aide pour savoir utiliser on error resume next.
Il y a d'autres pistes d'amélioration pour l'ulisateur du programme.
Re : Transfert de données d'un classeur à un autre en fonction d'une celulle
Bonjour,
Merci pour cette réponse.
J'ai pratiquement tout compris dans la première macro on donne le chemin pour ouvrir le fichier exemple.xls donc à ce moment il n'y a pas encore de variable qui fait qu'en changeant la valeur de D1 dans classeurjulie .xls il ouvre le fichier correspondant. Avec la dernière partie de la dernière macro, la on introduit la variable nomfichier qui du coup ouvrira le fichier correspondant a la valeur D1... mais il ne se passe rien lorsque je met en D1 exemple.xls???
J'ai raté quelque chose?
J'ai fait une partie Macro1 et Macro2 avec l'neregistereur de macro dans un classeur nommé classeurjulie.xls pour te montrer qu'il nous donnait les instructions à adapter.
Mais c'est la procédure copiedonnees dans laquelle j'introduis la notion de variable qu'il faudra utiliser.