Bonjour à tous !
J'ai réaliser une macro où j'ai stocké l'ensemble de mes données sous forme de variables Tableaux (des matrices mathématiques)
Je voudrais savoir s'il est possible d'obtenir le minimum des valeurs d'une ligne ou d'une colonne d'un de ces matrices autrement que par des boucles.
Exemple : si le contenu de la matrice test est
1 4 6
2 5 1
1 2 4
je veux minimum ( matricetest(1 to 3,3)) = 1 (valeur), 2(ligne), 3(colonne)
soit que le code renvoie la valeur, la ligne et la colonne dans lesquelles se situe le résultat. si je lui demande le minimum de la colonne 3
et si il y a plusieurs valeurs en minimum, il me renvoie la première valeur et ses coordonnées.
Exemple : minimum (matrice(1 to 3,1)) = 1 (valeur), 1(ligne), 1(colonne)
Est-ce possible ???
Voici ce que j'ai trouvé tout seul dans mon coin -
mais je dois entrer pas mal de paramètres. (je n'ai pas utiliser les fonctions Ubound ou Lbound, donc j'entre la valeur du max de lignes dans mRows), la colonne à calculer dans mCOl et le tableau avec mArray.
Et chose la moins "honnête",
je précise d'entrée la valeur maximale que pourrait prendre les valeurs (ici 100).
Il y aurait-il voie d'amélioration ???
J'ai une fonction qui utilise des boucles.
Merci beaucoup de m'aider car je commence à travailler avec ce type de variable et effectivement c'est bien plus rapide et élégant (intellectuellement).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 --------------- 'Fonction de calcul du rang du minimum Function RangDuMinimum(mRows As Long, mCol As Long, ByRef mArray) As Long Dim ValMinTemp As Double ValMinTemp = 100 ' NbreMax de dossiers For i = 1 To mRows Select Case i Case 1 To (mRows - 1) If mArray(i, mCol) <= mArray(i + 1, mCol) And mArray(i, mCol) <= ValMinTemp Then RangDuMinimum = i ValMinTemp = mArray(i, mCol) Else End If Case mRows If mArray(i, mCol) <= ValMinTemp Then RangDuMinimum = mRows Else End If End Select Next i End Function ------------------
PS j'ai lu le tutoriel http://silkyroad.developpez.com/vba/tableaux/#LVI
Partager