Rechercher : dans
Par :

Petit exercice en vba (débutant)

Dernière réponse le 23 nov 2008 à 15:47:49 pheron, le 23 nov 2008 à 04:17:26 
 Signaler ce message aux modérateurs

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

Configuration: Windows Vista
Firefox 3.0.4

1

herod1983, le 23 nov 2008 à 04:47:40

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 Intel Pentium 4 2Core 3,6GO 
C.M. ASUS P5GDC Deluxe
Chipset Intel Grantsdale I915 Socket LGA 775
2048MO DDR2 Dual Channel OCZ Gold
C.G. ATI 3850HD 256MO 400MHZ
3 DD Maxtor
XP Service Pack 3
Mozilla 3.0.3

Répondre à herod1983

2

pheron, le 23 nov 2008 à 05:14:43

Euh simple, ça dépend pr qui. désolée, j'ai pas vraiment saisi !

Répondre à pheron

3

herod1983, le 23 nov 2008 à 07:37:38

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)

Intel Pentium 4 2Core 3,6GO 
C.M. ASUS P5GDC Deluxe
Chipset Intel Grantsdale I915 Socket LGA 775
2048MO DDR2 Dual Channel OCZ Gold
C.G. ATI 3850HD 256MO 400MHZ
3 DD Maxtor
XP Service Pack 3
Mozilla 3.0.3

Répondre à herod1983

4

 pheron, le 23 nov 2008 à 15:47:49

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

Répondre à pheron