maximum d'une colonne dans un tableau dynamique

Le
fetnat
Bonjour,

Dans un tableau dynamique de 30 lignes par 3 colonnes :

Puis-je obtenir le maximum d'une colonne (ici la troisième colonne) dans
un tableau dynamique ?
par un truc du genre iMaxecart = Application.Max(tabtlr(, 3))

iPt = 30
ReDim tabtlr(1 To iPt, 1 To 3)
For i = LBound(tabtlr) To UBound(tabtlr)
tabtlr(i, 1) = Cells(i + 11, 6) ' col 1 : le prix
tabtlr(i, 2) = Range("R1") * i + Range("S1") ' col 2 : Y
tabtlr(i, 3) = Abs(tabtlr(i, 1) - tabtlr(i, 2)) ' col 3 : l'écart
Debug.Print 1; tabtlr(i, 1); tabtlr(i, 2); tabtlr(i, 3)
Next i
iMaxecart = Application.Max(tabtlr(, 3)) 'LIGNE DOUTEUSE

Ou bien dois-je faire une comparaison à chaque boucle pour voir si la
valeur est supérieure aux précédentes et la stocker en cas de maxi ?

Merci pour l'aide

fetnat
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #5175331
Pour obtenir la valeur maximale d'un champ dans un tableau croisé dynamique :

PivotTables(1) : tu peux remplacer l'index 1 par le nom de ton TCD
il en va de même pour PivotItems(1) -> l'index que tu peux remplacer
par le nom du champ


With Feuil1 ' Nom de la feuille à adapter
With .PivotTables(1).DataPivotField.PivotItems(1)
Msgbox Application.Max(.DataRange)
End With
End With




"fetnat" u44U0%
Bonjour,

Dans un tableau dynamique de 30 lignes par 3 colonnes :

Puis-je obtenir le maximum d'une colonne (ici la troisième colonne) dans
un tableau dynamique ?
par un truc du genre iMaxecart = Application.Max(tabtlr(..., 3))

iPt = 30
ReDim tabtlr(1 To iPt, 1 To 3)
For i = LBound(tabtlr) To UBound(tabtlr)
tabtlr(i, 1) = Cells(i + 11, 6) ' col 1 : le prix
tabtlr(i, 2) = Range("R1") * i + Range("S1") ' col 2 : Y
tabtlr(i, 3) = Abs(tabtlr(i, 1) - tabtlr(i, 2)) ' col 3 : l'écart
Debug.Print 1; tabtlr(i, 1); tabtlr(i, 2); tabtlr(i, 3)
Next i
iMaxecart = Application.Max(tabtlr(..., 3)) 'LIGNE DOUTEUSE

Ou bien dois-je faire une comparaison à chaque boucle pour voir si la
valeur est supérieure aux précédentes et la stocker en cas de maxi ?

Merci pour l'aide

fetnat
fetnat
Le #5235481
Bonjour MichDenis,

Je n'arrive pas à adapter ce que vous me dites dans un array (30,3).
iMaxecart = Application.Max(tabtlr()) me retourne la plus grande valeur
de l'array, toutes colonnes confondues.
Comment obtenir le max de la colonne N°3 en conservant les trois colonnes ?

Toutefois je pourrais contourner par un redim preserve pour garder la
troisième colonne, et faire un max. Mais je n'arrive pas à
redimensionner vers une seule colonne...

ReDim Preserve tabtlr(1 To iPt) erreur 9 hors selection
iMaxecart = Application.Max(tabtlr())

Merci pour votre aide

fetnat

Pour obtenir la valeur maximale d'un champ dans un tableau croisé dynamique :

PivotTables(1) : tu peux remplacer l'index 1 par le nom de ton TCD
il en va de même pour PivotItems(1) -> l'index que tu peux remplacer
par le nom du champ


With Feuil1 ' Nom de la feuille à adapter
With .PivotTables(1).DataPivotField.PivotItems(1)
Msgbox Application.Max(.DataRange)
End With
End With




"fetnat" u44U0%
Bonjour,

Dans un tableau dynamique de 30 lignes par 3 colonnes :

Puis-je obtenir le maximum d'une colonne (ici la troisième colonne) dans
un tableau dynamique ?
par un truc du genre iMaxecart = Application.Max(tabtlr(..., 3))

