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 :

trouver les 10 plus grandes valeurs


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 10
    Points
    10
    Par défaut trouver les 10 plus grandes valeurs
    bonjour,
    j'ai un probleme que je ne vois pas comment resoudre,je m'explique:
    j'ai 2 colonnes: A et B
    dans la colonne A il y a des chiffres jusqu'a la ligne r
    dans la colonne B: je dois faire apparaitre un smiley triste a coté des 10 plus grandes valeurs de la colonne A

    je ne sais pas comment trouver les 10 plus grands chiffres et encore moins retenir leur ligne pour faire un smiley dans la colonne d'a coté...

    si vous pouvez m'aider...

    merci

  2. #2
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Bonjour,

    Dans ces cas j’utilise les formula
    Ce n’est pas puriste mais je trouve cela efficace
    Et ça dépanne pas mal

    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
    Sub MaMacro()
        Nb = 1
        Columns("B").ClearContents
        For CompA = 2 To Range("A1").End(xlDown).Row
            For CompB = 1 To 10
                Range("B" & CompA).FormulaR1C1 = "=IF(LARGE(R3C1:R41C1," & CompB & ")=RC[-1],""VRAI"","""")"
                If Range("B" & CompA).Value = True Then
                'tu insere le smiley
                'Range("B" & CompA).Value = ""
                    Nb = Nb + 1
                        If Nb > 10 Then Exit Sub
                    Exit For
                End If
            Next CompB
        Next CompA
    End Sub
    Mais il y a sûrement mieux

  3. #3
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour à vous deux

    En attendant mieux une proposition qui je crois ne fonctionne que sur Excel 2007.

    cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Hello,
    Je te propose une solution assez simple que tu pourra probablement mettre en place avec du code!

    Tu mets en place un trie de tes valeurs en fonction de ta colonne B eet tu mets un smiley en colonne C pour les 10 premieres lignes !

    Tu pourras le faire avec l'enregistreur de macro sans trop de problème !

    Cdlt,
    Drost

  5. #5
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re

    une autre proposition pour les versions d'Excel antérieures à 2007
    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
    30
    31
    32
    33
    34
    35
    36
    Option Explicit
    ' Chemin du smiley à adapter
    Private Const GifImage As String = "C:\Users\xxx\Desktop\icon_sad.gif"
    Sub Les10Smileys()
    Dim monTab(1 To 10) As Variant
    Dim derLi As Long
    Dim i As Byte
    Dim Sh As Shape
    ' suppression des shapes de la feuille, à adapter si tu as déjà des shapes hormis les Smileys
    For Each Sh In ActiveSheet.Shapes
    Sh.Delete
    Next
    ' récupération de la dernière ligne de la colonne A
    derLi = Sheets(1).Columns(1).Find("*", , , , , xlPrevious).Row
    ' boucle pour trouver les 10 plus grandes valeurs
    For i = 1 To 10
    monTab(i) = Application.Match(Application.Large(Range("A2:A" & derLi), i), Range("A2:A" & derLi), 0) + 1
    Next i
    ' insertion des Smileys
    For i = 1 To UBound(monTab)
      InsererSmiley Cells(monTab(i), 2).Address
    Next
    End Sub
    ' procédure pour insérer les Smileys dans le coin supérieur gauche des cellules.
    Sub InsererSmiley(Adresse As Variant)
    Dim Smiley As Object
    Set Smiley = ActiveSheet.Pictures.Insert(GifImage)
    Dim T As Long
    Dim L As Long
    T = Range(Adresse).Top
    L = Range(Adresse).Left
    Smiley.Top = T
    Smiley.Left = L
    Set Smiley = Nothing
    End Sub
    pour que les smileys s'affichent de façon dynamique, coller le code qui suit dans le module de feuille (clic droit sur l'onglet / Visualiser le code)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then Les10Smiley
    End Sub
    Pour le plaisir des formules
    Obtenir les adresses des 10 plus grandes valeurs sur Excel
    Nommer une plage mesNombres
    =DECALER($A$2;;;NBVAL($A:$A)-1;1) (ici -1 si titre en A1)
    sélectionner 10 cellules,
    dans la cellule active saisir la formule (matricielle)
    =ADRESSE(EQUIV(GRANDE.VALEUR(mesNombres;{10;9;8;7;6;5;4;3;2;1});mesNombres;0)+1;1) (ici +1 si titre en A1)
    valider en faisant Ctrl + Shift + ENTER
    cordialement

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    merci pour votre aide!!

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

Discussions similaires

  1. afficher les 10 plus grandes valeurs
    Par logidev dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/06/2009, 09h25
  2. Récupérer les N plus grandes valeurs
    Par lloyd_r dans le forum MATLAB
    Réponses: 6
    Dernier message: 01/09/2008, 15h16
  3. determiner les 3 plus grandes valeurs numeriques du for-each
    Par makohsarah dans le forum Struts 1
    Réponses: 1
    Dernier message: 15/06/2008, 16h37
  4. isoler les 2 plus grandes valeurs d'une liste
    Par marlene.ln dans le forum Access
    Réponses: 3
    Dernier message: 29/01/2007, 10h22
  5. [Debutante] trouver les 5 plus grandes valeurs
    Par Sarrus dans le forum Langage SQL
    Réponses: 11
    Dernier message: 25/07/2005, 15h39

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