Valeur MAX pour chaque colonne d'un tableau
Résolu
debutante
-
f894009 Messages postés 17413 Statut Membre -
f894009 Messages postés 17413 Statut Membre -
Bonjour,
je bloque sur un point et j'aimerais avoir votre aide la dessus svp, voici mon soucis:
dans une macro je fais la difference entre les valeurs de TCD et je stock le résultat dans une table DIFFTAB par devise(en colonne et par scenario ID en lignes comme ci-dessous
'On stocke dans un tableau les diff entre prod et test
Dim diffTab() As Double
ReDim diffTab(prodLastLine - 6, prodLastColumn - 2)
For i = 6 To prodLastLine - 1
For j = 2 To prodLastColumn - 1
diffTab(i - 5, j - 1) = Abs(prodTab(i - 5, j - 1) - testTab(i - 5, j - 1))
Next j
Next i
AU fait j'aimerais afficher dans un tableau final la valeur maximale par devise ( donc par colonne )
j'ai essayé certaines syntaxe genre max(range("A"))
mais ca ne me donne pas le résultat souhaité
qlq un aurait il une idée pour que je puisse inserer la fonction max dans ma boucle
merci d'avance
je bloque sur un point et j'aimerais avoir votre aide la dessus svp, voici mon soucis:
dans une macro je fais la difference entre les valeurs de TCD et je stock le résultat dans une table DIFFTAB par devise(en colonne et par scenario ID en lignes comme ci-dessous
'On stocke dans un tableau les diff entre prod et test
Dim diffTab() As Double
ReDim diffTab(prodLastLine - 6, prodLastColumn - 2)
For i = 6 To prodLastLine - 1
For j = 2 To prodLastColumn - 1
diffTab(i - 5, j - 1) = Abs(prodTab(i - 5, j - 1) - testTab(i - 5, j - 1))
Next j
Next i
AU fait j'aimerais afficher dans un tableau final la valeur maximale par devise ( donc par colonne )
j'ai essayé certaines syntaxe genre max(range("A"))
mais ca ne me donne pas le résultat souhaité
qlq un aurait il une idée pour que je puisse inserer la fonction max dans ma boucle
merci d'avance
A voir également:
- Application.worksheetfunction.max
- Tableau word - Guide
- Déplacer colonne excel - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Colonne word - Guide
je vous remercie du retour
en effet j'avais essayé cette syntaxe mais ca répond pas parfaitement a ce dont j'ai besoin car la on fait le max dans un worksheet
moi je souhaite applique ce max sur le tableau DiffTab() don,t j'ai mis le code dans mon topic
au fait ce tableau fait la difference entre les valeurs de 2TCD et donc dans une boucle
je souhaiterais avant de faire un affichage de faire le MAX de la valeur trouvé dans chaque colonne du tableau DIFFtab()
en partant de cela application.worksheetfunction ne marche pas :(
merci pour l'aide
A voir et adapter en fonction de ce que vous appelez colonne pour un tableau
'recheche max par colonne tableau
For i = 6 To prodLastLine - 1
For j = 2 To prodLastColumn - 1
If diffTab(i - 5, j - 1) >= Table_max(j - 1) Then
Table_max(j - 1) = diffTab(i - 4, j - 1)
End If
Next j Next i
End Sub
vous en pensez quoi ?
'On stocke dans un tableau les diff entre prod et test
Dim diffTab() As Double
Dim Table_max() As Double
ReDim diffTab(prodLastLine - 6, prodLastColumn - 2)
ReDim Table_max(prodLastLine - 6, prodLastColumn - 2)
Erase Table_max
For i = 6 To prodLastLine - 1
For j = 2 To prodLastColumn - 1
diffTab(i - 5, j - 1) = Abs(prodTab(i - 5, j - 1) - testTab(i - 5, j - 1))
Next j
Next i
'recheche max par colonne tableau
For i = 6 To prodLastLine - 1
For j = 2 To prodLastColumn - 1
If diffTab(i - 4, j - 1) >= diffTab(i - 5, j - 1) Then
Table_max(i - 5, j - 1) = diffTab(i - 4, j - 1) ' erreur a ce niveau
End If
Next j
Next i
'Il reste à afficher le tout dans la feuille GENERAL
Dim generalWorksheet As Worksheet
Set generalWorksheet = ThisWorkbook.Worksheets("GENERAL")
generalWorksheet.Select
generalWorksheet.Range("B2").Resize(UBound(Table_max, 1), UBound(Table_max, 2)) = Table_max
generalWorksheet.Range("B1").Resize(1, UBound(ccyTab)) = ccyTab
generalWorksheet.Range("A2").Resize(UBound(scenarioTab), 1) = Application.Transpose(scenarioTab)
End Sub
du coup il me mets un msg dérreur 9 : l'indice n'appartient pas à la sélection
vous auriez une idée d'ou peut venir une erreur pareil svp
merci
pourquoi
ReDim Table_max(prodLastLine - 6, prodLastColumn - 2)
alors que pour moi
ReDim Table_max(prodLastLine - 6) suffit !!!!!!!
l'indice n'appartient pas à la sélection Sur quelle ligne ???
A+
j'ai fais le ReDim Table_max(prodLastLine - 6, prodLastColumn - 2) après l'affichage de l'erreur
car j'ai pensée que le tableau de resultat devrait etre de 2dimensions et contient plusieurs colonnes
la table initiale difftab() ressemble a cela :
devise / eur / dollars ..... ...... ....
scenarioID1 / 156 / 83
scenarioID2 / 25 / 90
scenarioID3 / 14 / 55
scenarioID4 / 96 / 30
scenarioID5 / 145 / 42
scenarioID6 / 2 / 13
..... ... .... /
..... ... ...
..... .... ..
scenarioID19 / 654 / 19
sinon l'erreur s'affiche au niveau de la ligne suivante :
'recheche max par colonne tableau
For i = 6 To prodLastLine - 1
For j = 2 To prodLastColumn - 1
If diffTab(i - 4, j - 1) >= diffTab(i - 5, j - 1) Then
Table_max(i - 5, j - 1) = diffTab(i - 4, j - 1) ' erreur a ce niveau End If
Next j
Next i
meme avec table_max(j-1) l'erreur s'affiche
merci bcp