Petit exercice en vba (débutant)

Fermé
pheron - 23 nov. 2008 à 04:17
 pheron - 23 nov. 2008 à 15:47
Bonjour,
j'ai (encore) un petit souci. j'ai une matrice et je cherche à déterminer le maximum et le minimum de chaque colonne. le problème est que le bon résultat n'apparaît pas systématiquement pr chacune des colonnes. si vous pouviez me dire ce qui cloche,svp.

Function min_max_colonne(T, n, p As Integer) As Integer

Dim i, j As Integer
Dim min, max As Integer

min = T(1, 1)

max = T(1, 1)


For j = 1 To p

For i = 1 To n

If T(i, j) < min Then

min = T(i, j)


End If

If T(i, j) > max Then

max = T(i, j)

End If

Next i

Next j

End Function

2 réponses

herod1983 Messages postés 193 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 3 août 2012 5
23 nov. 2008 à 04:47
Salut

j'ai trouvé un autre code assez simple (pour min il suffit de changer en Application.WorksheetFunction.min)

Sub max()

Dim i As Integer 'déclare les variables
Dim cellules As Range
Dim e As Integer

'Cherche la dernière cellule dans la colonne A qui contient une valeur
e = Range("A3000").End(xlUp).Row

'Plage de valeurs allant de la cellule A1 à la dernière cellule contenant une valeur
Set cellules = Range("A1:A" & e)

'fonction Max résultat se trouve dans la cellule B1
Range("B1").Value = Application.WorksheetFunction.max(cellules)

End Sub
0
euh simple, ça dépend pr qui. désolée, j'ai pas vraiment saisi !
0
herod1983 Messages postés 193 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 3 août 2012 5
23 nov. 2008 à 07:37
en plus simple, si c'était le "e = Range("A3000").End(xlUp).Row" que tu comprenais pas il s'agissait
seulement de déterminer les cellules non vide de la colonne A

je pense qu'il n'y a pas plus simple au lieu de s'embèter a faire 36 boucles
il suffit de prendre la fonction max de VBA

voila


Dim cellules As Range 'déclare que la variable appelé cellules est une cellule

' je veux chercher la valeur la plus haute entre A1 et A10 par ex.
Set cellules = Range("A1:A10")

'la valeur la plus haute se copiera dans la cellule B1
Range("B1").Value = Application.WorksheetFunction.max(cellules)

0
ok ok j'ai compris. c'est juste qu'on avait jamais vu ça sous cet angle. merci.
0