Sélectionner et comparer des cellules en VBA

FM38 -  
cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

je suis débutant en VBA, je m'exerce donc à quelques exercices.

Je cherche à sélectionner les valeurs des cellules de trois colonnes pour ensuite les comparées entres-elles et sélectionner la plus haute des valeurs de chaque ligne.

je cherche maintenant à associer les étapes.

Si quelqu'un peut m'aider à avancer un peu? merci d'avance.

Voici ce que j'ai fait pour le moment étape par étape:
---------------------------------------------------------------
code pour comparer les cellules entres-elles et sortir la plus haute:
---------------------------------------------------------
Sub coco()

With ActiveSheet

Nb_col = .Cells(1, 1).End(xlToRight).Column + 1


For j = 1 To 40
I = 1

cellule1 = .Cells(j, I).Value
cellule2 = .Cells(j, I + 1).Value
cellule3 = .Cells(j, I + 2).Value

If cellule2 >= cellule1 And cellule2 >= cellule3 Then
Feuil1.Cells(j, I + 4) = Feuil1.Cells(j, I + 1).Value
'MsgBox ("La cellule 2 sup a 1 et 3")
End If

If cellule1 >= cellule2 And cellule1 >= cellule3 Then
Feuil1.Cells(j, I + 4) = Feuil1.Cells(j, I).Value
'MsgBox ("La cellule 1 sup a 2 et 3")
End If

If cellule3 >= cellule1 And cellule3 >= cellule2 Then
Feuil1.Cells(j, I + 4) = Feuil1.Cells(j, I + 2).Value
' MsgBox ("La cellule 3 sup a 2 et 1")
End If

Next j
End With

End Sub
----------------------------------------------------
Code pour sélectionner les cellules:
--------------------------------
Sub copy()

Sheets("Feuil1").Select

'Prix
Dim Plage As Range
Set Plage = ActiveWindow.RangeSelection


Selection.copy
Range("d1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
------------------------------------------------

Merci à tous.

Cdt

2 réponses

cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361
 
Bonjour,

Une autre manière, de trouver la valeur max, ainsi que son adresse :

Sub essai()
Dim Plg As Range
Dim LeMax As Long
Dim AdresseDuMax As String
Set Plg = Range("A1:C1")
LeMax = Application.Max(Plg)
AdresseDuMax = Cells(1, Application.Match(Application.Max(Plg), Plg, 0)).Address
MsgBox "Valeur Max : " & LeMax
MsgBox "Cellule contenant la plus grande valeur : " & AdresseDuMax
End Sub


Bon apprentissage
1
pierre
 
Je pensais trouver reponse a mon probleme avec cette routine MAIS
Si je change la plage "A1:c1" en "a1:a3" avec les valeurs 100,200,300 en a1, a2, et a3 respectivement, la routine trouve bien 300 comme MAX mais me donne l'adresse $c$1!!!
Quelqu'un peut-il me dire ce qui se passe?J'attendais l'adresse $a$3!

il y a la meme incoherence avec "column" & "row"

Y a-t-il une logique que je percois pas?

merci car pour le debutant en vba que je suis je m'inspire bcp des reponses trouvees sue des sites comme comment ca marche et bcp des questions y trouvent reponse
0
cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361
 
Bonjour,

Effectivement, tu ne peux trouver que dans la ligne 1.

Pour modifier, tu peux essayer ainsi :

Sub essai()
Dim Plg As Range
Dim LeMax As Long
Dim AdresseDuMax As String
Set Plg = Range("A1:A3")
LeMax = Application.Max(Plg)
AdresseDuMax = Cells(Application.Match(Application.Max(Plg), Plg, 0), 1).Address
MsgBox "Valeur Max : " & LeMax
MsgBox "Cellule contenant la plus grande valeur : " & AdresseDuMax
End Sub

PS : non testé....

Bon courage
0