adresse

Le
Jacquouille
Bonjour
J'éprouve des difficultés pour trouver l'adresse de la cellule qui contient
le MAX dans un tableau de quelques colonnes et lignes.
Existe-t-il une solutions formule et une autre VBA ?
Mille mercis et bonne soirée à toutes et tous.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
garnote
Le #18574531
Bonsoir,

Peut-être ainsi :

Sub Adresse()
Dim c As Range, m As Double
m = WorksheetFunction.Max(Range("plage"))
For Each c In Range("plage")
If c = m Then
ad = c.Address
Exit For
End If
Next c
MsgBox ad
End Sub

Serge


"Jacquouille"
Bonjour
J'éprouve des difficultés pour trouver l'adresse de la cellule qui contient le MAX dans un tableau de quelques colonnes et
lignes.
Existe-t-il une solutions formule et une autre VBA ?
Mille mercis et bonne soirée à toutes et tous.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.




garnote
Le #18574521
Ou bien ceci :

Function adressemax(p As Range) As String
Dim m As Double, c As Range
m = WorksheetFunction.Max(p)
For Each c In p
If c = m Then
ad = c.Address
Exit For
End If
Next c
adressemax = ad
End Function

Serge

"garnote"
Bonsoir,

Peut-être ainsi :

Sub Adresse()
Dim c As Range, m As Double
m = WorksheetFunction.Max(Range("plage"))
For Each c In Range("plage")
If c = m Then
ad = c.Address
Exit For
End If
Next c
MsgBox ad
End Sub

Serge


"Jacquouille"
Bonjour
J'éprouve des difficultés pour trouver l'adresse de la cellule qui contient le MAX dans un tableau de quelques colonnes et
lignes.
Existe-t-il une solutions formule et une autre VBA ?
Mille mercis et bonne soirée à toutes et tous.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.








garnote
Le #18574511
Application.Max(p) ou WorksheetFunction.Max(p)
Je ne sais jamais quelle syntaxe il faut choisir !

Serge



"garnote"
Ou bien ceci :

Function adressemax(p As Range) As String
Dim m As Double, c As Range
m = WorksheetFunction.Max(p)
For Each c In p
If c = m Then
ad = c.Address
Exit For
End If
Next c
adressemax = ad
End Function

Serge

"garnote"
Bonsoir,

Peut-être ainsi :

Sub Adresse()
Dim c As Range, m As Double
m = WorksheetFunction.Max(Range("plage"))
For Each c In Range("plage")
If c = m Then
ad = c.Address
Exit For
End If
Next c
MsgBox ad
End Sub

Serge


"Jacquouille"
Bonjour
J'éprouve des difficultés pour trouver l'adresse de la cellule qui contient le MAX dans un tableau de quelques colonnes
et lignes.
Existe-t-il une solutions formule et une autre VBA ?
Mille mercis et bonne soirée à toutes et tous.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.












michdenis
Le #18575061
si tu prends la méthode Find, tu vas avoir la réponse plus facilement

Dim Rg as range, Trouve as Range
set Rg = Worksheets("NomFeuille").range("A1:G25")
LeMax = Application.max(rg)
Trouve = Rg.Find(lemax, xlvalues, xlwhole)
if not trouve is nothing then
msgbox Trouve.Address
end if

"garnote"

Application.Max(p) ou WorksheetFunction.Max(p)
Je ne sais jamais quelle syntaxe il faut choisir !

Serge



"garnote"
Ou bien ceci :

Function adressemax(p As Range) As String
Dim m As Double, c As Range
m = WorksheetFunction.Max(p)
For Each c In p
If c = m Then
ad = c.Address
Exit For
End If
Next c
adressemax = ad
End Function

Serge

"garnote"
Bonsoir,

Peut-être ainsi :

Sub Adresse()
Dim c As Range, m As Double
m = WorksheetFunction.Max(Range("plage"))
For Each c In Range("plage")
If c = m Then
ad = c.Address
Exit For
End If
Next c
MsgBox ad
End Sub

Serge


"Jacquouille"
Bonjour
J'éprouve des difficultés pour trouver l'adresse de la cellule qui contient le MAX
dans un tableau de quelques colonnes
et lignes.
Existe-t-il une solutions formule et une autre VBA ?
Mille mercis et bonne soirée à toutes et tous.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.












garnote
Le #18575651
Ave,

