Copie de valeur d'un Excel à un autre

Bonjour,

Je suis débutante sur VBA et j'aimerai copier les valeurs de case Excel d'un fichier 1 au case excel d'un fichier 2. Pour cela, je me suis aidée de ce code que j'ai pu trouvé sur internet :

Option Explicit

Private Sub Workbook_Open()

Call ReadDataFromCloseFile

End Sub

Sub ReadDataFromCloseFile()

On Error GoTo ErrHandler

Application.ScreenUpdating = False

Dim src As Workbook

' OPEN THE SOURCE EXCEL WORKBOOK IN "READ ONLY MODE".

Set src = Workbooks.Open("C:\Q-SALES.xlsx", True, True)

' GET THE TOTAL ROWS FROM THE SOURCE WORKBOOK.

Dim iTotalRows As Integer

iTotalRows = src.Worksheets("sheet1").Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row).Rows.Count

' COPY DATA FROM SOURCE (CLOSE WORKGROUP) TO THE DESTINATION WORKBOOK.

Dim iCnt As Integer ' COUNTER.

For iCnt = 1 To iTotalRows

Worksheets("Sheet1").Range("B" & iCnt).Formula =

src.Worksheets("Sheet1").Range("B" & iCnt).Formula

Next iCnt

' CLOSE THE SOURCE FILE.

src.Close False ' FALSE - DON'T SAVE THE SOURCE FILE.

Set src = Nothing

ErrHandler:

Application.EnableEvents = True

Application.ScreenUpdating = True

End Sub

Pour pouvoir l'adapter à mon problème, il faudrait que je comprends chacunes des lignes du code, mais cela m'est compliqué après plusieurs heures à essayer de les comprendre.

Option Explicit

Private Sub Workbook_Open()

Call ReadDataFromCloseFile

End Sub

Sub ReadDataFromCloseFile()

On Error GoTo ErrHandler

Application.ScreenUpdating = False

Dim src As Workbook

' OPEN THE SOURCE EXCEL WORKBOOK IN "READ ONLY MODE".

Set src = Workbooks.Open("C:\Q-SALES.xlsx", True, True)

J'ai compris en gros que cela permettait de faire les manipulations sans devoir avoir le fichier à copier ouvert. Et la dernière ligne permet d'indiquer à Excel le lieu du fichier.

Puis j'ai également compris que : Worksheets("Sheet1").Range("B" & iCnt).Formula =

src.Worksheets("Sheet1").Range("B" & iCnt).Formula permet de remplir la feuille 1 (sheet1) à partir de la colonne B et d'y copier dessus la colonne D de la feuille1 du fichier qu'on a indiqué le chemin plus haut.

Après le reste je n'arrive pas vraiment à comprendre.. Pouvez-vous m'aider s'il vous plait ?

Je vous remercie d'avance.

Bonne journée

Salut

Voici le code documenté

Option Explicit 'oblige la déclaration des variables

Private Sub Workbook_Open()  
 Call ReadDataFromCloseFile 'appelle la macro ReadDataFromCloseFile à l'ouverture du fichier
End Sub

Sub ReadDataFromCloseFile()
On Error GoTo ErrHandler    'gestion des erreurs
Application.ScreenUpdating = False   'fige l'écran excel

Dim src As Workbook    'déclaration de la variable src en classeur

' OPEN THE SOURCE EXCEL WORKBOOK IN "READ ONLY MODE".
Set src = Workbooks.Open("C:\Q-SALES.xlsx", True, True)   'ouverture du fichier source  en lecture seule

' GET THE TOTAL ROWS FROM THE SOURCE WORKBOOK.
Dim iTotalRows As Integer    'déclaration de variable
iTotalRows = src.Worksheets("sheet1").Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row).Rows.Count  'nombre total de ligne de l'onglet 1 en colonne B

' COPY DATA FROM SOURCE (CLOSE WORKGROUP) TO THE DESTINATION WORKBOOK.
Dim iCnt As Integer ' COUNTER.  'déclaration de variable
For iCnt = 1 To iTotalRows   'boucle parcourant les lignes de l'onglet 1 de 1 au nbre de ligne total
    'copie pour chaque ligne la formule en colonne B du classeur source vers le classeur cible
    Worksheets("Sheet1").Range("B" & iCnt).Formula = src.Worksheets("Sheet1").Range("B" & iCnt).Formula   
Next iCnt

' CLOSE THE SOURCE FILE.
src.Close False ' FALSE - DON'T SAVE THE SOURCE FILE.  'ferme le classeur source sans le sauvegarder
Set src = Nothing   'libère la variable 

ErrHandler:   'gestion des erreurs 
Application.EnableEvents = True     'active les événements 
Application.ScreenUpdating = True   'défige l'écran
End Sub

Jers

Rechercher des sujets similaires à "copie valeur"