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 :

Problème avec TOP 10 sur Toutes les valeurs


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2015
    Messages : 52
    Points : 27
    Points
    27
    Par défaut Problème avec TOP 10 sur Toutes les valeurs
    Bonjour forum;


    Après plein de recherche sur internet, je me retrouve vraiment bloqué, j’espère bien que qu’un m’aide s’il vous plaît.

    Le problème se résume comme suit :

    Je souhaite effectuer un classement en Top ten dans une lsitBox , le problème c’est que le classement se réalise sur les valeurs à 1 chiffre suivi des valeurs à 2 chiffres puis les valeurs à 3 chiffres ainsi de suite ( par exemple la classeN°1 : TOP 10=89,66,54,52,46,43,35,144,140.

    Mon document est en pièce jointe pour faciliter la compréhension de mon problème.
    Merci d’avance !

    Essais de Calcul .xlsm

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    Option Explicit
    'Définition des variables
    Dim TV As Variant 'déclare la variable TV (Tableau de Variables)
    Dim VT As Variant
    Dim COL As Byte 'déclare la variable COL (COLonne)
    Dim Ws As Worksheet
    Dim x As Byte
    Dim Nof As String
    Dim valeurR As Single
    Option Base 1
    Const F = "F"
    Const Fs = "Fs"
    Const En = "En"
    Const Co = "Co"
     
    Private Sub Frame2_Click()
    End Sub
     
    Private Sub ListBox1_Click()
    End Sub
    Sub largeur_colonnes()
    End Sub
    Private Sub TextBox2_Change()
    End Sub
     
    Private Sub UserForm_Initialize()
        ListBox1.ColumnCount = 9
    End Sub
    Private Sub CommandButton1_Click()
        tri F
    End Sub
    Private Sub CommandButton2_Click()
        tri Fs
    End Sub
    Private Sub CommandButton3_Click()
        tri En
    End Sub
    Private Sub CommandButton4_Click()
        tri Co
    End Sub
    Private Sub CommandButton5_Click()
        tri
    End Sub
     
    Sub tri(Optional Mode = "tous")
     
        'Gestion de la taille des colonnes
        Set Ws = Worksheets("Feuil3")
        Dim param As String
        param = Columns(3).Width
        For x = 2 To 9
            param = param & ";" & Columns(x).Width
        Next
        ListBox1.ColumnWidths = param
     
        'Fonction Tri
     
        Dim tablo, tabfinal(), inc As Single, fk As Single, z As Single, a As Single
        tablo = Ws.Range("a2:i" & Ws.Cells(Rows.Count, 1).End(xlUp).Row)   'on met aussi en mémoire un tableau a 5 colonne (avec tout)
        ReDim tabfinal(UBound(tablo), 9)
        For inc = 1 To UBound(tablo)
            fk = plusgrand(tablo)
            Select Case Mode
            Case "F": If tablo(fk, 1) = "Ver" Then a = a + 1: For z = 1 To 9: tabfinal(a, z) = Format(tablo(fk, z)): Next
            Case "Fs": If tablo(fk, 1) = "Ens" Then a = a + 1: For z = 1 To 9: tabfinal(a, z) = Format(tablo(fk, z)): Next
            Case "En": If tablo(fk, 1) = "Sec" Then a = a + 1: For z = 1 To 9: tabfinal(a, z) = Format(tablo(fk, z)): Next
            Case "Co": If tablo(fk, 1) = "Conce" Then a = a + 1: For z = 1 To 9: tabfinal(a, z) = Format(tablo(fk, z)): Next
            Case "tous": a = a + 1: For z = 1 To 9: tabfinal(a, z) = Format(tablo(fk, z)): Next
            End Select
            tablo(fk, 9) = 0
            If a = 10 Then Exit For
        Next
        ListBox1.List = tabfinal
    End Sub
    Function plusgrand(tabl) As Long
        Dim indexo As String, a As Long, lig As Long
        indexo = 0
        For a = 1 To UBound(tabl)
            If tabl(a, 9) > indexo Then
                indexo = tabl(a, 9)
                lig = a
            End If
        Next
        plusgrand = lig
    End Function
     
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim Nm As String 'déclare la variable Nom
    Dim rngData As Range, rngLabelRow As Range, rngLabelColumn As Range, fn As WorksheetFunction
    With Me.ListBox1 'prend en compte la ListBox1
        Nm = .Column(1, .ListIndex) 'définit la variable Nom
    End With 'fin de la prise en compte de la ListBox1
    Set fn = Application.WorksheetFunction
    With ThisWorkbook1.Worksheets("Feuil3")
      Set rngData = .Range("B2:N73")
      Set rngLabelRow = .Range("B2:B73")
      Set rngLabelColumn = .Range("B1:N1")
     End With
    With fn
     
    valeurR = .Index(rngData, .Match(Nm, rngLabelRow, 0), .Match("Crit4", rngLabelColumn, 0))
    TextBox1.Text = valeurR
    End With
    End Sub

  2. #2
    Membre habitué Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 178
    Points : 162
    Points
    162
    Par défaut
    Bonjour Hadi,


    Tu utilises un String pour ton paramètre indexo qui sert de test de comparaison avec tabl(a, 9)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function plusgrand(tabl) As Long
        Dim indexo As String, a As Long, lig As Long
        indexo = 0
        For a = 1 To UBound(tabl)
            If tabl(a, 9) > indexo Then
                indexo = tabl(a, 9)
                lig = a
            End If
        Next
        plusgrand = lig
    End Function
    A mon avis, en utilisant une variable numérique tu ne devrais plus avoir ce problème.

    Cdt,
    Francis

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2015
    Messages : 52
    Points : 27
    Points
    27
    Par défaut
    Bonjour francis60,
    Je vous remercie, vous m'avez sauvé la vie . Merci infiniment

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut sujet en doublons
    salut hadi

    par respect pour le forum et ceux qui t'aide a développez tes App évites les sujet en doublons
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2015
    Messages : 52
    Points : 27
    Points
    27
    Par défaut
    Très bien reçu!!!

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

Discussions similaires

  1. [AC-2003] dlookup sur toutes les valeurs du jour
    Par chuspyto dans le forum IHM
    Réponses: 1
    Dernier message: 25/03/2010, 14h59
  2. IN avec AND sur toutes les valeurs
    Par dighan dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/10/2009, 15h35
  3. Condition sur toutes les valeurs d'un vecteur
    Par Newenda dans le forum MATLAB
    Réponses: 2
    Dernier message: 11/06/2009, 15h50
  4. Réponses: 0
    Dernier message: 09/12/2008, 17h29
  5. Problème d'en-têtes sur toutes les pages
    Par cladoo dans le forum Mise en forme
    Réponses: 1
    Dernier message: 04/03/2007, 13h14

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