Copie de données d'un fichier à un autre

Tiger2020

XLDnaute Junior
Bonjour,
j'ai un soucis pour copier des données d'un fichier vers un autre...

Je voudrais copier les données de la feuille "Données" du classeur "PSM_SH_FR vers la feuille "data" du classeur "PSM_SH_EN" automatiquement à l'ouverture de "PSM_SH_EN"
J'ai essayé un peu avec ceci (Macro "FR_EN") mais étant un gros nul en visual basic je n'y arrive pas...
Si quelqu'un peut m'aider ;)
Je joins mes 2 fichiers...
Merci !!!

Sub FR_EN()
Const NomSrc = "PSM_SHU_FR.xlsm"
Dim ClsSrc As Workbook, FSrc As Worksheet, PlgM As Range, DerLig As Long
On Error Resume Next
Set ClsSrc = Workbooks(NomSrc)
If Err Then Err.Clear: Set ClsSrc = Workbooks.Open(NomSrc)
If Err Then MsgBox "Il ne semble pas exister de classeur """ & NomSrc & """" _
& vbLf & "sur """ & CurDir & """.", vbCritical, "Ouverture " & ThisWorkbook.Name
On Error GoTo 0
Set FSrc = ClsSrc.Worksheets(1)

With Intersect(FSrc.[P2:p50000], FSrc.UsedRange)

Set PlgM = .SpecialCells(xlCellTypeFormulas, 1)
On Error GoTo 0
If Not PlgM Is Nothing Then Intersect(FSrc.[A:O], PlgM.EntireRow).Copy PSM_SHU_EN.[A2]
.ClearContents
End With
Dim NbLgn As Long
NbLgn = PSM_SHU_EN.UsedRange.Rows.Count - 1

End Sub
 

Pièces jointes

  • PSM_SHU_FR.xlsm
    137.4 KB · Affichages: 24
  • PSM_SHU_EN.xlsm
    98.8 KB · Affichages: 26

Dranreb

XLDnaute Barbatruc
Re : Copie de données d'un fichier à un autre

Bonjour.

Vous semblez avoir pris le code de quelque chose qui venait de moi, mais où on ne copiait que le lignes qui portaient un "O" en colonne L, mais pour pouvoir les prendre par un .SpecialCells(xlCellTypeFormulas, 1), il n'y a pas cette instruction qui installe la formule qui met en colonne P des 1 sur celle ci et des #DIV/0! sur les autres, or cette formule est effacée après coup par le .ClearContents, donc ça ne marche qu'une fois.
Si vous voulez copier tout il suffit de faire:
VB:
Intersect(FSrc.[P2:P50000], FSrc.UsedRange).Copy Feuil1.[A2]
Remarque: Feuil1 est le nom de l'objet Worksheet, connu du projet VBA contenant le code, qui représente la feuille Excel "Data" (voir ces noms, aussi appelés CodeName parfois, à tort et/ou à raison, dans la rubrique Microsoft Excel Objets de l'explorateur de projet). Il vaut mieux utliser ces noms, quitte à les changer pour qu'ils ressemble aux noms Excel, plutôt que de demander à Excel de rechercher la feuille dans sa collection WorkSheets, ou pire encore Sheets. Et puis même sans le renommer, Feuil1 c'est quand même plus court que ThisWorkbokk.Worksheets("Data") même si ceci est une expression d'objet Worksheet représentant la même entité (la même feuille Excel).
 

Tiger2020

XLDnaute Junior
Re : Copie de données d'un fichier à un autre

Merci Dranreb,

effectivement c'est toi qui m'avait super aidé il y a quelques semaines...
Par contre je comprends toujours aussi peu vite :(

J'ai juste à copier le code Intersect(FSrc.[P2:p50000], FSrc.UsedRange).Copy Feuil1.[A2]
afin d'avoir une copie complète (sauf la ligne 1). Mais je ne comprends pas ton commentaires à propos du nom de la feuil1...
Si je mets Intersect(FSrc.[P2:p50000], FSrc.UsedRange).Copy PSM_SHU_FR.[A2] ou même Intersect(FSrc.[P2:p50000], FSrc.UsedRange).Copy Feuil1.[A2] ça ne marche pas.

Si tu peux m'expliquer simplement :rolleyes:
 

Dranreb

XLDnaute Barbatruc
Re : Copie de données d'un fichier à un autre

PSM_SHU_FR n'est pas une expression Worksheet, Feuil1 si et donc Feuil1.[A2] devrait marcher comme paramètre Destination d'un Copy. Mettez des espions sur les expressions qui composent l'instruction.
Va falloir intégrer complètement le jargon comme si c'était une seconde langue, sinon vous ne comprendrez jamais rien !
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 508
Messages
2 089 143
Membres
104 047
dernier inscrit
bravetta