CommentObtenir le resultat max par multiplication de 2 cell dans 2 colonnes

test multiplication

Bonjour, j ai un peiti tableau avec une colonne "E" et une "L" sur 6 lignes .J aimerais marquer d un "X" la cellule precedente ayant obtenu la valeur la plus elevee.

j y suis parvenue mais en mettant des valeurs dans les cellules a cote de mon tableau... ce que je voudrais eviter ! j ai joint mon fichier test sachant que c est plus facile a travailler et le code complet.

Merci d avance !!! et Bonne journee !

Private Sub btn_Effacer_Click()
Set onglet = Worksheets(1)
    derniere_ligne = onglet.Cells(Rows.Count, 2).End(xlUp).Row

For ligne_en_cours = 3 To derniere_ligne

        ligne_x = onglet.Cells(ligne_en_cours, 2).Value

        If ligne_x <> x Then

        onglet.Cells(ligne_en_cours, 2).Interior.ColorIndex = 0
        onglet.Cells(ligne_en_cours, 3).Interior.ColorIndex = 0
        onglet.Cells(ligne_en_cours, 4).Interior.ColorIndex = 0
        onglet.Cells(ligne_en_cours, 5).Interior.ColorIndex = 0
        onglet.Cells(ligne_en_cours, 2).Select
        Selection.ClearContents
        End If
  Next
    For ligne_en_cour = 3 To derniere_ligne

        ligne_V = onglet.Cells(ligne_en_cour, 1).Value

        If ligne_V <> V Then

        onglet.Cells(ligne_en_cour, 1).Interior.ColorIndex = 0
        onglet.Cells(ligne_en_cour, 2).Interior.ColorIndex = 0
        onglet.Cells(ligne_en_cour, 3).Interior.ColorIndex = 0
        onglet.Cells(ligne_en_cour, 4).Interior.ColorIndex = 0
        onglet.Cells(ligne_en_cour, 5).Interior.ColorIndex = 0
        onglet.Cells(ligne_en_cour, 1).Select

        End If
  Next
End Sub

Private Sub btn_Calculer_Click()

Dim onglet As Worksheet
Dim derniere_ligne As Long
Dim colonne_ligne As Long
Dim ligne_en_cours As Long
Dim valeur_x As String
Dim colonne_x  As String
Dim ligne_x As String
Dim Produit As Long
Dim Calcul As Long

' trouver le produit MAX entre les colonne C et E et Afficher un "x" dans la colonne Precedente
'   Creer une Boucle pour ne pas avoir de valeur incrites dans les colonnes G & H
'###########

Range(Application.WorksheetFunction.Index(Range("H3:H8"), WorksheetFunction.Match(Application.WorksheetFunction.Max(Range("G3:G8")), Range("G3:G8"), 0))) = "x"

'###########
' Colorier la ligne de la cellule qui contient un x obtenu par le code precedent

Set onglet = Worksheets(1)
derniere_ligne = onglet.Cells(Rows.Count, 2).End(xlUp).Row

For ligne_en_cours = 3 To derniere_ligne

        ligne_x = onglet.Cells(ligne_en_cours, 2).Value

        If ligne_x <> x Then

        onglet.Cells(ligne_en_cours, 2).Interior.ColorIndex = 4
        onglet.Cells(ligne_en_cours, 3).Interior.ColorIndex = 4
        onglet.Cells(ligne_en_cours, 4).Interior.ColorIndex = 4
        onglet.Cells(ligne_en_cours, 5).Interior.ColorIndex = 4

        End If
  Next

  ' Colorier la ligne de la cellule qui contient un V obtenu manuellement par l utilisateur

 For ligne_en_cours = 3 To derniere_ligne

        ligne_V = onglet.Cells(ligne_en_cours, 1).Value

        If ligne_V <> V Then

        onglet.Cells(ligne_en_cours, 1).Interior.ColorIndex = 6
        onglet.Cells(ligne_en_cours, 2).Interior.ColorIndex = 6
        onglet.Cells(ligne_en_cours, 3).Interior.ColorIndex = 6
        onglet.Cells(ligne_en_cours, 4).Interior.ColorIndex = 6
        onglet.Cells(ligne_en_cours, 5).Interior.ColorIndex = 6

        End If
  Next

End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

' affiche V dans la cellule en 1 clic et l enleve au clic suivant

If Intersect(Range("A3:A8"), Target) Is Nothing Then Exit Sub
If IsEmpty(Target) Then
Target = "V"
Range("A1").Select
Cancel = True
Else
If Target = "V" Then
Target = ""
Range("A1").Select
Cancel = True
End If
End If
End Sub

