Copier coller tableaux avec liens dynamiques

babzsyndrom

XLDnaute Nouveau
Bonjour tout le monde ! :D:D:D

J'espère que vous allez bien, je viens vers vous parce que je bloque sur un petit truc !

En fait, j'ai deux TDC dans un classeur :


- feuille 1.1 Taches à faire.
- feuille 2.1 Planning semaine.

En fait j'aimerais créer une copie sur le même classeur de ces deux feuilles pour gérer la semaine et le planning S+1 tout en gardant les liens dynamiques qu'elles ont entres-elles.


Quelqu'un saurait me dire comment copier ces deux feuilles, tout en gardant une robustesse des liens dynamiques qu'elles ont entres-elles (que la feuille 1.1 n'aillent pas modifier le planning 2.2).


Je vous remercie par avance de l'attention que vous porterez à ma demande. :eek::eek:

Babz


Nota : Pour que ça soit plus clair, je vous laisse le ficher excel en pièces jointes.
 

Pièces jointes

  • Planning_Maintenance_Auto_VIERGE .xlsx
    52.4 KB · Affichages: 46

chris

XLDnaute Barbatruc
Re : Copier coller tableaux avec liens dynamiques

Bonjour

Tu n'as pas 2 TCD mais une liste et un TCD basé sur cette liste.

Je ne saurais trop de conseiller d'enlever les données qui se trouvent lignes 45, 380 et suivantes, de ne garder qu'une ligne et de mettre ta liste sous forme de tableau.

Des mises en forme conditionnelles, des validations et formatage sur 1 000 000 de lignes n'étant pas une bonne solution d'autant que tu envisages 52 feuilles... Le tableau s'allongeant dynamiquement les nouvelles lignes héritent de la 1ère en évitant cela.

De même tes sources de listes de validation gagneraient à être sous forme de tableaux (1 par liste) ce qui automatise la maintenance des listes si tu ajoutes des valeurs.

Si tu dupliques tes onglets, le TCD restera forcément lié à sa source initiale.

Dans la mesure où tu ne gères sans doute pas plus de 4 ou 6 semaines à la fois, je conseillerais de n'avoir qu'une source, plus 4 ou 6 TCD, sur une même feuille ou des feuilles différentes, reflétant chacun une semaine.
 

babzsyndrom

XLDnaute Nouveau
Re : Copier coller tableaux avec liens dynamiques

Bonjour,

Ma première liste fonctionne très bien avec le TDC qui lui ait assigné.
Je voulais juste savoir si c'était possible de copier/coller c'est deux éléments pour créer un nouvel ensemble.

Apparemment non...
 

STephane

XLDnaute Occasionnel
Re : Copier coller tableaux avec liens dynamiques

bonjour

La copie de feuille m'a posé problème.

Voilà une procédure (accompagnée de 2 fonctions)

A noter qu'un objet TABLE est créé au passage.

Code:
Sub CopieFeuilles_et_TCD()
Dim shModele_Tasks As Worksheet
Dim shModele_WeekPage As Worksheet
Dim sNouveauNom_Tasks$
Dim sNouveauNom_WeekPage$
Dim shNouveauNom_Tasks As Worksheet
Dim shNouveauNom_WeekPage As Worksheet
Dim iWeekno As Integer

' Memoriser les feuilles modèles / Memorize template worksheets
Set shModele_Tasks = Worksheets("Taches à réaliser agence APO")
Set shModele_WeekPage = Worksheets("S ..")
'Sheets(Array(shModel_Tasks, shModel_WeekPage)).Copy after:=Sheets.Count

' Mémoriser le numéro de semaine / Get week no.
iWeekno = IsoWeekNum(Now)

' Préparer les nouveaux noms / Prepare new names
sNouveauNom_Tasks = shModele_Tasks.Name & "-" & iWeekno
sNouveauNom_WeekPage = shModele_WeekPage.Name & "-" & iWeekno
sTasks_TableName = "Tableau-S" & iWeekno

' Copier la feuille de calcul modèle hebdomadaire
' Copy template of weekly worksheet for pivot table
'   sauf si elle existe déjà / except if it already exists
shModele_WeekPage.Activate
If WSH_Exists(sNouveauNom_WeekPage) = False Then
    ActiveSheet.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    ActiveSheet.Name = sNouveauNom_WeekPage
    'Set shNouveauNom_WeekPage = ActiveSheet
End If
Set shNouveauNom_WeekPage = Worksheets(sNouveauNom_WeekPage)

' Copier la feuille de calcul modèle pour les tâches
' Copy template worksheet for data
'   sauf si elle existe déjà / except if it already exists
shModele_Tasks.Activate
If WSH_Exists(sNouveauNom_Tasks) = False Then
    ActiveSheet.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    ActiveSheet.Name = sNouveauNom_Tasks
    'Set shNouveauNom_Tasks = ActiveSheet
End If
Set shNouveauNom_Tasks = Worksheets(sNouveauNom_Tasks)

' Créer un objet Tableau à partir des données / Create a table (listobject) from data
With shNouveauNom_Tasks
    If .FilterMode = True Then .ShowAllData
    If .ListObjects.Count = 0 Then
        .ListObjects.Add(xlSrcRange, .Range("$A$1:$S$1").Resize(Application.CountA(.Columns(1))), , xlYes).Name = _
        "Tableau-S" & iWeekno
    Else
'        .ListObjects(1).DataBodyRange.Resize (Application.CountA(.Columns(1)))
        .ListObjects(1).Resize .ListObjects(1).Range.Resize(Application.CountA(.Columns(1)))
        ' rename list object if required
        If .ListObjects(1).Name <> sTasks_TableName Then .ListObjects(1).Name = sTasks_TableName
    End If
    .ListObjects(1).TableStyle = ""
End With

' Changer la source de données de la feuille de calcul hebdomadaire
' Switch data source to new worksheet
With shNouveauNom_WeekPage
    .PivotTables(1).ChangePivotCache _
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=shNouveauNom_Tasks.ListObjects(1).Range, Version:=6)
End With
End Sub
Public Function IsoWeekNum(d1 As Date) As Integer
' Provided by Daniel Maher.
   Dim d2 As Long
   d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
   IsoWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function
Public Function WSH_Exists(SheetName As String) As Boolean
On Error Resume Next
WSH_Exists = Not (Sheets(SheetName) Is Nothing)
End Function
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 864
dernier inscrit
abderrashmaen