Transférer des données d'un fichier à un autre

Roseline

XLDnaute Occasionnel
Bonjour,
J'ai besoin de votre aide. J'ai deux fichiers et j'aimerais qu'en cliquant sur mon bouton "transférer les données" que les informations de mon fichier "test" se transpose dans mon fichier "TEST 2". J'ai fait la vba mais mon problème c'est que mon fichier "test" change de nom à tous les mois et je ne voudrais pas faire le changement manuellement dans la vba à tous les mois. Aussi, je ne comprend pas pourquoi une fois sur deux il prend les données du bon fichier pour les copier dans l'autre et la fois d'après il prend le mauvais fichier pour copier les données.
Merci de votre aide et bonne journée
 

Pièces jointes

  • TEST 2.xlsm
    1.1 MB · Affichages: 28
  • test - 201812.xlsx
    9.3 KB · Affichages: 20

sousou

XLDnaute Barbatruc
bonjour
lorsque tu utilises with il faut des points pour appeler les objets
exemple:
with wb
.Range("A" & Rows.Count).End(xlUp).Select
.x = ActiveCell.Row
.Range("A2:f" & x).Select
.Selection.Copy
ect...
sinon tu utilise le classeur actif
 

Roseline

XLDnaute Occasionnel
bonjour
lorsque tu utilises with il faut des points pour appeler les objets
exemple:
with wb
.Range("A" & Rows.Count).End(xlUp).Select
.x = ActiveCell.Row
.Range("A2:f" & x).Select
.Selection.Copy
ect...
sinon tu utilise le classeur actif
Merci pour la réponse et oui je pense qu'il manque de l'information à ma commande mais c'est ce bout là où je suis un peu mélangé. Pourriez-vous me donner un peu plus de détail svp.
Merci et bonne journée
 

sousou

XLDnaute Barbatruc
bonsoir
essai ce code,
La fonction nomattendu calcule ou calculera le nom du fichier que tu souhaite traité, à voie en fonction de ton contexte
'calcule la dernière ligne
Function dernièrelg(feuille, col) ' ici on calcul la dernière ligne utilisée, col représente la colonne sur laquelle du recherche la dernière ligne
With feuille
Set k = .Cells(.UsedRange.Columns(col).Rows.Count + 1, 1).End(xlUp)
If k <> "" Then dernièrelg = k.Row + 1 Else dernièrelg = 1
End With
End Function

Sub export()
dldest = dernièrelg(Sheets("Données"), 1)
For Each cl In Workbooks
If cl.Name Like nomattendu() Then Set masource = cl
Next
With masource.Sheets(1)
dlsource = dernièrelg(.Parent.Sheets(1), 1)
Set zonecopy = .Range(.Cells(2, 1), .Cells(dlsource, 6))
zonecopy.Copy (ThisWorkbook.Sheets("Données").Cells(dldest, 1))
End With

End Sub
Function nomattendu()
nomattendu = "test -*"
End Function
 

sousou

XLDnaute Barbatruc
re
à quelle ligne l'erreur 424?
fichier joint: lancer la macro export.
ici je considère que le second fichier à été déjà ouvert, et que son nom commence par test -
Si tel n'est pas le cas merci de fournir des infos
 

Pièces jointes

  • TEST 2.xlsm
    1.1 MB · Affichages: 11
Dernière édition:

Roseline

XLDnaute Occasionnel
Rebonjour,
J'ai fait le test avec le fichier que tu as mis en pièce jointe et cela fonctionne....Je vais revoir ma vba je crois que j'ai inversé une commande. Avec ce que tu viens de me fournir je vais être en mesure de l'adapter à mon fichier. Merci encore énormément de ton aide, c'est vraiment apprécié.
Bonne journée
 

Discussions similaires

Réponses
6
Affichages
362