copier certaines cellules dans une fichier

  • Initiateur de la discussion Initiateur de la discussion eric
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

eric

Guest
Bonjour à tous
J'ai un fichier cible
et je dois reprendre les cellules D1 et F1 dans un autre fichier nommé récap.
A chaque modification de ces cellules D1 et F1 et après sauvegarde du fichier cible
une nouvelle ligne doit apparaitre avec ces valeurs dans le fichier récap

Merci de me dire comment integrer cettte possibilité en VBA.
Bonne soirée
Eric
 
Bonsoir Éric, bonsoir le forum,

Je te propose cette solution mais pour qu'elle fonctionne il faut que les deux fichiers (source et cible = récap.xls) soient dans le même dossier. La macro agit à la fermeture du classeur source. Elle ouvre le classeur 'récap.xls' copie les cellules D1 et F1 dans les colonne respectives A et B sur la première ligne vide existante. Sauve récap.xls puis le ferme. Il te faudra peut-être adapter le nom des onglets des classeurs pour ton cas...

Copie le code ci-dessous et colle-le dans le composant ThisWorkbook de Visual Basic Editor.


Private Sub Workbook_BeforeClose(Cancel As Boolean) 'à la fermeture du classeur
Dim réc As Workbook 'déclare la variable réc
Dim dest As Range 'déclare la variable dest

ThisWorkbook.Save 'sauve ce classeur
Application.Workbooks.Open ('récap.xls') 'ouvre le classeur 'récap.xls'
Set réc = Workbooks('récap.xls') 'définit la variable réc

'définit la variable dest
With réc.Sheets('feuil1') 'prend en compte l'onglet 'Feuil1' du classeur 'récap.xls'
If .Range('A1') = '' Then 'condition : si a1 est vide
Set dest = .Range('A1') 'dest = a1
Else 'sinon
Set dest = .Range('A65536').End(xlUp).Offset(1, 0) 'dest = la prenière cellule vide de la colonne A
End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet 'Feuil1' du classeur 'récap.xls'

'copie les cellule D1 et F1 et les colle dans la cellule de destination dest
ThisWorkbook.Sheets('Feuil1').Range('D1,F1').Copy Destination:=dest

réc.Save 'sauve le classeur 'récap.xls'
réc.Close 'ferme le classeur 'récao.xls'
End Sub
 
Merci Robert pour cette macro et surtout pout l'interesser à mon problème
L'exécution de la macro ne semble pas poser de prblème
Pas de message d'erruer
Hélas le classeur destination reste vide ?
Merci de bien m'aider encore
Eric
 
Merci Robert pour cette macro et surtout pout l'interesser à mon problème
L'exécution de la macro ne semble pas poser de prblème
Pas de message d'erruer
Hélas le classeur destination reste vide ?
Merci de bien m'aider encore
Eric
 
Bonjour Éric, bonjour le forum,

Je ne comprends pas car je l'ai testée avant de te l'envoyer. C'est vrai qu'en relisant ton post j'ai vu que tu demandais que les données D1 et F1 soit mises à jour à chaque changement. La macro actuelle n'agit qu'à la fermeture du classeur d'origine. C'est peut-être cela le problème. Quand tu fermes le classeur, la données inscrite en D1 et copiée dans récap.xls dans la colonne A (première ligne vide rencontrée) et la donnée de F1 et copiée dans la colonne B.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour