Microsoft 365 Tri d'un tableau impossible

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 !

homernell

XLDnaute Occasionnel
Bonjour à tous,

Je reviens vers vous une deuxième fois dans ce forum car après discutions avec certains d'entre vous la solution n'a pas été trouvé.

Je cherche tout simplement à trier les données d'un tableau, mais malheureusement cela ne fonctionne pas.

En pj le fichier en question.

Merci de vos retours
 

Pièces jointes

Bonsoir à tous,

Pour que le tableau de la feuille Box Office puise être trié il faut supprimer toutes les formules.

Le tableau devra être construit à l'aide d'une macro qui prendra les données dans les 3 feuilles sources.

C'est donc la conception de votre fichier qu'il faut complètement revoir.

A+
Merci à tous pour vos réponses.

Franchement vous êtes top.

Et désolé @Phil69970 si je t'ai fait perdre ton temps ce n'est pas le but
 
Bonsoir à tous,
Après analyse des formules de la feuille, vos lignes sont dépendantes des cinémas et du nombre de salles de ceux-ci , sans parler du nombre de lignes vides avec et sans formules ( ce sont un peu des formules à la carte ...)
Je rejoins toute la communauté en vous disant que vous devriez copier manuellement ou par code votre tableau ( les valeurs ) dans une autre/nouvelle feuille et y trier ce que bon vous semble . 🙏
Merci
 
Notre ami attend qu'on lui fournisse une macro, alors voyez celle-ci dans Module2 :
VB:
Sub MAJ()
Dim feuilles, d As Object, w As Worksheet, tablo, i&, x$, resu(), n&, report As Variant, nn&
Set feuilles = Sheets(Array("Cezanne", "Renoir", "Mazarin")) 'liste des cinémas
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
For Each w In feuilles
    d.RemoveAll
    tablo = w.Range("A1", w.UsedRange).Resize(, 32) 'matrice, plus rapide
    For i = 5 To UBound(tablo)
        If LCase(tablo(i, 2)) = "salle" Then
            If tablo(i, 4) <> "" Then
                x = tablo(i, 4) & Chr(1) & tablo(i + 1, 3) & Chr(1) & tablo(i + 2, 3)
                If Not d.exists(x) Then
                    ReDim Preserve resu(8, n) 'base 0
                    d(x) = n 'mémorise la ligne
                    resu(0, n) = w.Name
                    If IsDate(tablo(i + 2, 3)) Then resu(1, n) = CDbl(CDate(tablo(i + 2, 3)))
                    resu(2, n) = tablo(i, 4) 'Film
                    resu(3, n) = tablo(i + 1, 6) 'Distrib
                    resu(4, n) = tablo(i + 1, 3) 'Sem
                    report = Application.VLookup(tablo(i, 4), Sheets("Cumul Box Office").Columns("D:J"), 7, 0)
                    If IsNumeric(report) Then resu(7, n) = report
                    n = n + 1
                End If
                nn = d(x)
                resu(6, nn) = resu(6, nn) + Val(tablo(i, 32))
                resu(8, nn) = resu(6, nn) + resu(7, nn)
            End If
        End If
Next i, w
'---restitution---
Application.ScreenUpdating = False
With Sheets("Box Office").[B5:J133]
    .ClearContents 'RAZ
    .Rows.Hidden = True 'masque
    If n > .Rows.Count Then MsgBox "Pas assez de place !", 48: Exit Sub
    If n Then
        .Resize(n).EntireRow.Hidden = False 'affiche
        .Resize(n) = Application.Transpose(resu) 'Transpose est limitée à 65536 lignes
    End If
End With
End Sub
Cliquez sur le bouton MAJ de la feuille "Box Office".

Maintenant le tri du tableau est possible.

Bonne nuit.
Excellent merci
 
- 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
0
Affichages
230
Retour