J'ai du ajouter LookIn:= et Set Trouve = dans ta macro
pour qu'elle fonctionne. J'ai aussi enlevé le xlWhole,
n'ayant pas remarqué de différence dans le résultat obtenu.
J'ai alors voulu transformer ta Sub en Function et ça boguait
à l'instruction Set tr = p.Find(vm, LookIn:=xlValues)
Suite à de nombreuses tentatives infructueuses, pour une raison
que j'ignore, j'ai remplacé vm par CStr(vm) et là j'obtiens les
mêmes résultats qu'avec ta macro !!!
Cependant il ne faut pas que les nombres soient «gigantesques»
ou contiennent trop de décimales.
Un nombre entier ne doit pas contenir plus de 11 chiffres,
mais je ne saurais décrire les limitations de façon plus précise.
Que penses-tu de tout cela ?


Sub adresse()
Dim Rg As Range, Trouve As Range
Set Rg = Worksheets("Feuil1").Range("A1:G25")
lemax = Application.Max(Rg)
Set Trouve = Rg.Find(lemax, LookIn:=xlValues)
If Not Trouve Is Nothing Then
MsgBox Trouve.Address
Else
MsgBox "Ne s'applique pas."
End If
End Sub

Function admax(p As Range) As String
Application.Volatile
vm = Application.Max(p)
Set tr = p.Find(CStr(vm), LookIn:=xlValues)
If Not tr Is Nothing Then
admax = tr.Address
Else
admax = "Ne s'applique pas."
End If
End Function

Serge



"michdenis"
si tu prends la méthode Find, tu vas avoir la réponse plus facilement

Dim Rg as range, Trouve as Range
set Rg = Worksheets("NomFeuille").range("A1:G25")
LeMax = Application.max(rg)
Trouve = Rg.Find(lemax, xlvalues, xlwhole)
if not trouve is nothing then
msgbox Trouve.Address
end if

"garnote"

Application.Max(p) ou WorksheetFunction.Max(p)
Je ne sais jamais quelle syntaxe il faut choisir !

Serge



"garnote"
Ou bien ceci :

Function adressemax(p As Range) As String
Dim m As Double, c As Range
m = WorksheetFunction.Max(p)
For Each c In p
If c = m Then
ad = c.Address
Exit For
End If
Next c
adressemax = ad
End Function

Serge

"garnote"
Bonsoir,

Peut-être ainsi :

Sub Adresse()
Dim c As Range, m As Double
m = WorksheetFunction.Max(Range("plage"))
For Each c In Range("plage")
If c = m Then
ad = c.Address
Exit For
End If
Next c
MsgBox ad
End Sub

Serge


"Jacquouille"
Bonjour
J'éprouve des difficultés pour trouver l'adresse de la cellule qui contient le MAX
dans un tableau de quelques colonnes
et lignes.
Existe-t-il une solutions formule et une autre VBA ?
Mille mercis et bonne soirée à toutes et tous.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.















Coetera
Le #18576281
> J'éprouve des difficultés pour trouver l'adresse de la cellule qui contient le
MAX dans un tableau de quelques colonnes et lignes.
Existe-t-il une solutions formule



*****************

Une matricielle :

­RESSE(MIN(SI(laPlage=MAX(laPlage);LIGNE(laPlage)));MIN(SI((laPlage=MAX(laPlage))*(LIGNE(laPlage)=MIN(SI(laPlage=MAX(laPlage);LIGNE(laPlage))));COLONNE(laPlage))))

Etc
michdenis
Le #18577551
Ok pour l'oubli de "Set"

Pour ce qui est des paramètres, tu peux utiliser
"Find" sans définir les paramètres mais ce n'est pas
recommandé. Regarde dans l'aide l'explication s'y trouve.

Si la méthode Find, regarde ce texte que j'ai commis à
cette adresse...
http://xlwiki.free.fr/wiki/wakka.php?wiki=RechercheDate

"garnote"

Ave,

J'ai du ajouter LookIn:= et Set Trouve = dans ta macro
pour qu'elle fonctionne. J'ai aussi enlevé le xlWhole,
n'ayant pas remarqué de différence dans le résultat obtenu.
J'ai alors voulu transformer ta Sub en Function et ça boguait
à l'instruction Set tr = p.Find(vm, LookIn:=xlValues)
Suite à de nombreuses tentatives infructueuses, pour une raison
que j'ignore, j'ai remplacé vm par CStr(vm) et là j'obtiens les
mêmes résultats qu'avec ta macro !!!
Cependant il ne faut pas que les nombres soient «gigantesques»
ou contiennent trop de décimales.
Un nombre entier ne doit pas contenir plus de 11 chiffres,
mais je ne saurais décrire les limitations de façon plus précise.
Que penses-tu de tout cela ?


Sub adresse()
Dim Rg As Range, Trouve As Range
Set Rg = Worksheets("Feuil1").Range("A1:G25")
lemax = Application.Max(Rg)
Set Trouve = Rg.Find(lemax, LookIn:=xlValues)
If Not Trouve Is Nothing Then
MsgBox Trouve.Address
Else
MsgBox "Ne s'applique pas."
End If
End Sub

