Copier cellules sur un autre classeur

tiesto

XLDnaute Nouveau
Salut!

je suis un peu en galère pour trouver la bonne macro pour gerer mon copier coller de cellules.

J'aimerai copier des cellules (C9:C19) d'un fichier "plan1.xls" feuille "nombre" et des cellules d'un fichier "plan2.xls" (F9:F19) feuille "volume", dans un autre classeur "MAJ.xls" feuille "ges" (B2:B12).

J'ai tenté des macro avec :

Sub test()
GetValuesFromAClosedWorkbook "C:Documents", "plan1.xls", "Feuil1", "C9:C19"
End Sub

Sub GetValuesFromAClosedWorkbook(fPath As String, fName As String, _ sName, cellRange As String)

With Sheets("ges").Range("B2:B12")
.Formula "='" & fPath & "\[" & fName & "]" & sName & "'!" & _ cellRange
.Value = .Value
End With
End Sub

Mais ca ne marche pas....il met #Valeur! dans les cases B2 a B12 au lieu de mettre les valeurs numeriques de C9 a C19 du classeur plan1.
Merci pour votre aide
++
 

Staple1600

XLDnaute Barbatruc
Re : Copier cellules sur un autre classeur

Bonsoir



Regardes ici
Copy a range from closed workbook (Local, Network and on the internet)

Les explications sont là (mais en anglais)


Autrement la syntaxe de ton code n'est pas le même que:
Code:
Sub GetValuesFromAClosedWorkbook(fPath As String, fName As String, _ sName, cellRange As String)

With ActiveSheet.Range(cellRange)
[B].FormulaArray[/B] = "='" & fPath & "\[" & fName & "]" & sName & "'!" & _ cellRange
.Value = .Value
End With
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Copier cellules sur un autre classeur

Re



En reprenant l'exemple de Ron De Bruin
(test OK)

Code:
Sub GetRange(FilePath As String, FileName As String, SheetName As String, _
             SourceRange As String, DestRange As Range)
 'Go to the destination range
Application.Goto DestRange
 'Resize the DestRange to the same size as the SourceRange
Set DestRange = DestRange.Resize(Range(SourceRange).Rows.Count, _
                                     Range(SourceRange).Columns.Count)
'Add formula links to the closed file
With DestRange
    .FormulaArray = "='" & FilePath & "/[" & FileName & "]" & SheetName _
                        & "'!" & SourceRange
    .Value = .Value
End With
End Sub

En exécutant la macro ci-dessous
Les valeurs de plage A1:A10 du classeur c:\temp\test1.xls
sont recopiés dans le classeur actif
(qui contient les deux macros de ce message)
Code:
Sub File_In_Local_Folder()
    Application.ScreenUpdating = False
    On Error Resume Next
    'Call the macro GetRange
    GetRange "C:\Temp", "test1.xls", "Feuil1", "A1:A10", _
             Sheets("Feuil1").Range("A1")
    On Error GoTo 0
    Application.ScreenUpdating = True
End Sub


PS: Par précaution, mieux vaut sans doute, utliser la version originale de Ron
(avec le timer)
 
Dernière édition:

Discussions similaires