Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 formule tableau excel

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 !

STEPH63000

XLDnaute Nouveau
bonjour je cherche une solution pour un tableau de stats excel. ci joint le fichier .
en page 1 j'ai des donnée dans un fichier excel que je recupère via un logiciel d'analyse video et je voudrais les exploiter avec formule comme indiquer en page 2
 

Pièces jointes

Bonjour STEPH63000, djidji59430,

Voyez le fichier joint et cette macro affectée au bouton :
VB:
Sub Nouveau_tableau()
Dim tablo, d As Object, d1 As Object, d2 As Object, i&, s, x$, maxi%
'---analyse du tableau source---
tablo = Feuil1.UsedRange.Resize(, 10) 'matrice, plus rapide, à adapter
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
For i = 4 To UBound(tablo)
    s = Split(tablo(i, 1))
    If UBound(s) > 0 Then
        x = s(0) & " " & s(1)
        d(x) = IIf(d.exists(x), d(x), x) & Chr(1) & tablo(i, 6) & Chr(1) & tablo(i, 7) 'concaténation
        d1(x) = d1(x) + 1 'comptage
        d2(x) = tablo(i, 10) 'valeur en dernière ligne
    End If
Next
'---tableau des résultats---
Application.ScreenUpdating = False
With Feuil2 'CodeName de la feuille
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[A1].CurrentRegion.Offset(1)
        .ClearContents 'RAZ
        If .Columns.Count > 3 Then .Columns(3).EntireColumn.Resize(, .Columns.Count - 3).Delete 'racourcissement à 3 colonnes
        If d.Count Then
            maxi = Application.Max(d1.items)
            .Columns(2).EntireColumn.Resize(, 2 * maxi - 1).Insert 'insertion des colonnes nécessaire
            .Columns(1).Resize(d.Count) = Application.Transpose(d.items) 'Transpose est limitée à 65536 lignes
            .Columns(1).Resize(d.Count).TextToColumns .Cells(1), xlDelimited, Other:=True, OtherChar:=Chr(1) 'commande Convertir
            .Columns(2 * maxi + 2).Resize(d.Count) = Application.Transpose(d2.items)
            For i = 2 To 2 * maxi Step 2: .Columns(i).EntireColumn.HorizontalAlignment = xlCenter: Next 'centrage
        End If
    End With
    .Columns.AutoFit 'ajustement largeur
    With .UsedRange: End With 'actualise les barres de défilement
    .Activate 'facultatif
End With
End Sub
Utilisant 3 Dictionary et un tableau VBA la macro est rapide même sur de grands tableaux.

A+
 

Pièces jointes

On ne peut pas utiliser la fonction Transpose s'il y a plus de 65536 lignes restituées.

Et l'on ne peut pas utiliser la commande Convertir s'il faut entrer plus de 32767 caractères dans une cellule.

On utilisera alors cette macro :
VB:
Sub Nouveau_tableau()
Dim tablo, d As Object, d1 As Object, d2 As Object, i&, s, x$, maxi%, a, b, ubc%, c(), j%
'---analyse du tableau source---
tablo = Feuil1.UsedRange.Resize(, 10) 'matrice, plus rapide, à adapter
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
For i = 4 To UBound(tablo)
    s = Split(tablo(i, 1))
    If UBound(s) > 0 Then
        x = s(0) & " " & s(1)
        d(x) = IIf(d.exists(x), d(x), x) & Chr(1) & tablo(i, 6) & Chr(1) & tablo(i, 7) 'concaténation
        d1(x) = d1(x) + 1 'comptage
        d2(x) = tablo(i, 10) 'valeur en dernière ligne
    End If
Next i
'---tableau des résultats---
Application.ScreenUpdating = False
With Feuil2 'CodeName de la feuille
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[A1].CurrentRegion.Offset(1)
        .ClearContents 'RAZ
        If .Columns.Count > 3 Then .Columns(3).EntireColumn.Resize(, .Columns.Count - 3).Delete 'racourcissement à 3 colonnes
        If d.Count Then
            maxi = Application.Max(d1.items)
            .Columns(2).EntireColumn.Resize(, 2 * maxi - 1).Insert 'insertion des colonnes nécessaires
            a = d.items: b = d2.items
            ubc = 2 * maxi + 1
            ReDim c(d.Count - 1, ubc) 'base 0
            For i = 0 To UBound(b)
                c(i, ubc) = b(i) 'dernière colonne
                s = Split(a(i), Chr(1))
                For j = 0 To UBound(s)
                    c(i, j) = s(j)
            Next j, i
            .Columns(1).Resize(d.Count, ubc + 1) = c
            For i = 2 To 2 * maxi Step 2: .Columns(i).EntireColumn.HorizontalAlignment = xlCenter: Next 'centrage
        End If
    End With
    .Columns.AutoFit 'ajustement largeur
    With .UsedRange: End With 'actualise les barres de défilement
    .Activate 'facultatif