Function admax(p As Range) As String
Application.Volatile
vm = Application.Max(p)
Set tr = p.Find(CStr(vm), LookIn:=xlValues)
If Not tr Is Nothing Then
admax = tr.Address
Else
admax = "Ne s'applique pas."
End If
End Function

Serge



"michdenis"
si tu prends la méthode Find, tu vas avoir la réponse plus facilement

Dim Rg as range, Trouve as Range
set Rg = Worksheets("NomFeuille").range("A1:G25")
LeMax = Application.max(rg)
Trouve = Rg.Find(lemax, xlvalues, xlwhole)
if not trouve is nothing then
msgbox Trouve.Address
end if

"garnote"

Application.Max(p) ou WorksheetFunction.Max(p)
Je ne sais jamais quelle syntaxe il faut choisir !

Serge



"garnote"
Ou bien ceci :

Function adressemax(p As Range) As String
Dim m As Double, c As Range
m = WorksheetFunction.Max(p)
For Each c In p
If c = m Then
ad = c.Address
Exit For
End If
Next c
adressemax = ad
End Function

Serge

"garnote"
Bonsoir,

Peut-être ainsi :

Sub Adresse()
Dim c As Range, m As Double
m = WorksheetFunction.Max(Range("plage"))
For Each c In Range("plage")
If c = m Then
ad = c.Address
Exit For
End If
Next c
MsgBox ad
End Sub

Serge


"Jacquouille"
Bonjour
J'éprouve des difficultés pour trouver l'adresse de la cellule qui contient le MAX
dans un tableau de quelques colonnes
et lignes.
Existe-t-il une solutions formule et une autre VBA ?
Mille mercis et bonne soirée à toutes et tous.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.















Jacquouille
Le #18579811
Bonjour
Je prends connaissance de toutes ces réponses avec ravissement.
Mille mercis.
Pour ce qui est de la "grosseur" des nombres, pas de tracas car il s'agit
des points de Tir des élèves...donc, cela sera maximum 100,00. -))
Je vous remercie très sincèrement. Bonne fin de journée
Jacques.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"Jacquouille" news:
Bonjour
J'éprouve des difficultés pour trouver l'adresse de la cellule qui
contient le MAX dans un tableau de quelques colonnes et lignes.
Existe-t-il une solutions formule et une autre VBA ?
Mille mercis et bonne soirée à toutes et tous.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.




garnote
Le #18580701
Pour le plaisir et en m'inspirant de l'approche Coetara, une autre matricielle :
­RESSE(MAX(SI((plage=MAX(plage))*1*NON(ESTVIDE(plage));LIGNE(plage)));MAX(SI((plage=MAX(plage))*1*NON(ESTVIDE(plage));COLONNE(plage))))

Si la plage est vide : Elle renvoie #VALEUR!
Ne considère pas les cellules vides comme des zéros.
Si plusieurs valeurs maximales, donne l'adresse de la dernière
contrairement à celle de Coetera qui donne l'adresse de la première.
Et par exemple si la plage ne contient que deux valeurs, 0 et -12,
elle renvoie la bonne adresse.

Serge, impressionné par la formule de Coetara.



"Jacquouille"
Bonjour
Je prends connaissance de toutes ces réponses avec ravissement.
Mille mercis.
Pour ce qui est de la "grosseur" des nombres, pas de tracas car il s'agit des points de Tir des élèves...donc, cela sera
maximum 100,00. -))
Je vous remercie très sincèrement. Bonne fin de journée
Jacques.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"Jacquouille"
Bonjour
J'éprouve des difficultés pour trouver l'adresse de la cellule qui contient le MAX dans un tableau de quelques colonnes et
lignes.
Existe-t-il une solutions formule et une autre VBA ?
Mille mercis et bonne soirée à toutes et tous.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.








garnote
Le #18580841
> ­RESSE(MAX(SI((plage=MAX(plage))*1*NON(ESTVIDE(plage));LIGNE(plage)));MAX(SI((plage=MAX(plage))*1*NON(ESTVIDE(plage));COLONNE(plage))))



Les 1 sont superfétatoires ;-)

­RESSE(MAX(SI((plage=MAX(plage))*NON(ESTVIDE(plage));LIGNE(plage)));MAX(SI((plage=MAX(plage))*NON(ESTVIDE(plage));COLONNE(plage))))

Ce qui donne une formule beaucoup plus courte !

Si quelqu'un trouve plus court tout en obtenant le même résultat, je serai déconcrissé ;o)))

Serge
Publicité
Poster une réponse
Anonyme