Salut,

Si tu ne veux pas avoir de chiffres visibles dans ta colonne G, tu pourrais effectuer les calculs en cours de macro et les effacer avant la fin.

Dans ton code, j'ai ajouté deux passages marqués "Rajout Y" à cet effet.

Tu compliques les choses en déclarant ta feuille ''onglet'' et en l'utilisant partout. Comme tu ne travailles que sur une feuille, les références aux cellules font références à cette feuille par défaut. Dans mon passage marqué ''Proposition - Y", tu vois que ça fonctionne sans le mot-clé ''onglet''.

Tes recherches de lignes par les instructions ci-dessous me semblent bien alambiquées. Mais comme je ne comprends encore pas très bien ton fichier, je ne te proposes rien pour l'instant.

Tu manques de précisions dans tes explications et tu ne devrais pas mettre des informations à notre intention dans ton fichier Excel, autrement on ne sait pas si ces informations s'adressent à nous ou à l'utilisateur futur de ton fichier. Reste donc sur ce fil afin de donner tes explications et sois très précis. Lorsque tu dis : "pouvoir ne pas effacer les lignes sous le tableau'', on ne sait pas de quel tableau tu parles exactement. Probablement du tableau en A3:E8, mais ça va mieux en le disant.

Et d'ailleurs, pourquoi ne peux-tu pas ne pas effacer ces lignes ?

Ne prenons pas plus de problèmes que ça à la fois, autrement on ne s'en sortira pas.

Amicalement.

Merci d avoir repondu a mon appel !
Je suis pas expert et je m exprime mal des fois ..surtout par ecrit lol ! je sais que je declare ttrop souvent les meme lignes

pour rien. grace au ligne de code que tu as modifier au niveau des couleurs c est se que je cherchais , du coup j ai tout modifier ce qui rend le code plus propre.

ce qui est des produits en colonne G et des reference en H , j aurais voulu eviter de les avoir sur la feuille meme en les effacants comme tu a fait . mais ca fonctionne bien ;P un gros merci !! j avais pas penser a cette methode de faire.Je vais le remettre au propre demain ... bah de mon mieux
j essaye de me debrouiller comme je peux ... sur le tableur les formules ca va mais en vba c est pas la meme syntaxe !!

Je remetterai mon nouveau ficher demain et si ca te dit tu me diras s il y a autre chose!

La il es 22:15 , alors je vais aller !!! encore merci et bonne nuit !!

Re Bonjour , voila c est plus propre et ca fonctionne bien ! me reste a tout adapter a mon autre fichier !

Si tu ne veux pas inscrire de valeurs - même provisoires - sur ton fichier, tu pourrais utiliser le code ci-dessous. La deuxième partie (le coloriage en jaune) est également simplifié. Et il y a surement encore plus simple

Private Sub btn_Calculer_Click()
    Dim Produit_C_E As Long, Produit_Max As Long, Ligne_Max As Byte, i As Byte

    ' Colorier la ligne qui contient LA MULTIPLICATION MAXIMALE
    For i = 3 To 8
        Produit_C_E = Range("C" & i) * Range("E" & i)
        If Produit_C_E > Produit_Max Then
            Produit_Max = Produit_C_E
            Ligne_Max = i
        End If
    Next i
    Range("B" & Ligne_Max & ":E" & Ligne_Max).Interior.ColorIndex = 4

    ' Colorier les lignes qui contiennent un V obtenu manuellement par l utilisateur
    For i = 3 To 8
        If Range("A" & i) = "V" Then
             Range("A" & i & ":E" & i).Interior.ColorIndex = 6
        End If
    Next

End Sub

Tu n'as apparemment pas trouvé bien de ne pas déclarer ta feuille ''onglet'' comme je te le proposais. Une complication inutile de plus.

Et tu n'as pas répondu à ma question "Pourquoi ne peux-tu pas ne pas effacer ces lignes ?".

Amicalement.

Re bonsoir , c est vrai j ai oublier de reverifier la declaration de l onglet qui es repetitive. pour les lignes du dessous c est que dans mon autre fichier j ai des donnees d ecrites .mais la ca va ;P demain je vais etudier ton code , j avais parvenu a le simplifier un peu .... mais le tiens l es plus !!!

Me reste enormement a faire sur cette petite application , mais c est pas mal bien parti ... comme je suis novice ... bah j en ai pour quelques mois a temps perdu a le travailler !

un gros merci pour ton aide !! je remetterai mon fichier a jour apres bien avoir fait le tour cette fois !!

Rechercher des sujets similaires à "commentobtenir resultat max multiplication colonnes"