OVH Cloud OVH Cloud

Mais où se tapit donc le max ?

9 réponses
Avatar
garnote
Bonsoir,

Cette macro trouve les «coordonnées» du maximum
de la plage nommée «mat».
Exemple :
À partir de ce tableau :
1 34 4
4 12 78
8 32 47
situé n'importe où sur une feuille de calcul,
la macro va trouver 2 et 3.
Ma question est de savoir si on peut procéder plus
simplement (VLOOKUP, MATCH,FIND ...)

Sub EmplacementDuMaximum()
Set ici = Range("mat")
LC = ici(1, 1).Row
CC = ici(1, 1).Column
maxi = WorksheetFunction.Max(ici)
For Each c In ici
If c.Value = maxi Then
cx = c.Row - LC + 1
cy = c.Column - CC + 1
Exit For
End If
Next
MsgBox "Coordonnées : " & cx & " " & cy
End Sub

Serge

9 réponses

Avatar
Ellimac
Bonjour Serge,

Sub Toto()
m = Application.Max(Range("mat"))
Range("mat").Find(m).Activate
lf = ActiveCell.Row
cf = ActiveCell.Column
ld = Range("mat").Row
cd = Range("mat").Column
decalligne = lf - ld + 1
decalcol = cf - cd + 1
End Sub

Camille

-----Message d'origine-----
Bonsoir,

Cette macro trouve les «coordonnées» du maximum
de la plage nommée «mat».
Exemple :
À partir de ce tableau :
1 34 4
4 12 78
8 32 47
situé n'importe où sur une feuille de calcul,
la macro va trouver 2 et 3.
Ma question est de savoir si on peut procéder plus
simplement (VLOOKUP, MATCH,FIND ...)

Sub EmplacementDuMaximum()
Set ici = Range("mat")
LC = ici(1, 1).Row
CC = ici(1, 1).Column
maxi = WorksheetFunction.Max(ici)
For Each c In ici
If c.Value = maxi Then
cx = c.Row - LC + 1
cy = c.Column - CC + 1
Exit For
End If
Next
MsgBox "Coordonnées : " & cx & " " & cy
End Sub

Serge


.



