Macro copier coller avec liaison
Bonjour à tous,
Sheets("Feuil1").Select
Range("C8").Select
Selection.Copy
Sheets("Feuil1 - Tableau 1").Select
Range("F161").Select
ActiveSheet.Paste Link:=True
Sheets("Feuil1").Select
Range("D8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil1 - Tableau 1").Select
Range("F162").Select
ActiveSheet.Paste Link:=True
est il possible d'ecrire cette macro sans répéter la commande copier pour C8,D8.......jusqu'a EU8
et de coller avec liaison a la suite dans dans la colonne F sur la feuil1-Tableau1
Faire une sorte de boucle jusqu'a EU8
Merci de votre aide
Greg
Bonjour,
Si j'ai bien compris, tu prends la ligne de C8 à EU8 et tu la copie dans la colonne F à partir de la ligne 161 de la 2ème feuille ?
Si ce qui t'ennuis est le fait de passer de ligne à colonne pour faire la copie en une seule fois, il faut utiliser un collage en "transposant" les données.
Application.ScreenUpdating = False
Sheets("Feuil1").Select
Range("C8:EU8").Select
Selection.Copy
Sheets("Feuil1 - Tableau 1").Select
Range("F161").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
Sheets("Feuil1").Select
Application.ScreenUpdating = True
Cordialement.
Malheureusement ca ne fonctionne pas d'apres ce que je sais on ne peut pas transposer et coller avec liaison!!!
c'est pour ca que je n'ai pas utilisé transposer!!!
je crois qu"il faut faire une macro qui copie les cellules une a une avec collage special-->coller avec liaison
mzerci encore pour t'on aide
Bonjour à tous,
Une solution sans copier-coller :
Sub ErsatzCopieColleLiaison()
Dim CeWkb As String, AdressIni$, CelAdress$
Dim FeuilSource As Worksheet, FeuilDest As Worksheet
Dim col As Long
Dim temp
CeWkb = ThisWorkbook.Name
Set FeuilSource = Sheets("Feuil1")
Set FeuilDest = Sheets("Feuil1 - Tableau 1")
ReDim temp(1 To 151 - 3 + 1, 1 To 1)
Application.ScreenUpdating = False
With FeuilDest
For col = 3 To 151 'colonne C à EU
AdressIni = FeuilSource.Cells(8, col).Address(, , , True) 'extraction de l'addresse complète de la celllule
'traitement de l'addresse pour n'avoir que le nom de la feuille et l'addresse cellule
temp(col - 2, 1) = "=" & Replace(Replace(Replace(AdressIni, CeWkb, ""), "[", ""), "]", "")
Next col
.Range("F161:F" & col - 1 + 161 - 3).Formula = temp
End With
End Sub
Hum pas vu l'histoire de la liaison, au temps pour moi, essais ceci, autre solution plus simple avec utilisation de formule matricielle:
Sheets("Feuil1 - Tableau 1").Select
Range("F161:F309").Select
Selection.FormulaArray = "=TRANSPOSE(Feuil1!R[-153]C[-3]:R[-153]C[145])"
Normalement, dans ta plage F161:F309 de ta 2ème page, tu auras bien le contenu de la cellule correspondante de ta plage C8:EU8 de la 1ère feuille.
Par contre tu auras les valeurs, c'est à dire que si en D8 tu as une formule qui te retourne X, et bien en F162 tu auras X directement mais la formule n'apparait pas.
Cordialement.