iPt = 30
ReDim tabtlr(1 To iPt, 1 To 3)
For i = LBound(tabtlr) To UBound(tabtlr)
tabtlr(i, 1) = Cells(i + 11, 6) ' col 1 : le prix
tabtlr(i, 2) = Range("R1") * i + Range("S1") ' col 2 : Y
tabtlr(i, 3) = Abs(tabtlr(i, 1) - tabtlr(i, 2)) ' col 3 : l'écart
Debug.Print 1; tabtlr(i, 1); tabtlr(i, 2); tabtlr(i, 3)
Next i
iMaxecart = Application.Max(tabtlr(..., 3)) 'LIGNE DOUTEUSE

Ou bien dois-je faire une comparaison à chaque boucle pour voir si la
valeur est supérieure aux précédentes et la stocker en cas de maxi ?

Merci pour l'aide

fetnat




JB
Le #5235451
Bonjour,

a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}") ' tableau à 2
dimensions
x = Application.Max(Application.Index(a, 2)) ' max de la 2 ligne
y = Application.Max(Application.Index(a, , 2)) ' max de la 2
colonne

JB


On 5 mar, 13:51, fetnat
Bonjour,

Dans un tableau dynamique de 30 lignes par 3 colonnes :

Puis-je obtenir le maximum d'une colonne (ici la troisième colonne) dans
un tableau dynamique ?
par un truc du genre     iMaxecart = Application.Max(tabtlr(..., 3))

iPt = 30
ReDim tabtlr(1 To iPt, 1 To 3)
For i = LBound(tabtlr) To UBound(tabtlr)
     tabtlr(i, 1) = Cells(i + 11, 6)   '   col 1 : le prix
     tabtlr(i, 2) = Range("R1") * i + Range("S1")  '   col 2 : Y
     tabtlr(i, 3) = Abs(tabtlr(i, 1) - tabtlr(i, 2)) '   col 3 : l'écart
     Debug.Print 1; tabtlr(i, 1); tabtlr(i, 2); tabtlr(i, 3)
Next i
iMaxecart = Application.Max(tabtlr(..., 3)) 'LIGNE DOUTEUSE

Ou bien dois-je faire une comparaison à chaque boucle pour voir si la
valeur est supérieure aux précédentes et la stocker en cas de maxi ?

Merci pour l'aide

fetnat


JB
Le #5235441
a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}") ' tableau à 2
dimensions
b = Application.Index(a, 2) ' tableau à 1
dimension
MsgBox b(1)
c = Application.Index(a, , 2)
MsgBox c(1, 1)

JB



On 5 mar, 14:51, JB
Bonjour,

  a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}")     ' tableau à 2
dimensions
  x = Application.Max(Application.Index(a, 2))   ' max de la 2 ligne
  y = Application.Max(Application.Index(a, , 2))  ' max de la 2
colonne

JB

On 5 mar, 13:51, fetnat


Bonjour,

Dans un tableau dynamique de 30 lignes par 3 colonnes :

Puis-je obtenir le maximum d'une colonne (ici la troisième colonne) da ns
un tableau dynamique ?
par un truc du genre     iMaxecart = Application.Max(tabtlr(..., 3 ))

iPt = 30
ReDim tabtlr(1 To iPt, 1 To 3)
For i = LBound(tabtlr) To UBound(tabtlr)
     tabtlr(i, 1) = Cells(i + 11, 6)   '   col 1 : le prix
     tabtlr(i, 2) = Range("R1") * i + Range("S1")  '   col 2 : Y
     tabtlr(i, 3) = Abs(tabtlr(i, 1) - tabtlr(i, 2)) '   col 3 : l'écart
     Debug.Print 1; tabtlr(i, 1); tabtlr(i, 2); tabtlr(i, 3)
Next i
iMaxecart = Application.Max(tabtlr(..., 3)) 'LIGNE DOUTEUSE

Ou bien dois-je faire une comparaison à chaque boucle pour voir si la
valeur est supérieure aux précédentes et la stocker en cas de maxi ?

Merci pour l'aide

fetnat- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



fetnat
Le #5235391
Bonjour JB,

Il y a des choses qui ne s'invente pas ... Merci pour votre aide.

