Calculs Codes Couleurs & Montants

Bonjour à tous,

Je viens solliciter votre aide pour faire certains calculs. A savoir si Excel est capable de faire ce genre de choses...

1/ Calculs entre couleurs

Colonne J : Vert

Colonne L: Rouge

Le gris ne représente rien.

Mon objectif c'est qu'à chaque fois que j'insère une couleur (Ex: J3, J4, J8, J9, J11....en vert et L7, L10....en rouge ) cela me donne la somme sur la cellule J27 (vert) et L27 (rouge).

Est-ce faisable ?

2/ Calculs montant

A chaque fois que la cellule est verte ou rouge, cela me donne le montant sur la même ligne (Colonne Q) en prenant le calcul suivant:

J * B27 x B28

EX:

J3 = Vert

Q3 = J3 x B27 x B28

L7 = Rouge

Q7 = L7 x B27 x B28

etc..

3/ Lien entre les feuilles

L'objectif est de créer un calcul global quotidien selon les codes couleurs et de les transférer vers la feuille "RECAP V & TC".

Par exemple, sur GBPUSD:

02/01/19 : +25 pts (vers "RECAP V & TC" => D2)

03/01/19 : +35 pts ..............................

08/01/19: -25 + 25 = 0 pts (vers "RECAP V & TC" => D6)

09/01/19: +40 - 35 = 5 pts (vers "RECAP V & TC" => D7)

10/01/19: +25 pts

J'espère avoir été clair dans mon explication...

Si non, n'hésitez pas et j'expliquerai de nouveau.

Merci beaucoup pour votre aide

Bonjour Mike, bonjoir le forum,

Le fait de colorer une cellule ne déclenche aucune macro événementielle. Donc, comme tu le souhaites ça ne marchera pas. En revanche, on pourrait lancer la macro via un bouton ou sur une autre événement (Calculate, Change, SelectionChange). Le bouton t'obligerait à cliquer dessus pour mettre à jour les calculs, les événementielles sont automatiques mais risquent de te ralentir considérablement. Comment vois-tu les choses ?

Bonjour ThauThème,

Je te remercie pour ta réactivité.

On pourrait lancer la macro si tu nous pouvons même si honnêtement mon PC est assez puissant. Automatiquement ça serait top!

Mais bon c'est toi qui voit au plus simple

Re,

Je pense que les problèmes 1 et 2 sont réglés... Le 3 me paraît trop complexes pour mes petites connaissances...

