Trier Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
M
Meven
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 5 novembre 2019
Version d'Excel : 2016

Message par Meven » 5 novembre 2019, 19:21

Bonjour à tous !

Pour faire un exposé j'ai besoin d'avoir un tableau Excel trié par Pays/Date, sauf que j'ai actuellement 3 colonnes : Pays, Date et Valeur

Le problème c'est que j'ai une ligne par pays et par date pour une valeur.

J'aimerais transformer mon tableau excel pour avoir tout les pays une seule fois dans la colonne A, et toutes les dates une seule fois sur la ligne n°1 et que toutes les valeurs corespondent au pays et à la date en question. Et j'aimerais savoir si il y'a un moyen "automatique" de le faire car je dois le faire sur plusieurs tableaux.

Merci beaucoup pour votre aide ! :)
CO2 Emmissions.xlsx
(43.32 Kio) Téléchargé 5 fois
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'205
Appréciations reçues : 735
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 5 novembre 2019, 19:29

Bonjour, et welcome !

tu peux le faire avec un TCD (tableau croisé dynamique)
en plus tu peux "jouer" avec la mise en ligne, colonne et avec les valeurs (mini, moyenne, somme, maxi) pour avoir le résultat que tu souhaites
CO2 Emmissions.xlsx
(110.05 Kio) Téléchargé 4 fois
1 membre du forum aime ce message.

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'020
Appréciations reçues : 305
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 5 novembre 2019, 20:17

BOnjour,

Une autre piste par macro, hello Steelson (°v°)°, avec une feuille ajoutée nommée "Données triées" :
Sub Test()

    Dim Fe As Worksheet
    Dim Dico As Object
    Dim Cle As Variant
    Dim Plage As Range
    Dim Cel As Range
    Dim T As Variant
    Dim Annee As Integer
    Dim I As Integer
    Dim J As Integer
    
    Set Dico = CreateObject("Scripting.Dictionary")
    
    'plage des dates
    With Worksheets("SYB60_T25_Carbon Dioxide Emissi"): Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)): End With
    
    'ajoute une feuille nommée "Données triées" si elle n'existe pas déjà
    On Error Resume Next
    Set Fe = Worksheets("Données triées")
    If Fe Is Nothing Then Set Fe = Worksheets.Add
    On Error GoTo 0

    Fe.Name = "Données triées"
    
    'récupère les dates uniques...
    For Each Cel In Plage: Dico(Cel.Value) = "": Next Cel
    
    '...et les inscrit en première ligne
    For Each Cle In Dico.Keys: I = I + 1: Fe.Cells(1, I + 1).Value = Cle: Next Cle
    
    Dico.RemoveAll
    
    'plage des noms de pays
    With Worksheets("SYB60_T25_Carbon Dioxide Emissi"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
    
    'stocke dans le dictionnaire les noms des pays et couple l'année avec la valeur (séparé par un tiret bas) el les ensembles séparés par une virgule
    For Each Cel In Plage: Dico(Cel.Value) = Dico(Cel.Value) & Cel.Offset(, 1).Value & "_" & Cel.Offset(, 2).Value & ",": Next Cel
    
    I = 0
    
    'défini la plage sur la ligne 1 pour la recherche des dates
    With Fe: Set Plage = .Range(.Cells(1, 2), .Cells(1, .Columns.Count).End(xlToLeft)): End With
    
    For Each Cle In Dico.Keys
        
        'inscrit le nom du pays
        I = I + 1: Fe.Cells(I + 1, 1).Value = Cle
        
        'extrait les ensembles...
        T = Split(Dico(Cle), ",")
        
        '...et boucle
        For J = 0 To UBound(T) - 1
            
            'extrait l'année de l'ensemble
            Annee = Split(T(J), "_")(0)
            
            'la recherche dans la plage
            Set Cel = Plage.Find(Annee, , xlValues, xlWhole)
            
            'et si trouvée, inscrit la valeur
            If Not Cel Is Nothing Then Fe.Cells(I + 1, Cel.Column).Value = Split(T(J), "_")(1)
            
        Next J
        
    Next Cle
    
End Sub
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
Avatar du membre
AFEH
Membre dévoué
Membre dévoué
Messages : 783
Appréciations reçues : 19
Inscrit le : 21 juillet 2008
Version d'Excel : 2007 FR

Message par AFEH » 5 novembre 2019, 21:29

Bonsoir à tous,
Voici une autre idée
cdt
Henri
Copie de CO2 Emmissions.xlsm
(61.4 Kio) Téléchargé 2 fois
M
Meven
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 5 novembre 2019
Version d'Excel : 2016

Message par Meven » 5 novembre 2019, 21:34

Merci beaucoup ! Le tableau croisé dynamique correspond parfaitement à ce que je cherchais !
Avatar du membre
AFEH
Membre dévoué
Membre dévoué
Messages : 783
Appréciations reçues : 19
Inscrit le : 21 juillet 2008
Version d'Excel : 2007 FR

Message par AFEH » 6 novembre 2019, 15:58

Bonjour à tous,
Pour le fun, voici ma solution après avoir modifié le nombre de lignes par pays à 8.
Cdt
Henri
CO2 Emmissions.xlsm
(79.87 Kio) Téléchargé 2 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Trier Listbox à l'ajout des données (Trier par date)
    par GGautier » 27 septembre 2019, 10:05 » dans Excel - VBA
    2 Réponses
    87 Vues
    Dernier message par GGautier
    30 septembre 2019, 11:02
  • Trier col de texte (sans vba, sans fct trier)
    par kalijm » 19 janvier 2020, 22:54 » dans Excel - VBA
    1 Réponses
    50 Vues
    Dernier message par kalijm
    Hier, 10:41
  • Trier
    par Sebyg » 10 décembre 2018, 15:26 » dans Excel - VBA
    14 Réponses
    188 Vues
    Dernier message par Sebyg
    11 décembre 2018, 09:49
  • Trier
    par julienha01 » 10 novembre 2015, 15:27 » dans Excel - VBA
    3 Réponses
    137 Vues
    Dernier message par julienha01
    12 novembre 2015, 15:09
  • Plus possible de trier !
    par baldwin » 27 février 2019, 02:55 » dans Excel - VBA
    5 Réponses
    77 Vues
    Dernier message par Steelson
    28 février 2019, 05:01
  • Trier
    par jsrrs » 1 mars 2017, 15:29 » dans Excel - VBA
    5 Réponses
    123 Vues
    Dernier message par jsrrs
    9 mars 2017, 15:38