Traduire formule max et min en VBA

Bonjour,

Je travaille sur deux fichiers, dont l'objectif est de connaitre la valeur max et min de sonde de températures.

Avec ces fonctions c'est possible :

 =MAX(Variations!A2:A10) 
 =MAX(Variations!A2:A10)
 

Hors, j'aimerais pouvoir l'écrire en VBA pour le faire apparaître de la même manière sur une autre feuille.

Application.WorksheetFunction.MAX(Range(s.Cells(1, i), s.Cells(ligfin, i)))
Application.WorksheetFunction.MIN(Range(s.Cells(1, i), s.Cells(ligfin, i))) 
 

Mais je n'arrive pas à grande chose d'autre...

Merci d'avance

7coloration.xlsm (23.75 Ko)

Bonjour,

Un essai à partir de votre formule :

Application.Max(s.Range(s.Cells(1, i), s.Cells(ligfin, i)))

Ou :

With s
   Application.Max(.Range(.Cells(1, i), .Cells(ligfin, i)))
End With

Merci Pedro22 pour votre réponse.

Comment je peux afficher le calcule dans une cellule à présent ?

Par exemple en prenant les valeurs max et min dans la "feuil1" écrire les valeurs correspondantes dans la "feuil2" ?

Merci pour votre aide.

Bonjour Tortank , le forum,

Salut Pedro22

Un exemple, regarde sur la feuille Tab....

7coloration.xlsm (29.39 Ko)

Cordialement,

Salut xorsankukai !

Merci Pedro22 pour votre réponse.

Comment je peux afficher le calcule dans une cellule à présent ?

Par exemple en prenant les valeurs max et min dans la "feuil1" écrire les valeurs correspondantes dans la "feuil2" ?

Merci pour votre aide.

Exemple :

Sheets(2).Range("A1") = Application.Max(s.Range(s.Cells(1, i), s.Cells(ligfin, i)))

Bonjour,

Et merci à tous les deux pour votre aide.

J'aurais juste une seconde requête concernant le code de @xorsankukai, comment est ce qu'on peut afficher dans la cellule correspondante par exemple à "C2" d'où provient le calcul ?

Exemple afficher :

 =MIN(Variations!A2:A10) 

dans la barre de formule de la cellule (toujours en VBA) et en reprenant votre code.

Merci beaucoup encore une fois.

4coloration-1.xlsm (29.39 Ko)

Je penserai bien à quelque chose comme ceci, mais malheureusement la syntaxe est fausse :

 .Range("B2") = Application.WorksheetFunction.Max(Range(s.Cells(2, 1), s.Cells(dl, 1))) = " =MAX(Variations!A2:A10)"

Je penserai bien à quelque chose comme ceci, mais malheureusement la syntaxe est fausse :

 .Range("B2") = Application.WorksheetFunction.Max(Range(s.Cells(2, 1), s.Cells(dl, 1))) = " =MAX(Variations!A2:A10)"

Il faut distinguer 2 propriétés d'une cellule :

Range("B2") correspond implicitement à Range("B2").Value, ce qui désigne la valeur stockée dans la cellule. Avec la syntaxe initialement proposée, on écrit juste le résultat de la fonction en dur dans la cellule (ce qui économise les ressources), mais le résultat ne s'actualise pas si les valeurs de la plage sur laquelle se base la formule changent.

Autre possibilité : écrire une formule Excel, tel qu'on le fait habituellement dans la barre de formule. Dans ce cas, on écrit dans la propriété Range("B2").Formula (ou .FormulaR1C1 ou .FormulaLocal, chacune ayant des spécificités propres). A tester :

Range("B2").Formula = "=MAX(Variations!A2:A10)"

A noter, c'est soit l'une soit l'autre, mais pas les 2 écritures simultanément.

Personnellement, je ne vois pour l'instant pas du tout l'intérêt de VBA dans l'histoire, puisqu'on écrit une formule que l'on pourrait très facilement faire directement dans Excel.

C'est parfait ! Vous avez résolu mon problème !

Merci infiniment

Rechercher des sujets similaires à "traduire formule max min vba"