Votre premier exemple me laisse admiratif et il fonctionne bien.

Le deuxième exemple me laisse songeur.

J'essaye d'extrapoler pour mettre mon array tabtlr() dans l'evaluate
a = Evaluate(tabtlr())
Il me retourne le maxi qui se trouve en colonne 1.

les parenthèse il n'aime pas : a = Evaluate({tabtlr()}) erreur de compil

Comment faire un evaluate d'un array defini par un nom et déjà rempli ?
Je pourrais alors utiliser application.index

Cordialement

fetnat

a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}") ' tableau à 2
dimensions
b = Application.Index(a, 2) ' tableau à 1
dimension
MsgBox b(1)
c = Application.Index(a, , 2)
MsgBox c(1, 1)

JB



On 5 mar, 14:51, JB
Bonjour,

a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}") ' tableau à 2
dimensions
x = Application.Max(Application.Index(a, 2)) ' max de la 2 ligne
y = Application.Max(Application.Index(a, , 2)) ' max de la 2
colonne

JB

On 5 mar, 13:51, fetnat


Bonjour,
Dans un tableau dynamique de 30 lignes par 3 colonnes :
Puis-je obtenir le maximum d'une colonne (ici la troisième colonne) dans
un tableau dynamique ?
par un truc du genre iMaxecart = Application.Max(tabtlr(..., 3))
iPt = 30
ReDim tabtlr(1 To iPt, 1 To 3)
For i = LBound(tabtlr) To UBound(tabtlr)
tabtlr(i, 1) = Cells(i + 11, 6) ' col 1 : le prix
tabtlr(i, 2) = Range("R1") * i + Range("S1") ' col 2 : Y
tabtlr(i, 3) = Abs(tabtlr(i, 1) - tabtlr(i, 2)) ' col 3 : l'écart
Debug.Print 1; tabtlr(i, 1); tabtlr(i, 2); tabtlr(i, 3)
Next i
iMaxecart = Application.Max(tabtlr(..., 3)) 'LIGNE DOUTEUSE
Ou bien dois-je faire une comparaison à chaque boucle pour voir si la
valeur est supérieure aux précédentes et la stocker en cas de maxi ?
Merci pour l'aide
fetnat- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -







JB
Le #5235381
Sur cet exemple, Evaluate est utilisé seulement pour alimenter un
tableau a(,).

iMaxecart = Application.Max(Application.Index(tabtlr, ,3)) pour
obtenir le Max de la 3e colonne du tableau.

http://boisgontierjacques.free.fr/pages_site/tableaux.htm

JB

On 5 mar, 15:37, fetnat
Bonjour JB,

Il y a des choses qui ne s'invente pas ... Merci pour votre aide.

Votre premier exemple me laisse admiratif et il fonctionne bien.

Le deuxième exemple me laisse songeur.

J'essaye d'extrapoler pour mettre mon array tabtlr() dans l'evaluate
a = Evaluate(tabtlr())
Il me retourne le maxi qui se trouve en colonne 1.

les parenthèse il n'aime pas : a = Evaluate({tabtlr()}) erreur de comp il

Comment faire un evaluate d'un array defini par un nom et déjà rempli ?
Je pourrais alors utiliser application.index

Cordialement

fetnat




  a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}")   ' tableau à 2
dimensions
  b = Application.Index(a, 2)                           ' tableau à 1
dimension
  MsgBox b(1)
  c = Application.Index(a, , 2)
  MsgBox c(1, 1)

JB

On 5 mar, 14:51, JB
Bonjour,

  a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}")     ' tableau à 2
dimensions
  x = Application.Max(Application.Index(a, 2))   ' max de la 2 li gne
  y = Application.Max(Application.Index(a, , 2))  ' max de la 2
colonne

JB

On 5 mar, 13:51, fetnat
Bonjour,
Dans un tableau dynamique de 30 lignes par 3 colonnes :
Puis-je obtenir le maximum d'une colonne (ici la troisième colonne) dans
un tableau dynamique ?
par un truc du genre     iMaxecart = Application.Max(tabtlr(..., 3))
iPt = 30
ReDim tabtlr(1 To iPt, 1 To 3)
For i = LBound(tabtlr) To UBound(tabtlr)
     tabtlr(i, 1) = Cells(i + 11, 6)   '   col 1 : le prix
     tabtlr(i, 2) = Range("R1") * i + Range("S1")  '   col 2 : Y
     tabtlr(i, 3) = Abs(tabtlr(i, 1) - tabtlr(i, 2)) '   col 3 : l'écart
     Debug.Print 1; tabtlr(i, 1); tabtlr(i, 2); tabtlr(i, 3)
