XL 2010 Faire communiquer 2 tableaux structurés sur 2 feuilles

  • Initiateur de la discussion Initiateur de la discussion Orson83
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Orson83

XLDnaute Impliqué
Bonjour à toutes et tous,
Je vous sollicite, car je ne parviens pas à faire communiquer 2 tableaux structurés. En effet, ils sont placés sur 2 pages différentes et il y a un décalage de 2 lignes dans la feuille "Récap". L'idée, c'est que le tableau "Récap" se complète automatiquement grâce au tableau "Planning".
Je vous remercie par avance pour votre aide👍
Je joins mon fichier exemple dans ce fil.

PS : j'ai aussi un petit problème pour trier la liste déroulante (> Factures > cellule J5)😵

Orson83
 

Pièces jointes

Dernière édition:
Bonjour,
Ton tableau corrigé
Bonjour @gbinforme, le forum,
Merci pour cette proposition👍
Bizarrement, quand j'ajoute 1 ligne dans ma feuille "Planning", le tableau "Récap" ne se complète pas.
Effectivement, en allongeant le tableau du Récap, cela fonctionne, mais dans l'idée, j'aurais souhaité qu'il s'alimente sans avoir à intervenir dessus 🙂
Au cas où, tu aurais une solution pour la liste déroulante en "Factures J5" ? (ordre alphabétique)
Je joins mon nouveau fichier V2.
 

Pièces jointes

Dernière édition:
Bonjour Orson83, gbinforme, sylvanu,

Voyez le fichier joint et cette macro dans le code de la feuille "Récap" :
VB:
Private Sub Worksheet_Activate()
Dim d As Object, tablo, i&, resu(), x$, n&
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
With [TabRecap] 'tableau structuré
    tablo = .Resize(, 4) 'matrice,plus rapide
    For i = 1 To UBound(tablo)
        d(tablo(i, 1)) = tablo(i, 4) 'mémorise le Type paiement
    Next i
    tablo = [TabPL].Resize(, 7) 'matrice,plus rapide
    ReDim resu(1 To UBound(tablo), 1 To 4)
    For i = 1 To UBound(tablo)
        x = tablo(i, 1)
        If x <> "" Then
            n = n + 1
            resu(n, 1) = x
            resu(n, 2) = tablo(i, 5)
            resu(n, 3) = Format(tablo(i, 6), "d/m/yy") & " " & Format(tablo(i, 7), "d/m/yy")
            resu(n, 4) = d(x) 'récupère le Type paiement
        End If
    Next i
    If n Then .Resize(n, 4) = resu 'restitution
    If n < .Rows.Count Then If Not .ListObject.DataBodyRange Is Nothing Then .Rows(n + 1).Resize(.Rows.Count - n).Delete xlUp 'RAZ en desssous
End With
End Sub
Elle se déclenche automatiquement quand on active la feuille.

Bien noter que les Types paiement déjà entrés sont mémorisés et récupérés quelque soit le classement dans la feuille "Planning".

A+
 

Pièces jointes

Bonjour Orson83, gbinforme, sylvanu,

Voyez le fichier joint et cette macro dans le code de la feuille "Récap" :
VB:
Private Sub Worksheet_Activate()
Dim d As Object, tablo, i&, resu(), x$, n&
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
With [TabRecap] 'tableau structuré
    tablo = .Resize(, 4) 'matrice,plus rapide
    For i = 1 To UBound(tablo)
        d(tablo(i, 1)) = tablo(i, 4) 'mémorise le Type paiement
    Next i
    tablo = [TabPL].Resize(, 7) 'matrice,plus rapide
    ReDim resu(1 To UBound(tablo), 1 To 4)
    For i = 1 To UBound(tablo)
        x = tablo(i, 1)
        If x <> "" Then
            n = n + 1
            resu(n, 1) = x
            resu(n, 2) = tablo(i, 5)
            resu(n, 3) = Format(tablo(i, 6), "d/m/yy") & " " & Format(tablo(i, 7), "d/m/yy")
            resu(n, 4) = d(x) 'récupère le Type paiement
        End If
    Next i
    If n Then .Resize(n, 4) = resu 'restitution
    If n < .Rows.Count Then If Not .ListObject.DataBodyRange Is Nothing Then .Rows(n + 1).Resize(.Rows.Count - n).Delete xlUp 'RAZ en desssous
End With
End Sub
Elle se déclenche automatiquement quand on active la feuille.

Bien noter que les Types paiement déjà entrés sont mémorisés et récupérés quelque soit le classement dans la feuille "Planning".

A+
Bonsoir @job75, le fil,
Merci pour cette proposition, je regarderai lundi dans la journée.
Bon weekend 😉
 
Bonjour Orson, Gbinforme,
Dans un tableau structuré les formules se propagent sur toutes les lignes mais pas au delà du tableau.
Serait ce possible d'agrandir le tableau Recap ? Dans ce cas le problème serait résolu sans autre intervention.
Bonsoir @sylvanu, le fil,
Merci pour cette proposition, je regarderai lundi dans la journée.
Bon weekend 😉
 
Dernière édition:
Pour la feuille "Factures" on utilisera cette macro :
VB:
Private Sub Worksheet_Activate()
With Columns(1)
    .Clear
    [TabPL].Columns(1).Copy .Cells(1)
    .Sort .Cells, xlAscending, Header:=xlNo 'tri
End With
End Sub
qui alimente la colonne A quand la feuille est activée.

Formule de validation puisque vous aimez INDIRECT :
Code:
=INDIRECT("A1:A"&MAX(1;NBVAL(A:A)))
 

Pièces jointes

Pour la feuille "Factures" on utilisera cette macro :
VB:
Private Sub Worksheet_Activate()
With Columns(1)
    .Clear
    [TabPL].Columns(1).Copy .Cells(1)
    .Sort .Cells, xlAscending, Header:=xlNo 'tri
End With
End Sub
qui alimente la colonne A quand la feuille est activée.

Formule de validation puisque vous aimez INDIRECT :
Code:
=INDIRECT("A1:A"&MAX(1;NBVAL(A:A)))
Merci @job75, le fil,
Je regarderai cela lundi.
Je suis de sortie avec ma belle 😁
 
Bonjour Orson, Gbinforme,
Dans un tableau structuré les formules se propagent sur toutes les lignes mais pas au delà du tableau.
Serait ce possible d'agrandir le tableau Recap ? Dans ce cas le problème serait résolu sans autre intervention.
Bonjour le fil,
Merci pour ces propositions que j'ai adaptées en fonction de toutes les réponses obtenues.
@gbinforme pour les formules de liaison entre les tableaux
@sylvanu pour son intervention
@job75 pour ses réponses pertinentes
J'ai finalement mixé vos solutions pour résoudre mon problème.
Bonne journée à tous 😉
 
Pour la feuille "Factures" on utilisera cette macro :
VB:
Private Sub Worksheet_Activate()
With Columns(1)
    .Clear
    [TabPL].Columns(1).Copy .Cells(1)
    .Sort .Cells, xlAscending, Header:=xlNo 'tri
End With
End Sub
qui alimente la colonne A quand la feuille est activée.

Formule de validation puisque vous aimez INDIRECT :
Code:
=INDIRECT("A1:A"&MAX(1;NBVAL(A:A)))
@job75,
Je rencontre un problème dans la gestion du tri de la liste. Comme cette question n'est pas propre à ce thread, j'en ai créé un autre ici.
Bonne soirée.
Orson83
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
897
Retour