En pièce jointe ton fichier modifié (devenu .xlsm pusqu'il y a une macro).

Le code :

Private Sub CommandButton1_Click() 'bouton Calucul Couleur
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL1V As Range 'déclare la variable PL1V (Plage 1 Verte)
Dim PL2V As Range 'déclare la variable PL2V (Plage 2 Verte)
Dim PL1R As Range 'déclare la variable PL1R (Plage 1 Rouge)
Dim PL2R As Range 'déclare la variable PL1R (Plage 2 Rouge)
Dim TV1 As Integer 'déclare la variable T1V (Total de la plage 1 Verte)
Dim TV2 As Integer 'déclare la variable T2V (Total de la plage 2 Verte)
Dim TR1 As Integer 'déclare la variable T1R (Total de la plage 1 Rouge)
Dim TR2 As Integer 'déclare la variable T2R (Total de la plage 2 Rouge)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Set O = Worksheets("TC") 'définit l'onglet O
Set PL1V = O.Range("J3:J26") 'définit la plage PL1V
Set PL2V = O.Range("J33:J55") 'définit la plage PL2V
Set PL1R = O.Range("L3:L26") 'définit la plage PL1R
Set PL2R = O.Range("L33:L55") 'définit la plage PL2R

ActiveCell.Select 'enlève le focus au bouton
For Each CEL In PL1V 'boucle sur toutes les cellules CEL de la plage PL1V
    If CEL.Interior.ColorIndex = 14 Then 'condition : si la cellule est colorée verte
        TV1 = TV1 + CEL.Value 'calcule le total TV1
        CEL.Offset(0, 7).Formula = "=$B$27*$B$28*" & CEL.Address(0, 0) 'renvoie une formule dans la cellule décalée de 7 colonnes à droite
    Else 'sinon
        'si la cellule en colonne L n'est pas colorée, vide la cellule du montant en colonne Q
        If CEL.Offset(0, 2).Interior.Color = xlNone Then CEL.Offset(0, 7).Value = ""
    End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle
O.Range("J27").Value = TV1 'renvoie le total TV1 dans la cellule J27
For Each CEL In PL2V 'boucle sur toutes les cellules CEL de la plage PL2V
    If CEL.Interior.ColorIndex = 14 Then 'condition : si la cellule est colorée verte
        TV2 = TV2 + CEL.Value 'calcule le total TV2
        CEL.Offset(0, 7).Formula = "=$B$56*$B$57*" & CEL.Address(0, 0) 'renvoie une formule dans la cellule décalée de 7 colonnes à droite
    Else 'sinon
        'si la cellule en colonne L n'est pas colorée, vide la cellule du montant en colonne Q
        If CEL.Offset(0, 2).Interior.Color = xlNone Then CEL.Offset(0, 7).Value = ""
    End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle
O.Range("J56").Value = TV2 'renvoie le total TV2 dans la cellule J56
For Each CEL In PL1R 'boucle sur toutes les cellules CEL de la plage PL1R
    If CEL.Interior.ColorIndex = 3 Then 'condition : si la cellule est colorée rouge
        TR1 = TR1 + CEL.Value 'calcule le total TR1
        CEL.Offset(0, 5).Formula = "=$B$27*$B$28*" & CEL.Address(0, 0) 'renvoie une formule dans la cellule décalée de 5 colonnes à droite
    Else 'sinon
        'si la cellule en colonne J n'est pas colorée, vide la cellule du montant en colonne Q
        If CEL.Offset(0, -2).Interior.Color = xlNone Then CEL.Offset(0, 7).Value = ""
    End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle
O.Range("L27").Value = TR1 'renvoie le total TR1 dans la cellule L27
For Each CEL In PL2R 'boucle sur toutes les cellules CEL de la plage PL2R
    If CEL.Interior.ColorIndex = 3 Then 'condition : si la cellule est colorée rouge
        TR2 = TR2 + CEL.Value 'calcule le total TR2
        CEL.Offset(0, 5).Formula = "=$B$56*$B$57*" & CEL.Address(0, 0) 'renvoie une formule dans la cellule décalée de 5 colonnes à droite
    Else 'sinon
        'si la cellule en colonne J n'est pas colorée, vide la cellule du montant en colonne Q
        If CEL.Offset(0, -2).Interior.Color = xlNone Then CEL.Offset(0, 7).Value = ""
    End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle
O.Range("L56").Value = TR2 'renvoie le total TR2 dans la cellule L56
End Sub
3mike-ep-v01.xlsm (39.30 Ko)

C'est juste parfait et exceptionnel !

Désolé, je n'y connaît absolument rien en macro, si je souhaite rajouter d'autres devises avec d'autres calculs, est-ce qu'il prendra également en compte ?

Comment récupérer le code ainsi que le "bouton" et l'intégrer sur une autre feuille ?

Merci beaucoup pour ton aide

Bonjour Mike, bonjour le forum,

Si je souhaite rajouter d'autres devises avec d'autres calculs, est-ce qu'il prendra également en compte ?

Hélas non ! c'est le problème du VBA. Tel qu'il est là, le code fonctionne mais il suffirait que tu rajoutes un ligne ou une colonne pour que tout se dérègle...

Comment récupérer le code ainsi que le "bouton" et l'intégrer sur une autre feuille ?

Comme le bouton se trouve dans l'onglet TC, clique avec le bouton droit en bas sur le nom de l'onglet et choisi l'option Visualiser le code. Tu pourras faire un copier/coller... Pour copier/coller ou pour insérer un bouton il te faut avoir le module Développeur dans le ruban. Là, soit tu te met en Mode Création ce qui te permettra de copier/coller le bouton (désactiver le Mode Création après...) ou tu insères un bouton de commande de la boîte à outil Contrôles ActiveX.

Mais quoi qu'il en soit, si tu veux progresser dans les macros il te faudra un bouquin, du temps et de la patience...

Merci pour ton explication c'est plus clair

Rechercher des sujets similaires à "calculs codes couleurs montants"