IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Reperer des valeurs [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 42
    Par défaut Reperer des valeurs
    bonjour a tous et merci pour vos aides

    ma demande est la suivante

    dans la colonne q6 à q19 j'ai ces valeurs

    2,5,5,5,8,2,9,2,2,1,5,8,5,5

    et je voudrai déterminé à l'aide d'une formule même matriciel dans d'autre cellule
    la fréquence des valeurs qui apparait le plus souvent en ordre croissant c'est a dire
    5,2,8,9,1 pour le nombre de fois je sais que la formule est avec nb.si()

    merci d'avance et bonne journée a vous

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Un petit TCD trié

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Bonjour,

    Essaie ça :
    {=INDEX(A1:A5;EQUIV(MAX(NB.SI(A1:A5;A1:A5));NB.SI(A1:A5;A1:A5);0);1)}
    A valider en formule matricielle (CTRL + SHIFT + ENTREE), remplace le A1:A5 par la plage de valeurs en question,

    Cordialement,

    Mr Poulpe

  4. #4
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum,

    Une proposition VBA (comme ça t'auras la totale...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub Macro1() 'avec l'aide trouvée sur le site de Jacques BOISGONTIER : http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm#Compter
    Dim O As Object 'déclare la variable O (Onglet)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim D As Object 'déclare la variable D (Dictionnaire)
    Dim CEL As Range 'déclare la variable CEL (CELlule)
    Dim TMP1 As Variant 'déclare la variable TMP1 (tableau TeMPoraire 1)
    Dim TMP2 As Variant 'déclare la variable TMP2 (tableau TeMPoraire 2)
    Dim VT1 As Integer 'déclare la variable VT1 (Valeur Temporaire 1)
    Dim VT2 As Integer 'déclare la variable VT2 (Valeur Temporaire 2)
     
    Set O = Sheets("Feuil1") 'définit l'onglet O
    Set PL = O.Range("Q6:Q19") 'définit la plage PL
    Set D = CreateObject("Scripting.Dictionary") 'définit la dictionnaire D
    For Each CEL In PL 'boucle sur toutes les cellules CEl de la plage PL
        D(CEL.Value) = D(CEL.Value) + 1 'alimente le dictionnaire
    Next CEL 'prochaine cellule de la boucle
    TMP1 = D.KEYS 'récupère les valeur uniques du dictionnaire (sans doublon) dans le tableau temporaire TMP1
    TMP2 = D.ITEMS 'récupère le nombre de chaque valeur unique dans le tableau temporaire TMP2
    'tri décroissant
    For I = 0 To UBound(TMP2) 'boucle 1 sur toutes les valeurs du tableau TMP2
        For J = 0 To UBound(TMP2) 'boucle 1 sur toutes les valeurs du tableau TMP2
            If TMP2(I) > TMP2(J) Then 'condition : si la valeur de la boucle 1 est supérieure à la valeur de la boucle 2
                VT2 = TMP2(I): TMP2(I) = TMP2(J): TMP2(J) = VT2 'rétrograde la position de la valeur inférieure dans le tableau TMP2
                VT1 = TMP1(I): TMP1(I) = TMP1(J): TMP1(J) = VT1 'rétrograde la position de la valeur associée dans le tableau TMP1
            End If 'fin de la condition
        Next J 'prochaine valeur de la boucle 2
    Next I 'prochaine valeur de la boucle 1
    O.Range("S6").Resize(D.Count, 1) = Application.Transpose(TMP1) 'renvoie la liste dans l'ordre dans la cellule S6
    End Sub

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 42
    Par défaut
    merci a tout le monde je vais essaye tous ça!!

    Citation Envoyé par Mr Poulpe Voir le message
    Bonjour,

    Essaie ça :
    {=INDEX(A1:A5;EQUIV(MAX(NB.SI(A1:A5;A1:A5));NB.SI(A1:A5;A1:A5);0);1)}
    A valider en formule matricielle (CTRL + SHIFT + ENTREE), remplace le A1:A5 par la plage de valeurs en question,

    Cordialement,

    Mr Poulpe
    ta formule ne fonctionne pas il me sort que les un!

    j'aimerai évité du code VBA

    voila ce que je desire obtenir
    Nom : Capture.PNG
Affichages : 138
Taille : 3,6 Ko

  6. #6
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum,

    En remplaçant S6 par Q21 dans la ligne 28, c'est exactement ce que donne le code proposé... Mais si tu n'en veux pas, qu'y puis-je ?

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 42
    Par défaut
    merci thautheme c'est vrai ça fonctionne et est-ce-que je peut metre ton code en tant que fonction pour m'en servir en formule?
    parce que j'aimerai que sa ce fasse en temp réel sans que je click sur un bouton pour mettre a jour la feuille c'est peut être trop te demander
    merci encore a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri des valeurs dans un DBGrid
    Par soviet dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/06/2015, 14h18
  2. [Math]Problème troncage ou arrondi sur des valeurs
    Par Carrel dans le forum Général Java
    Réponses: 6
    Dernier message: 07/10/2009, 15h11
  3. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01
  4. [SQL] Ma requête m'oblige à saisir des valeurs manuellement
    Par bossun dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/10/2003, 13h29
  5. Réponses: 6
    Dernier message: 04/04/2003, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo