Recherche de l'adresse de la valeur minimum d'une colonne

Bonjour,

J'ai deux colonnes: A et G.

Je cherche la valeur minimum dans la colonne G. Et je voudrais récupérer l'adresse de la cellule qui est dans la colonne A et sur la même ligne que le minimum de la colonne G.

Pour trouver le minimum j'ai utilisé la fonction suivante: WorksheetFunction.Min(Range("G:G"). Mais je n'arrive pas à récupérer le numéro de ligne de cette valeur.

Pouvez-vous m'aider?

Je vous remercie d'avance,

Matscoubi.

Salut,

à tester.

Pour info, s'il existe plusieurs fois la valeur min dans la colonne G, la macro les retrouvera toutes.

Sub Try()

Dim aa As Double
Dim myCell As Range, myAnchor As Range

aa = Application.WorksheetFunction.Min(Columns("G"))
Set myCell = Columns("G").Find(aa, , xlValues, xlWhole)
Set myAnchor = myCell
Do
    MsgBox Cells(myCell.Row, 1)
    Set myCell = Columns("G").Find(aa, myCell, xlValues, xlWhole)

Loop Until myAnchor.Address = myCell.Address
End Sub

Salut Game Over,

Merci pour ta réponse. Pourrais tu me donner quelques explications pour ton code.

Quand je le lance, j'obtiens erreur 91: Variable objet ou variable de bloc With non définie...

J'ai joint mon fichier.

49test-forum.xlsm (18.85 Ko)

Ta colonne G est configurée pour avoir 8 décimales après la virgule, or tes valeurs en ont 13.

Donc il faut changer le format de ta colonne G à 13 décimales après la virgule

J'ai changé le nombre de décimales de la colonne G dans le fichier que je vous ai envoyé et ça m'a tout l'air de marcher.

Par contre ça ne marche toujours pas dans mon fichier original même en changeant le nombre de décimales de la colonne G à 13. J'obtiens toujours la même erreur...

Bonjour @ tous,

Salut Game Over...

Déjà tes valeurs sont triées par ordre croissant, alors automatiquement la valeur minimum est la première...

Sinon, sous réserve d'avoir compris la demande, essayer avec :

=INDEX(A:A;EQUIV(MIN(G:G);G:G;0))

@ + +

envoie moi ton fichier original : tu trouveras mon adresse mail sous mon avatar

[EDIT]

Salut Rachid...

regarde la solution de R@chid

Si elle te convient, ton problème est résolu; sinon, envoie moi ton fichier

Salut rachid,

Merci pour ta réponse mais dans mon fichier original les valeurs ne sont pas rangées par ordre croissant. Après avoir atteint un maximum les valeurs décroient atteignent un minimum (proche de zéro) puis recroient...

Re,

Essayer d’abord la formule..

Elle va chercher la valeur minimale dans la colonne G et elle va renvoyer l’équivalente dans la même ligne en colonne A.

En cas de doublons de valeur minimale seule la première trouvée sera prise en compte.

@ + +

@Rachid: J'ai une erreur de syntaxe avec les point virgules que je n'arrive pas à résoudre. Pour info le code de Game Over fonctionne. C'était juste une histoire de décimale comme il m'avait dit.

@Game Over: ça fonctionne. Maintenant j'aimerai afficher la valeur dans une cellule. Car j'ai besoin de l'utiliser pour un autre calcul.

Si tu as le temps pourrais tu me donner quelques explications pour le code que tu as utilisé car je m'ai pas tout compris.

Merci infiniment en tout cas !

Re,

@Rachid: J'ai une erreur de syntaxe avec les point virgules que je n'arrive pas à résoudre.

Voir PJ

@ + +

48syntaxe.xlsx (10.45 Ko)

J'ai supprimé la fonction de recherche des doublons puisque, d'après ton fichier original, je suppose que ta valeur min n'apparait qu'une seule fois dans la colonne G et puisque le résultat doit être inscrit dans une cellule.

D'ailleurs, puisque tu veux le résultat dans une cellule, je pense qu'une formule, comme le propose R@chid est peut être plus appropriée dans ton cas de figure.

mais voici, quand même, les explications

Sub Try()
Application.ScreenUpdating = False 'désactive la fonction de mise à jour de l'écran pour accélérer la macro
Sheets("Calcul").Activate'sélectionne la feuille "Calcul"
Dim aa As Double 'déclare la variable aa comme étant une valeur avec décimale
Dim myCell As Range, myAnchor As Range ' déclare mycell et myanchor comme étant des plages

aa = Application.WorksheetFunction.Min(Columns("G")) 'attribue à aa la valeur min de la colonne G

Set myCell = Columns("G").Find(aa, , xlValues, xlWhole) 'ça c'est la fonction recherche :
'cherche la valeur aa dans la colonne G :
'aa doit être une valeur (xlvalues) :
'aa doit correspondre à la totalité de la chaine numérique (xlwhole) et pas seulement à une partie de la chaine
'enregistre dans la variable mycell la plage dans laquelle a été retrouvé le résultat de la recherche

    sheets("").Range("")=Cells(myCell.Row, 1)'mettre les noms du fichier et de la cellule respectives entre les ""
'va trouver la valeur de la colonne A (1) sur la même ligne que la cellule min dans la colonne G   (mycell.row) 

End Sub

@Rachid: Merci beaucoup, maintenant ça marche ! Mais si jamais ma fonction recroit après avoir atteint un minimum et redécroit et atteint de nouveau un minimum nous ne sommes pas sûre que la première valeur sera la plus petite. Or cette fonction nous donne la première valeur? Est ce correct?

@ Game Over: Merci pour toutes les explications! Tout est très clair maintenant !!

Bonne journée à vous deux !

Bonjour,

@Rachid: Merci beaucoup, maintenant ça marche ! Mais si jamais ma fonction recroit après avoir atteint un minimum et redécroit et atteint de nouveau un minimum nous ne sommes pas sûre que la première valeur sera la plus petite. Or cette fonction nous donne la première valeur? Est ce correct?

Ma formule fonctionne belle et bien avec ou sans tri..

@ + +

Okay super alors!

Merci encore!

Bonjour,

Je viens de me rendre compte d'un petit problème. Quand mes valeurs changent dans ma colonne G, il peut arriver que le nombre de décimales changent aussi. Quand je lance la macro, j'obtiens alors une erreur disant "incompatibilité de type" puisque le format des cellules de ma colonne G n'est plus adapté. Auriez vous une idée de comment résoudre ce problème?

Merci d'avaance !

Rechercher des sujets similaires à "recherche adresse valeur minimum colonne"