Next i
iMaxecart = Application.Max(tabtlr(..., 3)) 'LIGNE DOUTEUSE
Ou bien dois-je faire une comparaison à chaque boucle pour voir si l a
valeur est supérieure aux précédentes et la stocker en cas de ma xi ?
Merci pour l'aide
fetnat- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -




- Afficher le texte des messages précédents -





fetnat
Le #5235351
Génial, c'est exactement ce que je souhaitais.

et la référence du site passe dans les favoris. Je me lance dans les
arrays, c'est décidé... :)

Bonne journée et encore merci

fetnat

Sur cet exemple, Evaluate est utilisé seulement pour alimenter un
tableau a(,).

iMaxecart = Application.Max(Application.Index(tabtlr, ,3)) pour
obtenir le Max de la 3e colonne du tableau.

http://boisgontierjacques.free.fr/pages_site/tableaux.htm

JB

On 5 mar, 15:37, fetnat
Bonjour JB,

Il y a des choses qui ne s'invente pas ... Merci pour votre aide.

Votre premier exemple me laisse admiratif et il fonctionne bien.

Le deuxième exemple me laisse songeur.

J'essaye d'extrapoler pour mettre mon array tabtlr() dans l'evaluate
a = Evaluate(tabtlr())
Il me retourne le maxi qui se trouve en colonne 1.

les parenthèse il n'aime pas : a = Evaluate({tabtlr()}) erreur de compil

Comment faire un evaluate d'un array defini par un nom et déjà rempli ?
Je pourrais alors utiliser application.index

Cordialement

fetnat




a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}") ' tableau à 2
dimensions
b = Application.Index(a, 2) ' tableau à 1
dimension
MsgBox b(1)
c = Application.Index(a, , 2)
MsgBox c(1, 1)
JB
On 5 mar, 14:51, JB
Bonjour,
a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}") ' tableau à 2
dimensions
x = Application.Max(Application.Index(a, 2)) ' max de la 2 ligne
y = Application.Max(Application.Index(a, , 2)) ' max de la 2
colonne
JB
On 5 mar, 13:51, fetnat
Bonjour,
Dans un tableau dynamique de 30 lignes par 3 colonnes :
Puis-je obtenir le maximum d'une colonne (ici la troisième colonne) dans
un tableau dynamique ?
par un truc du genre iMaxecart = Application.Max(tabtlr(..., 3))
iPt = 30
ReDim tabtlr(1 To iPt, 1 To 3)
For i = LBound(tabtlr) To UBound(tabtlr)
tabtlr(i, 1) = Cells(i + 11, 6) ' col 1 : le prix
tabtlr(i, 2) = Range("R1") * i + Range("S1") ' col 2 : Y
tabtlr(i, 3) = Abs(tabtlr(i, 1) - tabtlr(i, 2)) ' col 3 : l'écart
Debug.Print 1; tabtlr(i, 1); tabtlr(i, 2); tabtlr(i, 3)
Next i
iMaxecart = Application.Max(tabtlr(..., 3)) 'LIGNE DOUTEUSE
Ou bien dois-je faire une comparaison à chaque boucle pour voir si la
valeur est supérieure aux précédentes et la stocker en cas de maxi ?
Merci pour l'aide
fetnat- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -










MichDenis
Le #5235291
J'ai lu trop vite, je pensais que tu faisais référence
à un tableau croisé dynamique par cette phrase :

| Dans un tableau dynamique de 30 lignes par 3 colonnes
fetnat
Le #5235261
Pas de soucis, JB a résolu le mystère à la perfection.

Merci et bonne journée

fetnat

J'ai lu trop vite, je pensais que tu faisais référence
à un tableau croisé dynamique par cette phrase :

| Dans un tableau dynamique de 30 lignes par 3 colonnes





Publicité
Poster une réponse
Anonyme