Maximum d'une "plage variable"

francois1955

XLDnaute Junior
à Spitnolan08 et BrunoM45, désolé pour le retard et merci pour les syntaxes :
En effet Range("A" & i & ":A" & j) et "=MAX(A" & 1 & ":A" & i & ")" fonctionnent si on n’oublie pas de & !

En revanche , je ne sais pas comment calculer le Max d’une plage inconnue.
Je m’explique :
Disons que mon programme m’affiche des résultats, en fonction de variables i et de k, dans la plage "E6 :E10" et place mon curseur dans la cellule E11.
Je situe cette plage et son amplitude en fonction de i et k mas…comment programmer svp, le maximum de la plage "E6 :E10"?

J’ai pensé à une formule du style :
ActiveCell.FormulaR1C1 = "=MAX(R[-4]C:R[-1]C)" mais je ne connais pas la syntaxe avec des lettres.

J’ai pensé à récupérer le lettre E et les nombres 6 et 10 en utilisant les fonctions ligne, colonne ou cellule pour utiliser "=MAX(E" & x & ":E" & y & ")" mais je ne m’en sors pas.
Merci de toute aide.
 

cbea

XLDnaute Impliqué
Re : Maximum d'une "plage variable"

Bonjour Francois1955,

Je te propose les solutions suivantes :

- Résultat mis directement dans la cellule A1 :
Code:
Range("A1").Value = Application.WorksheetFunction.Max(Range("E6:E10"))
- Formule mise en A1 :
Code:
Range("A1").Formula = "=MAX(E6:E10)"
ou en mettant des variables pour les lignes :
Code:
Dim Lig1 As Long, Lig2 As Long
Lig1 = 6
Lig2 = 10
Range("A2").Formula = "=MAX(E" & Lig1 & ":E" & Lig2 & ")"
 

francois1955

XLDnaute Junior
Re : Maximum d'une "plage variable"

Merci Cbea mais je crois que je ne me suis pas fait comprendre:
Je ne sais pas que la plage est dans la colonne E.
Lors de l'exécution, en fonction de la variable i, le programme est allé remplir la plage dans la colonne E.
Mais comment demander maintenant le maximum de cette plage en fonction de i (et pas de E que je connais pas directement)?
Merci
 

francois1955

XLDnaute Junior
Re : Maximum d'une "plage variable"

'L'objet est de traiter une liste de nombres placés dans la colonne A (ici provisoirement 30)de la première feuille pour chercher ses "maxima relatifs" et d'indiquer alors l'écart avec le minimum relatif)

y = 30
For i = 0 To y - 1
a = Range("A1").Offset(i, O).Value: b = Range("A1").Offset(i + 1, O).Value: c = a - b
If c > 0 Then
Worksheets("e").Select: Worksheets("e").Range("A1").Offset(i, i) = c
' affichage du maximum relatif a:
Worksheets("e").Range("A1").Offset(i + 9, i) = a
k = i + 2
f = 2008
Do While f > 0
d = Range("A1").Offset(i, O).Value: e = Range("A1").Offset(k, O).Value: f = d - e
Worksheets("e").Range("A1").Offset(k - 1, i).Value = f
k = k + 1

'*******************************************
Ci-dessous le calcul des écarts. Ils sont placés dans la colonne k-1.
Je veux ensuite déterminer le plus gros de ces écarts dans la colonne k-1.Ci-dessous, par exemple, j'obtiendrais l'écart maximal parmi 4 cellules. Mais j'aimerais chercher celui sur i cellules et je ne sais pas quelle est la syntaxe avec une lettre.
'**************************************************

If f < 0 Then Worksheets("e").Range("A1").Offset(k - 1, i).Select: ActiveCell.FormulaR1C1 = "=MAX(R[-4]C:R[-1]C)": i = k - 2
If k > 30 Then GoTo fin
Loop
End If
Next i
 

francois1955

XLDnaute Junior
Re : Maximum d'une "plage variable"

erreur, confusion entre lignes et colonnes.
Les écarts ont été en fait placés dans la colonne i+1 et j'aimerais trouver leur maximum sur k-1 lignes.
Si je ne trouve pas la syntaxe, je ferai un tri. Malheureusement, cela fera des boucles supplémentaires
 

cbea

XLDnaute Impliqué
Re : Maximum d'une "plage variable"

Bonsoir,

Peux-tu essayer ceci ?

Code:
Dim Cell1 As String
Dim Cell2 As String

If f < 0 Then 
    Cell1 = Cells(k - 4, i).Address(rowabsolute:=False, columnabsolute:=False)
    Cell2 = Cells(k - 1, i).Address(rowabsolute:=False, columnabsolute:=False)
    Worksheets("e").Range("A1").Offset(k - 1, i).Select
    ActiveCell.Formula = "=MAX(" & Cell1 & ":" & Cell2 & ")"
    i = k - 2
End If
Merci
 

francois1955

XLDnaute Junior
Re : Maximum d'une "plage variable"

Waowwwwww, c'est exactement ce que je cherchais!
Mais d'où sors-tu une syntaxe pareille?
Adresss? absolute ? où peut-on trouver cela????
Chapeau bas et merci beaucoup!

Je m'étais débrouillé avec des boucles de tri mais ça va bien simplifier!
Merci encore
Francois
 

francois1955

XLDnaute Junior
fonction Adresse

Ok Cbea, je viens de comprendre qu'il s'agissait de la fonction Adresse de Excel mais je m'y perds dans toutes ces notations:
Elles différent selon la langue (francais,anglais),selon qu'elles se trouvent dans une cellule ou dans un code :

Ainsi, la notation que tu me donnes Cell1 = Cells(2, 3).Address(rowabsolute:=False, columnabsolute:=False) pour mon code semble correspondre à ADRESSE(2,3,4) ou ADRESSE(2,3,4,VRAI) dans une cellule.

Or le fonction Adresse dispose d'un cinquième paramètre possible (feuille_texte) qui représente une valeur de texte précisant le nom de la feuille de calcul à utiliser

Par exemple pour obtenir =ADRESSE(2,3,4,VRAI,"Feuil1") dans une cellule, l'enregistrement macro me donne ActiveCell.FormulaR1C1 = "=ADDRESS(2,3,4,TRUE,""Feuil1"")". Mais cela correspond à quoi dans la notation de Cbea. Autrement dit, que dois-je ajouter à Cells(2, 3).Address(rowabsolute:=False, columnabsolute:=False) pour avoir le quatrième et cinquième paramètre.
Merci beaucoup à celui qui pourra m'éclaircir.
 

Staple1600

XLDnaute Barbatruc
Re : Maximum d'une "plage variable"

Bonjour


Pour info

Cells(2, 3).Address(rowabsolute:=False, columnabsolute:=False)

peut s'écrire

Cells(2, 3).Address(0, 0)

Un moyen détourné
MsgBox Sheets(1).Name & "!" & Sheets(1).Cells(2, 3).Address(0, 0)
 
Dernière édition:

francois1955

XLDnaute Junior
Fonction Adresse

Cela m'a permis de comprendre qu'on pouvait ajouter le paramètre du type de référence:
Cells(2, 3).Address(0, 0, 0) renvoie la notation C2

Le dernier paramètre précisant le nom de la feuille de calcul ne semble pas pouvoir être ajouté à la liste mais il suffit de l'ajout en amont:
"Feuil1!" & Cells(2, 3).Address(0, 0)
Merci.
 

Discussions similaires

Statistiques des forums

Discussions
312 593
Messages
2 090 073
Membres
104 366
dernier inscrit
Porcelaine