Filtrer valeurs similaires

Bonjour,

j'ai deux colonnes comme ceci:

chine 7
chine 12
chine 12
chine 16
chine 16
chine 16
maroc 2
maroc 4
maroc 4

Je souhaiterais qu'un filtre ou une couleur soit appliquée avec deux critères (selon le nombre de chiffres en doublon ) et selon le pays.

Par exemple pour la chine les chine 16 doivent être placés au dessus, douze en dessous puis 7 en dessous. pour le maroc le chiffre 4 au dessus, le chiffre 2 en dessous.
Attention car par exemple il peut avoir un autre chiffre 12 mais pour un autre pays différent que la chine donc ce tri doit se faire selon deux critères . les doublons et les pays.

Merci pour toute aide éventuelle.

3 réponses

  1. J'ai mis quelques commentaires.
    Mais en gros, tu as un while, un if 5 variables.

    C'est relativement petit comme macro et c'est du code relativement de base. (Je ne suis pas un super expert).

    J'imagine qu'un expert pour raccourcir le code avec des fonctions plus complexe.

    Mais bon, voila le fichier sur cjoint, tu peux le downloader et le bidouiller.
    C'est un bon début pour approfondir sur le code VBA.

    http://cjoint.com/data/0IpoPB7Devi.htm
    1. Re-bonjour,

      Il n'y aurait pas t'il une macro plus simple pour ce type de tri ou encore sans passer par une macro est t'il possible sur excel de le faire avec des filtres élaborés ou par mise en forme conditionelle??
      1. Ce n'est peut-être pas super élégant, mais voici un début de solution

        Une petite macro qui créé un tableau avec des valeur unique et le nombre de doublons, et ensuite l'on tri ce nouveau tableau pour avoir l'ordre désiré

        Sub Tri_tableau()

        Dim pays As String
        Dim valeur As Integer
        Dim Doublons As Integer

        Dim i As Integer '* Variable pour boucler sur nos valeur
        Dim J As Integer '* Variable pour écrire les résultats

        pays = Range("A1").Value '* On assigne pour commencer notre variable pays
        valeur = Range("B1").Value '* même chose pour valeur, on suppose que le tableau commence en A1

        i = 1
        J = 1

        Doublons = 0 '* Variable qu'on incrémente à chaque fois qu'une valeur identique est trouvée

        While Range("a" & i).Value <> ""
        '* On test voir si le pays et la valeur sont égal à la valeur en mémoire
        If (pays = Range("A" & i).Value) And (valeur = Range("B" & i).Value) Then
        '* Si c'est le cas, on incrémente notre variable doublons
        Doublons = Doublons + 1

        '* on "imprime" le résultat, ce résultat sera écrasé tant que les valeurs sont identique
        Range("D" & J).Value = pays
        Range("E" & J).Value = valeur
        Range("F" & J).Value = Doublons
        Else
        '*On change de ligne
        J = J + 1

        '* Et l'on recommence avec la nouvelle valeur en réinitialisant notre variable doublons
        pays = Range("A" & i).Value
        valeur = Range("B" & i).Value
        Doublons = 1

        '* on "imprime" le résultat quand même
        Range("D" & J).Value = pays
        Range("E" & J).Value = valeur
        Range("F" & J).Value = Doublons
        End If

        i = i + 1
        Wend

        '* Et on fait un tri, d'abord par pays, ensuite par doublons, a modifier au besoin
        Columns("D:F").Select
        Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Key2:=Range("F1") _
        , Order2:=xlDescending, Key3:=Range("E1"), Order3:=xlAscending, Header _
        :=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

        End Sub