[excel VBA] transcrire la fonction max
Fermé
Anne-Sophie
-
7 déc. 2006 à 15:35
Iternity Messages postés 32 Date d'inscription mercredi 22 février 2012 Statut Membre Dernière intervention 27 février 2017 - 20 oct. 2015 à 21:17
Iternity Messages postés 32 Date d'inscription mercredi 22 février 2012 Statut Membre Dernière intervention 27 février 2017 - 20 oct. 2015 à 21:17
A voir également:
- Fonction max vba
- Fonction si et - Guide
- I14 pro max - Accueil - Guide téléphones
- Fonction moyenne excel - Guide
- Max tv gratuit - Télécharger - Télévision
- Max ou netflix - Accueil - Streaming
4 réponses
Utilisateur anonyme
7 déc. 2006 à 18:20
7 déc. 2006 à 18:20
Bonjour,
Démonstration:
Lupin
Démonstration:
Sub Test_Max_Sum() Dim Cellules As Range Dim LaCel As Range Set Cellules = Range("B9:L9") Set Cellules = ActiveSheet.Range("B9:L9") Range("B11").Value = Application.WorksheetFunction.Sum(Cellules) Range("B12").Value = Application.WorksheetFunction.Max(Cellules) For Each LaCel In Cellules If (LaCel.Value = Range("B12").Value) Then Range("B13").Value = LaCel.Column 'Range("B13").Value = LaCel.Address End If Next Range("A1").Select End Sub
Lupin
Utilisateur anonyme
9 déc. 2006 à 00:17
9 déc. 2006 à 00:17
re:
ce fut un plaisir, et si vous avez d'autres difficultés, n'hésité
par à revenir dans ce fil de discussion. Le reconnaissance
m'inspire toujours.
Lupin
ce fut un plaisir, et si vous avez d'autres difficultés, n'hésité
par à revenir dans ce fil de discussion. Le reconnaissance
m'inspire toujours.
Lupin
Pier-3d
Messages postés
67
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2024
1
9 mars 2009 à 15:52
9 mars 2009 à 15:52
Bonjour,
Je suis moi-même un néophyte et je me pose des questions en lisant le code
affiché ci-dessus.
Ces lignes ne sont-elles pas une répétition ?
alors que, dans l'énoncé du problème, ces cellules font partie de la plage à examiner
par la fonction Max().
Et, finalement...
par Anne-Sophie ?
Je ne connaissais pas la méthode « Application.WorksheetFunction ». Je viens d'apprendre
quelque chose de nouveau qui va m'être très utile. Merci beaucoup.
Je ne sais pas si je contreviens aux règles du forum en écrivant ce message qui est plutôt
une sous-question ? Si oui, aurait-il mieux d'adresser un message privé à M. Lupin ?
Pierre Cloutier
Je suis moi-même un néophyte et je me pose des questions en lisant le code
affiché ci-dessus.
Ces lignes ne sont-elles pas une répétition ?
Set Cellules = Range("B9:L9") Set Cellules = ActiveSheet.Range("B9:L9")Et ici :
Range("B11").Value = Application.WorksheetFunction.Sum(Cellules) Range("B12").Value = Application.WorksheetFunction.Max(Cellules)Je ne comprends vraiment pas. Vous modifiez les valeurs de B11, B12 et plus loin B13
alors que, dans l'énoncé du problème, ces cellules font partie de la plage à examiner
par la fonction Max().
Et, finalement...
Range("B12").Value = Application.WorksheetFunction.Max(Cellules)... cette ligne n'est-elle pas en elle-même une réponse complète au problème énoncé
par Anne-Sophie ?
Je ne connaissais pas la méthode « Application.WorksheetFunction ». Je viens d'apprendre
quelque chose de nouveau qui va m'être très utile. Merci beaucoup.
Je ne sais pas si je contreviens aux règles du forum en écrivant ce message qui est plutôt
une sous-question ? Si oui, aurait-il mieux d'adresser un message privé à M. Lupin ?
Pierre Cloutier
Utilisateur anonyme
>
Pier-3d
Messages postés
67
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2024
10 mars 2009 à 01:56
10 mars 2009 à 01:56
Bonjour,
Votre observation est tout à fait pertinente, et vous avez presque raison !
Il faut être capable de définir la plage
Set Cellules = Range("B9:L9")
est aussi un minimum bien que très peu explicite,
et la déclaration de la plage doit correspondre à la fonction demandé
qui est :
Application.WorksheetFunction.Max
Le Membre [ WorksheetFunction ] implique une feuille,
donc je recommande d'utilisé de façon plus explicite
la déclaration de la plage à une feuille :
Set Cellules = ActiveSheet.Range("B9:L9")
ou
Set Cellules = Sheets("MaFeuille").Range("B9:L9").
Un exemple frappant sur la façon d'appeller une fonction :-)
InputBox
Application.InputBox
Vous devriez y voir une différence :-)
et vous êtes bienvenue tout autant que moi,
pour ma part je suis un étranger ici :-)
quand j'ai du temps :-)
et parfois je code en quelques minutes ces jets d'improvisations,
je les tests et j'ai du probablement du rajouter la spécification
de la feuille en oubliant d'enlever la première ligne.
Lupin
Votre observation est tout à fait pertinente, et vous avez presque raison !
Il faut être capable de définir la plage
Set Cellules = Range("B9:L9")
est aussi un minimum bien que très peu explicite,
et la déclaration de la plage doit correspondre à la fonction demandé
qui est :
Application.WorksheetFunction.Max
Le Membre [ WorksheetFunction ] implique une feuille,
donc je recommande d'utilisé de façon plus explicite
la déclaration de la plage à une feuille :
Set Cellules = ActiveSheet.Range("B9:L9")
ou
Set Cellules = Sheets("MaFeuille").Range("B9:L9").
Un exemple frappant sur la façon d'appeller une fonction :-)
InputBox
Application.InputBox
Vous devriez y voir une différence :-)
et vous êtes bienvenue tout autant que moi,
pour ma part je suis un étranger ici :-)
quand j'ai du temps :-)
et parfois je code en quelques minutes ces jets d'improvisations,
je les tests et j'ai du probablement du rajouter la spécification
de la feuille en oubliant d'enlever la première ligne.
Lupin
Bonjour,
Ce thread se rapproche pas mal de mon problème (du moins je crois...). Je me permet donc de poster ici pour plus de cohérance.
J'utilise dans mon worksheet des regles de validation faisant appel à des ranges dynamiques. En gros, mes utilisateurs choisissent un pays, puis un district, puis un sous district, etc et j'aimerai qu'à chaque niveau les choix proposés soient cohérents avec le choix du niveau supérieur.
Ex. pour France, n'obtenir (en liste deroulante de validation) que les region francaises.
Dans mon worksheet la formule de validation est la suivante:
=OFFSET(levmomA1,MATCH(D9,Admin1_Ref,0),1,COUNTIF(Admin1_Ref,D9),1)
levmomA1 et Admin1_Ref sont des ranges et D9 refère a la valeur choisie au niveau supérieur.
Impossible de transférer ca en VBA (ou ces données doivent être entrée via des Combobox). Ma dernière tentative ressemble à ca:
'Define Ranges and their Formulas'
Dim RangeLevmomA1 As Range
Dim RangeAdmin1_Ref As Range
Dim ComboBox_Ad2Range As Range
Set RangeLevmomA1 = ActiveWorkbook.Worksheets("_geo").Range("levmomA1")
Set RangeAdmin1_Ref = ActiveWorkbook.Worksheets("_geo").Range("Admin1_Ref")
Set ComboBox_Ad2Range = ActiveWorkbook.Worksheets("_geo").WorksheetFunction.Offset(RangeLevmomA1, WorksheetFunction.Match(ComboBox_Ad1.Value, RangeAdmin1_Ref, 0), 1, WorksheetFunction.CountIf(RangeAdmin1_Ref, ComboBox_Ad1.Value), 1)
'Define ComboBox_Ad2 RowSource Definition'
ComboBox_Ad2.RowSource = ComboBox_Ad2Range
Si vous avez une idée... vous me sortiriez un cactus du pied...
Ce thread se rapproche pas mal de mon problème (du moins je crois...). Je me permet donc de poster ici pour plus de cohérance.
J'utilise dans mon worksheet des regles de validation faisant appel à des ranges dynamiques. En gros, mes utilisateurs choisissent un pays, puis un district, puis un sous district, etc et j'aimerai qu'à chaque niveau les choix proposés soient cohérents avec le choix du niveau supérieur.
Ex. pour France, n'obtenir (en liste deroulante de validation) que les region francaises.
Dans mon worksheet la formule de validation est la suivante:
=OFFSET(levmomA1,MATCH(D9,Admin1_Ref,0),1,COUNTIF(Admin1_Ref,D9),1)
levmomA1 et Admin1_Ref sont des ranges et D9 refère a la valeur choisie au niveau supérieur.
Impossible de transférer ca en VBA (ou ces données doivent être entrée via des Combobox). Ma dernière tentative ressemble à ca:
'Define Ranges and their Formulas'
Dim RangeLevmomA1 As Range
Dim RangeAdmin1_Ref As Range
Dim ComboBox_Ad2Range As Range
Set RangeLevmomA1 = ActiveWorkbook.Worksheets("_geo").Range("levmomA1")
Set RangeAdmin1_Ref = ActiveWorkbook.Worksheets("_geo").Range("Admin1_Ref")
Set ComboBox_Ad2Range = ActiveWorkbook.Worksheets("_geo").WorksheetFunction.Offset(RangeLevmomA1, WorksheetFunction.Match(ComboBox_Ad1.Value, RangeAdmin1_Ref, 0), 1, WorksheetFunction.CountIf(RangeAdmin1_Ref, ComboBox_Ad1.Value), 1)
'Define ComboBox_Ad2 RowSource Definition'
ComboBox_Ad2.RowSource = ComboBox_Ad2Range
Si vous avez une idée... vous me sortiriez un cactus du pied...
GafsiTN
Messages postés
6
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
20 avril 2010
1
15 oct. 2009 à 18:39
15 oct. 2009 à 18:39
Bonjour à tous,
Y'a -t un code VBA ou une formule qui me permet de résoudre ce problème?
Article Version Indice
IBB102110 0
IBB102110 5
IBB102110 9 OK
IBB102110 9 OK
IBB102194 3
IBB102194 3
IBB102194 3
IBB102194 4 OK
IBB102194 4 OK
IBB102194 4 OK
Je veux mettre dans une colonne un idex qui me dit que la dernière version est est la plus élevé
Je sais que c'est simple avec 5 lignes mais j'ai 17000 références à déterminer leurs dernières versions
Merci pour votre aide
Y'a -t un code VBA ou une formule qui me permet de résoudre ce problème?
Article Version Indice
IBB102110 0
IBB102110 5
IBB102110 9 OK
IBB102110 9 OK
IBB102194 3
IBB102194 3
IBB102194 3
IBB102194 4 OK
IBB102194 4 OK
IBB102194 4 OK
Je veux mettre dans une colonne un idex qui me dit que la dernière version est est la plus élevé
Je sais que c'est simple avec 5 lignes mais j'ai 17000 références à déterminer leurs dernières versions
Merci pour votre aide
Bonjour à tous,
J'ai une colonne de valeurs dans laquelle les valeurs passent par plusieurs min et plusieurs max, comment tous les obtenir car quand je fais par exemple max(A1:A200) je n'obtiens qu'un seul max c'est à dire le plus élevé et pareil pour min(A1:A200).
Y a t il une solution avec Excel VBA?
J'ai une colonne de valeurs dans laquelle les valeurs passent par plusieurs min et plusieurs max, comment tous les obtenir car quand je fais par exemple max(A1:A200) je n'obtiens qu'un seul max c'est à dire le plus élevé et pareil pour min(A1:A200).
Y a t il une solution avec Excel VBA?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 13/05/2013 à 11:58
Modifié par pijaku le 13/05/2013 à 11:58
Bonjour,
Sans VBA, il existe la formule :
=GRANDE.VALEUR(plage;n°) qui te renvoie, selon le n°, la plus grande, la seconde, la troisième plus grande valeur de ta plage.
Exemple :
=GRANDE.VALEUR(A1:A100;8) te renvoie la 8ème + grande valeur de la plage A1:A100
à l'inverse, tu trouveras la formule =PETITE.VALEUR(A1:A100;2)
Sans VBA, il existe la formule :
=GRANDE.VALEUR(plage;n°) qui te renvoie, selon le n°, la plus grande, la seconde, la troisième plus grande valeur de ta plage.
Exemple :
=GRANDE.VALEUR(A1:A100;8) te renvoie la 8ème + grande valeur de la plage A1:A100
à l'inverse, tu trouveras la formule =PETITE.VALEUR(A1:A100;2)
8 déc. 2006 à 10:16
Votre aide me retire une épine du pied, car c'est pour mon travail que je dois faire ceci.
Merci encore.
20 oct. 2015 à 21:17