End With
End Sub
Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Par formule cela paraît difficile, mais en VBA on peut éviter le bouton en utilisant cette macro dans la 2ème feuille :
VB:
Private Sub Worksheet_Activate()
Nouveau_tableau 'lance la macro
End Sub
Elle se déclenche automatiquement quand on active la feuille.

Fichier (3).
 

Pièces jointes

en fait je me suis peut etre mal exprimé. j'ai besoin à partir du tableau en feuille 1 . j'ai différentes lignes de SEQ (ex: SEQ 1,SEQ 2,SEQ 2 (1)......) aux quelles correspondent des valeurs tel que : zone terrain (ex: 1R,2O.....),rucks gagnés (ex: LIBERATION RAPIDE .......) et fin de séquence (ex: ESSAI ........) et donc par le biais de formules si cela est possible d'avoir une mise en page comme en feuille 2 par rapport aux résultats entrés en feuille 1.
cela est pour me permettre au rugby de trier des informations que je recupère avec un logiciel d'analyse video.
 
Bonsoir à tous,
Un essai en pj : ce n'est pas garanti pour tous les cas possibles : pour le moment seulement 3 sous parties prévues au max sur une séquence, il faudra adapter si plus.
Et une colonne est à insérer dans le tableau de la feuille 1 : il semble que les espaces entre seq et (x) changent quand on dépasse 9 : je les ai donc supprimés par formule.
La formule de la première colonne feuil2 est matricielle (valider par ctrl+maj+enter)
à votre écoute pour explications et adaptation si besoin
Cordialement
PS pour Job, je n'avais pas lu ton dernier message avant de me colleter avec ce fichier. Il est certain qu'on ne peut pas traiter aussi bien qu'avec ta macro, ce n'est qu'une tentative par formule pour tenter de rester proche de la demande.
Steph : les formules utilisées sont parfois complexes : faites confiance à Job qui vous supportera en cas de problème avec son outil
 

Pièces jointes

Bonjour Dugenou, heureux de te croiser,

Belle solution, l'ennui c'est que l'on ne connaît pas à l'avance le nombre de colonnes du tableau des résultats.

Et si ce tableau comporte plusieurs dizaines de colonnes il faut trouver une autre formule pour la dernière.

Bonne journée.
 
Bonjour à tous 🙂,

J’avais commencé par formule donc je publie.

Feuil1:
Trois colonnes auxiliaires ont été insérées sur la feuille Feuil1: colonnes A à C.

Des noms dynamiques ont été définis:
Rucks=DECALER(Feuil1!$D$4:$D$99999;0;0;NBVAL(Feuil1!$D$4:$D$99999);1)
Nseq=DECALER(Rucks;0;-1)
Numseq=DECALER(NumSeqTri;0;-1)
NumSeqTri=DECALER(Nseq;0;-1)

On a retiré la fusion des cellules fusionnées des titres (pas bon 🙁 les cellules fusionnées dans une base de données)

Recopier les formules de la plage A4:C4 vers le bas jusqu'à obtenir des lignes dont le résultat est vide.


Feuil2:
Les titres doivent être identiques à ceux de la ligne 3 de Feuil1.
Une MFC rend invisible les cellules dont le résultat est 0.

Recopier la formule en A2 vers la droite et vers le bas jusqu'à obtenir des lignes dont le résultat est vide.
 

Pièces jointes

Dernière édition:
Bonjour à tous,

Avec le fichier joint j'y vais moi aussi de ma solution par formules.

Il faut 2 colonnes auxiliaires A et B dans la 1ère feuille.

Les cellules fusionnées ne posent vraiment aucun problème.

C'est bien plus compliqué à mettre en œuvre que la solution VBA mais c'est jouable s'il n'y a pas trop de colonnes à restituer en 2ème feuille.

A+
 

Pièces jointes

- 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
18
Affichages
193
Réponses
8
Affichages
223
Réponses
32
Affichages
1 K
Réponses
55
Affichages
1 K
Réponses
1
Affichages
143
Réponses
14
Affichages
223
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…