VBA

merci de bien m'aider d'obtenir une macro qui fait la séquence, d'autre façon qui fait la comparaison entre deux colonnes(A,B) pour faire trier ce tableau.
exemple:
colonne A: colonne B: colonne A:
230 16 231 16
270 20 231 16
231 15 solution souhaitable 231 17
230 19 230 19
231 16 230 16
231 17 270 20

c'est-à dire on classe la valeur la plus répétée ainsi de suit

37 réponses

Résumé de la discussion

La discussion porte sur une macro ou une méthode pour trier un tableau à deux colonnes, A et B, en plaçant les valeurs les plus répétées de A en tête et en réordonnant B. Plusieurs participants proposent d’utiliser une colonne auxiliaire avec NB.SI pour compter les occurrences, puis de trier d’abord par ce compte décroissant et ensuite par les valeurs d’A. D’autres suggèrent une approche macro directe ou l’ajout d’une colonne C avec NB.SI(A:A;A2) puis tri par nb décroissant et par colonne A, afin de regrouper les mêmes valeurs avant les autres. Pour éviter les doublons et garantir une répartition stable, certains recommandent aussi d’ajouter une colonne d’index ou d’utiliser un tri secondaire sur B afin d’assurer la stabilité.

Bobot (l’IA à votre service)
  1. lors de l'exécution du programme un erreur dans l'instruction suivante " [C2].Resize(derlig - 1).FormulaLocal = "=NB.SI(A:A;A2)" est affiché
    1. Contributeur
      Sur le fichier que je t'ai joint ???
      Il faut que ton fichier ressemble au modèle que tu as fourni.
      En quelle langue est ton excel ?
      eric

      edit : si tu es dans une autre langue que fr remplace par :
      [C2].Resize(derlig - 1).Formula = "=COUNTIF(A:A,A2)"
      Si toujours pb déposer le fichier
    2. en Francais.
      maintenant il me donne un erreur défini par l'application ou par l'objet or il ajoute (nb) en [C1] et les autres celules de [C] sont vides et les bordures sont supprimées
    3. Contributeur
      Je répète : Sur le fichier que je t'ai joint ???
      Sinon déposer le fichier sur cjoint.com et coller ici le lien fourni.

      eric
    4. Contributeur
      Tu n'y as même pas mis le code, comment veux-tu que je vois si c'est ici que tu fais une erreur ?
      Pas d'erreur chez moi.
      eric
  2. Contributeur
    Bonjour,

    Regarde si ça va :
    Sub tri()
        Dim derlig As Long
        [C:C].Insert Shift:=xlToRight
        derlig = Cells(Rows.Count, 1).End(xlUp).Row
        Application.ScreenUpdating = False
        [C1] = "Nb"
        [C2].Resize(derlig - 1).FormulaLocal = "=NB.SI(A:A;A2)"
        [A:C].Sort Key1:=Range("C2"), Order1:=xlDescending, _
                       Key2:=Range("A2"), Order2:=xlAscending, _
                       Key3:=Range("B2"), Order3:=xlAscending, Header:=xlYes
        [C:C].Delete Shift:=xlToLeft
        [A1].Select
    End Sub

    https://www.cjoint.com/?DEAnPYksLyL

    eric

    1. Bonjour
      la société m'obligé de faire une application sous macro
      Merci
      1. Contributeur
        Bonjour,

        Pourquoi par macro ?
        Il suffit d'ajouter une colonne nb en C avec : =NB.SI(A:A;A2)
        Puis de trier par nb décroissant puis par CON_A

        eric
        1. oui c'est normal et pour le dernier question n'est pas important le classement c'est-à-dire soit 1//2//3 soit 3//2//1 soit 2//3//1
          merci
          1. A la ligne 337 une des valeur de la colonne A = 0 Est-ce normal ?

            Je le demande car ça crée une erreur, donc ci c'est normal je fait un manipulation pour éviter l'erreur, si non je laisse comme ça et je change la valeur

            Et une dernière question :

            Si un nombre X de la colonne A est lié au nombres : 1,2,3 dans la colonnes B

            Est- ce que le résultat doit être :

            Colonne A : X // X // X
            Colonne B : 1 // 2 // 3

            ou

            Colonne A : X // X // X
            Colonne B : 3 //2 // 1

            ou peut importe ?

            Colonne A : X // X // X
            Colonne B : 2 // 3 // 1
            1. Le problème c'est que c'est une macro difficile à adapter :)

              C'est toujours les les colonnes A et B qui sont concernée ?

              Combient de valeur au maximum dans la colonnes A tu as ?
              1. la macro qui donne le bon résultat car je vais l'utiliser pour d'autre liste :)
                Cordialement
                1. Oui j'ai bientot Fini :)

                  Mais enfaite ce qui vous interesse c'est la macro ou juste le résultat ?
                  1. Désolé pour le dérangement et merci par avance de me dire est-ce que vous pouvez le faire
                    1. Euh c'est impossible que vous ayez envoyé le fichier excel mais je vous invite à le télécharger sur cjoint.com et me copier le lien
                      • 1
                      • 2