Identifier le nombre le plus petit différent de 0

Fermé
BE-NAMCO Messages postés 3 Date d'inscription lundi 27 juin 2016 Statut Membre Dernière intervention 19 juillet 2016 - Modifié par BE-NAMCO le 19/07/2016 à 10:19
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 19 juil. 2016 à 16:24
Bonjour,

J'aimerai avoir une macro qui me permet d'identifier le nombre/chiffre le plus petit et qu'il soit différent de 0. Une fois le chiffre/nombre identifié, il va prendre le nom de la personne de la même ligne et le coller sur une case définie.

Exemple

A | B
Marion|5
Pierre|2
Jean|6

Le plus petit nombre est 2, celui ayant le plus petit nombre est Pierre. Donc, il va copier son nom et le mettre par exemple en case C1

Je vous remercie par avance de votre aide

Bien cordialement,

Be-Namco

1 réponse

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
19 juil. 2016 à 16:24
Bonjour Be-Namco, bonjour le forum,

Le code ci-dessous va renvoyer en C1 la première plus petite valeur, supérieure à zéro ! Si il y a des ex-æquo...

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim PP As Integer 'déclare la variable PP (Plus Petit)

Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
'condition : si la plus petite valeur de la colonne 2 (=B) est supérieure à 0
If Application.WorksheetFunction.Min(O.Columns(2)) > 0 Then
    PP = Application.WorksheetFunction.Min(O.Columns(2)) 'définit la variable PP
Else 'sinon
    PP = 1000 'définit une valeur bien supérieure à la valeur maximale
    For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
        'si la donnée ligne I colonne 2 de TV est inférieure a PP est supérieure à 0, redéfinit PP
        If TV(I, 2) < PP And TV(I, 2) > 0 Then PP = TV(I, 2)
    Next I 'prochaine ligne de la boucle
End If 'fin de la condition
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
    'si la donnée ligne I colonne 2 de TV est égale à PP, renvoi dans la cellule C1 la donnée ligne I colonne 1
    'du tableau des valeurs TV, sort de la procédure
    If TV(I, 2) = PP Then O.Range("C1").Value = TV(I, 1): Exit Sub
Next I 'prochaine ligne de la boucle
End Sub

0