Identifier le nombre le plus petit différent de 0 [Fermé]

Signaler
Messages postés
3
Date d'inscription
lundi 27 juin 2016
Statut
Membre
Dernière intervention
19 juillet 2016
-
Messages postés
1412
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
9 mars 2021
-
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

Messages postés
1412
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
9 mars 2021
152
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