Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Liaison entre 2 feuilles à l'aide d'une macro

11 réponses
Avatar
GF
Bonjour à tous,

Je suis face a un petit pb sur excel : J'ai besoin de lier 2 feuilles, que
les colonnes de la premiere feuille soient liées avec celles de la 2eme
(suivi de la mise en page : ajout/suppression de lignes et recopie des
valeurs des cellules). Pour ca j'ai utilisé ce code :

Code:

Private Sub Worksheet_Activate()
Sheets("Tableau détaillé").Range("C4:Q" & Sheets("Tableau
détaillé").[C65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("C4:G4"), Unique:=False
End Sub


Ca marche parfaitement.

Maintenant j'aimerais réaliser exactement la meme chose mais sans recopier
la valeur des cellules, cad que les 2 feuilles soient liées par la mise en
page (ajout suppression de lignes) mais je ne veux pas de mise a jour de la
valeur des cellules - j'aimerais qu'elles soient indépendantes pour leur
contenu. QQn a une idée du code qui résoudrait mon probleme ?

J'espere que j'ai été assez clair,

Un grand merci d'avance pour vos réponses

10 réponses

1 2
Avatar
Philippe.R
Bonjour,
Tu peux obtenir ça en créant un groupe de travail ; il suffit de cliquer sur
le deux onglets que tu veux lier en maintenant la touche Ctrl enfoncée
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"GF" a écrit dans le message de
news:
Bonjour à tous,

Je suis face a un petit pb sur excel : J'ai besoin de lier 2 feuilles, que
les colonnes de la premiere feuille soient liées avec celles de la 2eme
(suivi de la mise en page : ajout/suppression de lignes et recopie des
valeurs des cellules). Pour ca j'ai utilisé ce code :

Code:

Private Sub Worksheet_Activate()
Sheets("Tableau détaillé").Range("C4:Q" & Sheets("Tableau
détaillé").[C65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("C4:G4"), Unique:úlse
End Sub


Ca marche parfaitement.

Maintenant j'aimerais réaliser exactement la meme chose mais sans recopier
la valeur des cellules, cad que les 2 feuilles soient liées par la mise en
page (ajout suppression de lignes) mais je ne veux pas de mise a jour de
la
valeur des cellules - j'aimerais qu'elles soient indépendantes pour leur
contenu. QQn a une idée du code qui résoudrait mon probleme ?

J'espere que j'ai été assez clair,

Un grand merci d'avance pour vos réponses


Avatar
GF
Merci pour ta réponse aussi rapide.

Cette astuce ne fonctionne pas avec mon classeur puisque les 2 tableaux sont
totalement différents. Et la cellule K5 de la feuille 1 par exemple n'a rien
a voir avec celle de la feuille 2.
Les mises en page sont totalement différentes
Avatar
FdeCourt
Salut,

Copie du format de la feuille Tableau détaillé vers la feuille Feuil2

Sub CopieFormat()
With Sheets("Tableau détaillé")
.Range(.Cells(4, 3), .Cells(.Cells(65536, 3).End(xlUp).Row,
17)).Copy
End With
With Sheets("Feuil2")
.Range(.Cells(4, 3), .Cells(Sheets("Tableau
détaillé").Cells(65536, 3).End(xlUp).Row, 17)).PasteSpecial
Paste:=xlPasteFormats
End With
End Sub


Cordialement,

F.
Avatar
GF
Ah je crois que ca serait pas mal ca !

Merci de ta réponse, par contre je suis un peu nul en macro, le code est a
rentrer sur quelle feuille Tableau détaillé ou feuille 2 ?
Avatar
GF
D'ailleurs je ne comprends pas tout ton code : a quel endroit je dois
renseigner les plages de copie (source et destination) et sous quel format ?
A1:A5 pour les colonnes de 1 a 5 par exemple

Sinon cette ligne : With Sheets("Feuil2").Range(.Cells(4, 3),
.Cells(Sheets("Tableau détaillé ").Cells(65536, 3).End(xlUp).Row,
17)).PasteSpecial Paste:=xlPasteFormats

apparait en rouge dans VBA et Paste est surligné

Merci d'avance pour votre retour ! J'ai du mal a suivre :)
Avatar
FdeCourt
Salut,

Il faut faire attention, les lignes peuvent avoir été coupées (il doit
y avoir 6 lignes sans le Sub & End Sub).

Je ne l'ai pas mise comme macro evenmentielle, donc tu peux la mettre
dans n'importe quel module.
Si tu veux la mettre dans une macro evenementiel, cela depend de quand
tu veux l'activer, mais comme tu copie un format vers la Feuil2, dans
le code de la feuil2 je mettrais :

Private Sub Worksheet_Activate()
Dim selection_init As Range
With Sheets("Tableau détaillé")
.Range(.Cells(4, 3), .Cells( _
.Cells(65536, 3).End(xlUp).Row, 17)) _
.Copy
End With
With ActiveSheet
Set selection_init _
= Selection
.Range(.Cells(4, 3), _
.Cells(Sheets("Tableau détaillé") _
.Cells(65536, 3).End(xlUp).Row, 17)) _
.PasteSpecial Paste:=xlPasteFormats
selection_init.Select
End With
Application.CutCopyMode = False
End Sub

Cordialement,

F.

On 4 avr, 16:59, GF wrote:
D'ailleurs je ne comprends pas tout ton code : a quel endroit je dois
renseigner les plages de copie (source et destination) et sous quel format ?
A1:A5 pour les colonnes de 1 a 5 par exemple

Sinon cette ligne : With Sheets("Feuil2").Range(.Cells(4, 3),
.Cells(Sheets("Tableau détaillé ").Cells(65536, 3).End(xlUp).Row,
17)).PasteSpecial Paste:=xlPasteFormats

apparait en rouge dans VBA et Paste est surligné

Merci d'avance pour votre retour ! J'ai du mal a suivre :)


Avatar
GF
Dans une macro évenementielle c'est parfait. C'est ce que j'ai fait.

Merci !

par contre j'ai tjrs le meme soucis : ou renseigner mes plages sources et de
destination de copie de cellules ?

PS : le 2eme code est rouge aussi grrrr, j'essaie qq mises en page différentes
Avatar
FdeCourt
C'est parceque les lignes siont trop longue et sont coupé lorsque le
message est posté, il faut que tu les recomposes correctement.

Pour adapter tes plages, il faut modifier
.Range(.Cells(4, 3), .Cells(.Cells(65536, 3).End(xlUp).Row, 17)).

et

.Range(.Cells(4, 3), .Cells(Sheets("Tableau détaillé").Cells(65536,
3).End(xlUp).Row, 17))

Attention, la plage de destination doit être de la même taille que la
plage source.

Cordialement,

F.
Avatar
GF
Encore une fois merci pour ta réponse aussi rapide.

Ok pour le formatage du code, je continue de chercher.

Sinon je n'ai pas compris quel est le format de cellule employé dans ce code.
4,3 correspond a quelle cellule exactement ?
Row, 17 = Ligne 17 ?

Si tu peux me renseigner sur ce point ?

Un grand merci d'avance
Avatar
FdeCourt
Oups pardon...

cells(x, y)
x correspond à la ligne,
Y correspond à la colonne
un range est la combinaison de la cellule en haut à gauche et en bas à
droite.
donc range(cells(2, 3), cells(5, 6) correspond à range("C2:F5")
Cela permet d'éviter d'utiliser des lettres pour les colonnes et donc
rendre facilement une plage extensible par macro.

Cordialement,

F.


On 4 avr, 18:29, GF wrote:
Encore une fois merci pour ta réponse aussi rapide.

Ok pour le formatage du code, je continue de chercher.

Sinon je n'ai pas compris quel est le format de cellule employé dans ce code.
4,3 correspond a quelle cellule exactement ?
Row, 17 = Ligne 17 ?

Si tu peux me renseigner sur ce point ?

Un grand merci d'avance


1 2