Copier/Coller avec liaisons sur une feuille avec certaines lignes masquées

lelectricien

XLDnaute Junior
Bonjour,

Je voudrais coller une sélection de cellules vers une autre feuille, mais qui cette dernière, contient certaines lignes masquées;

Voici le code qui permet de copier/coller sans liaisons:

Sub test()
Dim c As Range, d As Range
Set d = Sheets("Feuil7").Range("R11") 'Début de la zone de destination
Set c = Sheets("Feuil1").Range("A2") 'A adapter l'adresse de la 1ère cellule de ton tableau à copier
Do While c <> ""
Do While d.EntireRow.Hidden = True
Set d = d(2, 1)
Loop
c.Resize(, 8).Copy Destination:=d 'A adapter si y a pas 8 colonnes à copier
Set d = d(2, 1)
Set c = c(2, 1)
Loop
End Sub


Mon but est de faire la même chose, mais avec liaisons:

activesheet.paste link:=true

Alors j'ai insérer cette ligne dans le code:

Sub test()
Dim c As Range, d As Range
Set d = Sheets("Feuil7").Range("R11") 'Début de la zone de destination
Set c = Sheets("Feuil1").Range("A2") 'A adapter l'adresse de la 1ère cellule de ton tableau à copier
Do While c <> ""
Do While d.EntireRow.Hidden = True
Set d = d(2, 1)
Loop
c.Resize(, 8).Copy Destination:=d 'A adapter si y a pas 8 colonnes à copier
Set d = d(2, 1)
Set c = c(2, 1)
Loop
activesheet.paste link:=true

End Sub


Mais j'ai l'erreur 1004 qui apparait. J'ai pas arrété de chercher, j'ai fais d'autres essais mais je n'y arrive pas.
Pourriez-vous m'aider s'il vous plait?
 

Dranreb

XLDnaute Barbatruc
Re : Copier/Coller avec liaisons sur une feuille avec certaines lignes masquées

Bonjour
Essayez en remplaçant c.Resize(, 8).Copy Destination:=d par :
d.resize(,8).formular1c1="=Feuil1!R" & c.row & "C[-17]"
À tester puisqu'il n'y a pas de classeur joint.
 

lelectricien

XLDnaute Junior
Re : Copier/Coller avec liaisons sur une feuille avec certaines lignes masquées

Bonjour Dranreb,

Désolé de ne pas avoir répondue plus tôt (long week-end..).

Et merci pour ta réponse, j'ai adapté et sa marche! le soucis que je rencontre maintenant c'est que je dois à chaque fois adapter le [C-17] dans ta ligne d.resize(,8).formular1c1="=Feuil1!R" & c.row & "C[-17]" .

Je vais essayer de trouver un moyen plus simple, de sorte que la macro fonctionne sur n'importe quel classeur Excel de sorte que:

*Copier une sélection de cellule (1 seule colonne, exemple: A1 à A5),
*Puis coller ma sélection dans une autre feuille à partir de la cellule que je clique (activecell), et dont cette dernière feuille contient des lignes masquées. Je dois pouvoir coller ma sélection uniquement sur les cellules des lignes visibles.

Pour l’instant j'ai écris le code suivant:

Avant de commencer à cliquer sur la macro, je sélectionne (exemple A1 à A5), puis la macro:

Sub test()
Dim d As Range

Set d = activecell

Do While c <> ""
Do While d.EntireRow.Hidden = True
Set d = d(2, 1)
Loop
d.resize(,1).formular1c1 = selection
Set d = d(2, 1)
Set c = c(2, 1)
Loop
End Sub

Et ca ne va pas...
 

Dranreb

XLDnaute Barbatruc
Re : Copier/Coller avec liaisons sur une feuille avec certaines lignes masquées

Bonsoir.

Ça ne va pas: la ActiveCell c'est probablement la 1ère cellule de Selection, elle ne peut donc pas en même temps être celle de destination. En supposant que la destination soit définie autrement, ce serait plutôt alors :
VB:
Dim Src As Range, Dst As Range
…
For Each Src In Selection.Rows
   Do While Dst.EntireRow.Hidden: Set Dst = Dst(2, 1): Loop
   Dst.Resize(, Src.Columns.Count).FormulaR1C1 = "=" & _
      Src.Columns(1).Address(True, False, xlR1C1, True, Dst)
   Set Dst = Dst(2, 1): Next Src

Remarque: Ce serait faisable avec 2 macros: une pour noter dans un coin la plage source sélectionnée et l'autre pour mettre les formules qui s'y réfèrent dans les lignes non masquées à partir de la cellule active cible.
Ça a l'air de marcher :
VB:
Option Explicit
Dim PlgSrc As Range

Sub NoterSource()
Set PlgSrc = Selection
End Sub

Sub GarnirCible()
Dim LigSrc As Range, Cible As Range
Set Cible = ActiveCell.Resize(, PlgSrc.Columns.Count)
For Each LigSrc In PlgSrc.Rows
   Do While Cible.EntireRow.Hidden: Set Cible = Cible.Offset(1): Loop
   Cible.FormulaR1C1 = "=" & LigSrc.Columns(1).Address(True, False, xlR1C1, True, Cible)
   Set Cible = Cible.Offset(1): Next LigSrc
End Sub
 
Dernière édition:

lelectricien

XLDnaute Junior
Re : Copier/Coller avec liaisons sur une feuille avec certaines lignes masquées

Bonsoir,

La solution a 2 macros fonctionne à merveille, c'est exactement ce que je voulais!
En tout cas je n'aurais jamais trouvé seul ( je n'arrêtais pas d'essayer avec des combinaisons plus simple).

Merci encore!
 

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 592
Membres
111 208
dernier inscrit
estalavista