Avatar
AV
Sub zz_EmplacementDuMaximum()
cx = [min(if(maths=max(maths),row(maths),""""))]
cy = [min(if(maths=max(maths),column(maths),""""))]
MsgBox "Coordonnées : " & cx & " " & cy
End Sub

AV
Avatar
garnote
Ouais, il suffisait d'y penser !
Serge, mon prof d'informatique m'a dit que
c'était facile de programmer VBA.
Est-ce exact ?
Effectivement, c'est vraiment très simple.
Voici d'ailleurs un exemple qui devrait vous convaincre :

Sub zz_EmplacementDuMaximum()
cx = [min(if(maths=max(maths),row(maths),""""))]
cy = [min(if(maths=max(maths),column(maths),""""))]
MsgBox "Coordonnées : " & cx & " " & cy
End Sub

:-)))

Serge
Avatar
ChrisV
Bonjour Serge,

Ou encore, avec la plage de données nommée ici Zn...

Sub recMax()
Dim c As Range
For Each c In Range("Zn")
If c.Value = Application.Max(Range("Zn")) Then _
MsgBox c.Address: Exit For
Next c
End Sub

ou adaptation d'une matricielle...

Sub recMax()
MsgBox
[ADDRESS(MIN(IF(Zn=MAX(Zn),ROW(Zn))),MIN(IF(Zn=MAX(Zn),COLUMN(Zn))))]
End Sub


ChrisV


"garnote" a écrit dans le message de news:
IayNb.30911$
Bonsoir,

Cette macro trouve les «coordonnées» du maximum
de la plage nommée «mat».
Exemple :
À partir de ce tableau :
1 34 4
4 12 78
8 32 47
situé n'importe où sur une feuille de calcul,
la macro va trouver 2 et 3.
Ma question est de savoir si on peut procéder plus
simplement (VLOOKUP, MATCH,FIND ...)

Sub EmplacementDuMaximum()
Set ici = Range("mat")
LC = ici(1, 1).Row
CC = ici(1, 1).Column
maxi = WorksheetFunction.Max(ici)
For Each c In ici
If c.Value = maxi Then
cx = c.Row - LC + 1
cy = c.Column - CC + 1
Exit For
End If
Next
MsgBox "Coordonnées : " & cx & " " & cy
End Sub

Serge




Avatar
Daniel.M
Hello,

Attention les amis, cela ne fonctionne pas toujours si on a des doublons comme
maximum.

La solution alternative si on n'a que des entiers est de constuire un nombre où
l'on a multiplié par 1/512 du numéro de colonne (ainsi on a des entrées
uniques).

Salutations,

Daniel M.

"garnote" wrote in message
news:hizNb.30920$
Ouais, il suffisait d'y penser !
Serge, mon prof d'informatique m'a dit que
c'était facile de programmer VBA.
Est-ce exact ?
Effectivement, c'est vraiment très simple.
Voici d'ailleurs un exemple qui devrait vous convaincre :

Sub zz_EmplacementDuMaximum()
cx = [min(if(maths=max(maths),row(maths),""""))]
cy = [min(if(maths=max(maths),column(maths),""""))]
MsgBox "Coordonnées : " & cx & " " & cy
End Sub

:-)))

Serge




Avatar
garnote
L'art est long et la vie est courte !

Serge

"ChrisV" a écrit dans le message de news:

Bonjour Serge,

Ou encore, avec la plage de données nommée ici Zn...

Sub recMax()
Dim c As Range
For Each c In Range("Zn")
If c.Value = Application.Max(Range("Zn")) Then _
MsgBox c.Address: Exit For
Next c
End Sub

ou adaptation d'une matricielle...

Sub recMax()
MsgBox
[ADDRESS(MIN(IF(Zn=MAX(Zn),ROW(Zn))),MIN(IF(Zn=MAX(Zn),COLUMN(Zn))))]
End Sub


ChrisV


"garnote" a écrit dans le message de news:
IayNb.30911$
Bonsoir,

Cette macro trouve les «coordonnées» du maximum
de la plage nommée «mat».
Exemple :
À partir de ce tableau :
1 34 4
4 12 78
8 32 47
situé n'importe où sur une feuille de calcul,
la macro va trouver 2 et 3.
Ma question est de savoir si on peut procéder plus
simplement (VLOOKUP, MATCH,FIND ...)

Sub EmplacementDuMaximum()
Set ici = Range("mat")
LC = ici(1, 1).Row
CC = ici(1, 1).Column
maxi = WorksheetFunction.Max(ici)
For Each c In ici
If c.Value = maxi Then
cx = c.Row - LC + 1
cy = c.Column - CC + 1
Exit For
End If
Next
MsgBox "Coordonnées : " & cx & " " & cy
End Sub

Serge








Avatar
Frédo P
Bonsoir Serge
Celle ci le fait aussi, si je n'me trompe?
Sub Mx()
[A5] = [mat].Find(Application.Max([mat]), LookIn:=xlValue).Address
End Sub

--
Fred
"garnote" a écrit dans le message de news:
QyzNb.30925$

L'art est long et la vie est courte !

Serge

"ChrisV" a écrit dans le message de news:

Bonjour Serge,

Ou encore, avec la plage de données nommée ici Zn...

Sub recMax()
Dim c As Range
For Each c In Range("Zn")
If c.Value = Application.Max(Range("Zn")) Then _
MsgBox c.Address: Exit For
Next c
End Sub

ou adaptation d'une matricielle...

Sub recMax()
MsgBox
[ADDRESS(MIN(IF(Zn=MAX(Zn),ROW(Zn))),MIN(IF(Zn=MAX(Zn),COLUMN(Zn))))]
End Sub


ChrisV


"garnote" a écrit dans le message de news:
IayNb.30911$
Bonsoir,

Cette macro trouve les «coordonnées» du maximum
de la plage nommée «mat».
Exemple :
À partir de ce tableau :
1 34 4
4 12 78
8 32 47
situé n'importe où sur une feuille de calcul,
la macro va trouver 2 et 3.
Ma question est de savoir si on peut procéder plus
simplement (VLOOKUP, MATCH,FIND ...)

Sub EmplacementDuMaximum()
Set ici = Range("mat")
LC = ici(1, 1).Row
CC = ici(1, 1).Column
maxi = WorksheetFunction.Max(ici)
For Each c In ici
If c.Value = maxi Then
cx = c.Row - LC + 1
cy = c.Column - CC + 1
Exit For
End If
Next
MsgBox "Coordonnées : " & cx & " " & cy
End Sub

Serge












Avatar
garnote
Je crois que si et un tipeu modifié :

Sub Mx()
Set ici = [mat].Find(Application.Max([mat]), LookIn:=xlValue)
MsgBox ici.Row & " " & ici.Column
End Sub

Serge

"Frédo P" a écrit dans le message de news:

Bonsoir Serge
Celle ci le fait aussi, si je n'me trompe?
Sub Mx()
[A5] = [mat].Find(Application.Max([mat]), LookIn:=xlValue).Address
End Sub

--
Fred
"garnote" a écrit dans le message de news:
QyzNb.30925$

L'art est long et la vie est courte !

Serge

"ChrisV" a écrit dans le message de news:

Bonjour Serge,

Ou encore, avec la plage de données nommée ici Zn...

Sub recMax()
Dim c As Range
For Each c In Range("Zn")
If c.Value = Application.Max(Range("Zn")) Then _
MsgBox c.Address: Exit For
Next c
End Sub

ou adaptation d'une matricielle...

Sub recMax()
MsgBox
[ADDRESS(MIN(IF(Zn=MAX(Zn),ROW(Zn))),MIN(IF(Zn=MAX(Zn),COLUMN(Zn))))]
End Sub


ChrisV


"garnote" a écrit dans le message de news:
IayNb.30911$
Bonsoir,

Cette macro trouve les «coordonnées» du maximum
de la plage nommée «mat».
Exemple :
À partir de ce tableau :
1 34 4
4 12 78
8 32 47
situé n'importe où sur une feuille de calcul,
la macro va trouver 2 et 3.
Ma question est de savoir si on peut procéder plus
simplement (VLOOKUP, MATCH,FIND ...)

Sub EmplacementDuMaximum()
Set ici = Range("mat")
LC = ici(1, 1).Row
CC = ici(1, 1).Column
maxi = WorksheetFunction.Max(ici)
For Each c In ici
If c.Value = maxi Then
cx = c.Row - LC + 1
cy = c.Column - CC + 1
Exit For
End If
Next
MsgBox "Coordonnées : " & cx & " " & cy
End Sub

Serge
















Avatar
garnote
Oups, j'avais oublié la question initiale.
Il fallait trouver la position par rapport
au coin supérieur gauche de «mat» !

Serge

"garnote" a écrit dans le message de news:
9NDNb.30968$
Je crois que si et un tipeu modifié :

Sub Mx()
Set ici = [mat].Find(Application.Max([mat]), LookIn:=xlValue)
MsgBox ici.Row & " " & ici.Column
End Sub

Serge

"Frédo P" a écrit dans le message de news:

Bonsoir Serge
Celle ci le fait aussi, si je n'me trompe?
Sub Mx()
[A5] = [mat].Find(Application.Max([mat]), LookIn:=xlValue).Address
End Sub

--
Fred
"garnote" a écrit dans le message de news:
QyzNb.30925$

L'art est long et la vie est courte !

Serge

"ChrisV" a écrit dans le message de news:

Bonjour Serge,

Ou encore, avec la plage de données nommée ici Zn...

Sub recMax()
Dim c As Range
For Each c In Range("Zn")
If c.Value = Application.Max(Range("Zn")) Then _
MsgBox c.Address: Exit For
Next c
End Sub

ou adaptation d'une matricielle...

Sub recMax()
MsgBox

[ADDRESS(MIN(IF(Zn=MAX(Zn),ROW(Zn))),MIN(IF(Zn=MAX(Zn),COLUMN(Zn))))]




End Sub


ChrisV


"garnote" a écrit dans le message de news:
IayNb.30911$
Bonsoir,

Cette macro trouve les «coordonnées» du maximum
de la plage nommée «mat».
Exemple :
À partir de ce tableau :
1 34 4
4 12 78
8 32 47
situé n'importe où sur une feuille de calcul,
la macro va trouver 2 et 3.
Ma question est de savoir si on peut procéder plus
simplement (VLOOKUP, MATCH,FIND ...)

Sub EmplacementDuMaximum()
Set ici = Range("mat")
LC = ici(1, 1).Row
CC = ici(1, 1).Column
maxi = WorksheetFunction.Max(ici)
For Each c In ici
If c.Value = maxi Then
cx = c.Row - LC + 1
cy = c.Column - CC + 1
Exit For
End If
Next
MsgBox "Coordonnées : " & cx & " " & cy
End Sub

Serge