Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro qui calcul les cellules

6 réponses
Avatar
Frasax
Bonjour à tous

J’aimerais savoir si une macro peut reconnaître les couleurs afin de
calculer le nombre d’heures.
J’ai un tableau avec des cellules qui représente des quarts d’heure, soit en
centième 0.25.
Pour le rouge et le bleu les heures sont additionnées dans la première
colonne, le jaune vert et violet dans la deuxième colonne.
Si quelqu’un peut me donner un coup de pouce, ce serait sympa, j’aimerais
éviter utiliser des formules Excel.Merci de votre préciense aide et à bientôt.
http://cjoint.com/?gbsC3TqVgy

6 réponses

Avatar
Quetzalcoatl
"Frasax" a écrit ...
J'aimerais savoir si une macro peut reconnaître les couleurs afin de calculer le nombre d'heures.
http://cjoint.com/?gbsC3TqVgy


--------------
Bonsoir,

Oui, c'est possible.
D'ailleurs, la macro existe, elle s'appelle RECONNAITRE_LES_COULEURS_AFIN_DE_CALCULER_LE_NOMBRE_D_HEURES.

Sub RECONNAITRE_LES_COULEURS_AFIN_DE_CALCULER_LE_NOMBRE_D_HEURES()

Const BLEU As Integer = 41
Const ROUGE As Integer = 3
Const JAUNE As Integer = 36
Const VERT As Integer = 35
Dim PLANNING_Z, HEURES_Z As Range
Dim HEURES
Dim LIGNE, COLONNE As Integer
Dim NB_LIGNES, NB_COLONNES As Integer

Set PLANNING_Z = Range("D4:BG16")
Set HEURES_Z = Range("BJ4:BL16")
HEURES = HEURES_Z.Value
NB_LIGNES = PLANNING_Z.Rows.Count
NB_COLONNES = PLANNING_Z.Columns.Count

For LIGNE = 1 To NB_LIGNES
HEURES(LIGNE, 1) = 0
HEURES(LIGNE, 3) = 0
Next LIGNE

For LIGNE = 1 To NB_LIGNES
For COLONNE = 1 To NB_COLONNES
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = BLEU Then HEURES(LIGNE, 1) = HEURES(LIGNE, 1) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = ROUGE Then HEURES(LIGNE, 1) = HEURES(LIGNE, 1) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = JAUNE Then HEURES(LIGNE, 3) = HEURES(LIGNE, 3) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = VERT Then HEURES(LIGNE, 3) = HEURES(LIGNE, 3) + 0.25
Next COLONNE
Next LIGNE

HEURES_Z = HEURES

End Sub

Avatar
FFO
Salut Frasax
Je ne sais pas si tu veux calculer l'ensemble des couleurs du tableau ou si
tu veux le réaliser ligne par ligne
Je te propose cette trame que tu pourras facilement adapter à ton besoin

For Each c In Worksheets("MARDI").Range("D4", "BG16")
' adapte la zone à prendre en compte avec Range ("D4", "BG16")
If c.Interior.ColorIndex = 41 Then
c1 = c1 + 1
End If
If c.Interior.ColorIndex = 3 Then
c2 = c2 + 1
End If
If c.Interior.ColorIndex = 36 Then
c3 = c3 + 1
End If
If c.Interior.ColorIndex = 35 Then
c4 = c4 + 1
End If
If c.Interior.ColorIndex = 39 Then
c5 = c5 + 1
End If
Next
Range("E18") = c1 'ici le nombre de couleur 1 mis dans la cellule E18
Range("N18") = c2 'ici le nombre de couleur 2 mis dans la cellule N18
Range("W18") = c3 'ici le nombre de couleur 3 mis dans la cellule W18
Range("AF18") = c4 'ici le nombre de couleur 4 mis dans la cellule AF18
Range("AO18") = c5 'ici le nombre de couleur 5 mis dans la cellule AO18


Tu peux adapter le résultat en faisant la somme pour 2 couleurs par exemple :

Range("E18") = c1 + c2

Calculer le temps correspondant
Range("E18") = c1 *0.25+ c2*0.25

A toi d'apporter les adaptations

Espérant avoir répondu à ton attente
Dis moi !!!!






Bonjour à tous

J’aimerais savoir si une macro peut reconnaître les couleurs afin de
calculer le nombre d’heures.
J’ai un tableau avec des cellules qui représente des quarts d’heure, soit en
centième 0.25.
Pour le rouge et le bleu les heures sont additionnées dans la première
colonne, le jaune vert et violet dans la deuxième colonne.
Si quelqu’un peut me donner un coup de pouce, ce serait sympa, j’aimerais
éviter utiliser des formules Excel.Merci de votre préciense aide et à bientôt.
http://cjoint.com/?gbsC3TqVgy



Avatar
Frasax
Merci à vous pour vos bons conseils. La formule de Quetzalcoatl fonctionne
presque, il ya juste avec la couleuer lavande que ça ne marche pas, est-il
possible de pouvoir faire en sorte que la macro reconnaisse cette couleur ou
faut-il changer de couleur ce qui peut-être serait plus simple. Est-il
possible de tester avec cette couleur, je ne sais pas comment coder cette
couleur ou une autre, merci de me renseigner, bonne nuit et à +

"Quetzalcoatl" wrote:


"Frasax" a écrit ...
J'aimerais savoir si une macro peut reconnaître les couleurs afin de calculer le nombre d'heures.
http://cjoint.com/?gbsC3TqVgy


--------------
Bonsoir,

Oui, c'est possible.
D'ailleurs, la macro existe, elle s'appelle RECONNAITRE_LES_COULEURS_AFIN_DE_CALCULER_LE_NOMBRE_D_HEURES.

Sub RECONNAITRE_LES_COULEURS_AFIN_DE_CALCULER_LE_NOMBRE_D_HEURES()

Const BLEU As Integer = 41
Const ROUGE As Integer = 3
Const JAUNE As Integer = 36
Const VERT As Integer = 35
Dim PLANNING_Z, HEURES_Z As Range
Dim HEURES
Dim LIGNE, COLONNE As Integer
Dim NB_LIGNES, NB_COLONNES As Integer

Set PLANNING_Z = Range("D4:BG16")
Set HEURES_Z = Range("BJ4:BL16")
HEURES = HEURES_Z.Value
NB_LIGNES = PLANNING_Z.Rows.Count
NB_COLONNES = PLANNING_Z.Columns.Count

For LIGNE = 1 To NB_LIGNES
HEURES(LIGNE, 1) = 0
HEURES(LIGNE, 3) = 0
Next LIGNE

For LIGNE = 1 To NB_LIGNES
For COLONNE = 1 To NB_COLONNES
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = BLEU Then HEURES(LIGNE, 1) = HEURES(LIGNE, 1) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = ROUGE Then HEURES(LIGNE, 1) = HEURES(LIGNE, 1) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = JAUNE Then HEURES(LIGNE, 3) = HEURES(LIGNE, 3) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = VERT Then HEURES(LIGNE, 3) = HEURES(LIGNE, 3) + 0.25
Next COLONNE
Next LIGNE

HEURES_Z = HEURES

End Sub






Avatar
Quetzalcoatl
Bonsoir,

Pour connaître les codes de couleur, place toi dans une feuille vierge et exécute la macro suivante :
Sub COULEURS()
Dim i
For i = 1 To 56
Cells(i, 1) = i
Cells(i, 2).Interior.ColorIndex = i
Next i
End Sub

La couleur 'Lavande' correspond au code 39 :
Const LAVANDE As Integer = 39
En rajoutant la ligne :
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = LAVANDE Then HEURES(LIGNE, 3) = HEURES(LIGNE, 3) + 0.25
ça devrait fonctionner !


"Frasax" a écrit dans le message de news:
Merci à vous pour vos bons conseils. La formule de Quetzalcoatl fonctionne
presque, il ya juste avec la couleuer lavande que ça ne marche pas, est-il
possible de pouvoir faire en sorte que la macro reconnaisse cette couleur ou
faut-il changer de couleur ce qui peut-être serait plus simple. Est-il
possible de tester avec cette couleur, je ne sais pas comment coder cette
couleur ou une autre, merci de me renseigner, bonne nuit et à +

"Quetzalcoatl" wrote:


"Frasax" a écrit ...
J'aimerais savoir si une macro peut reconnaître les couleurs afin de calculer le nombre d'heures.
http://cjoint.com/?gbsC3TqVgy


--------------
Bonsoir,

Oui, c'est possible.
D'ailleurs, la macro existe, elle s'appelle RECONNAITRE_LES_COULEURS_AFIN_DE_CALCULER_LE_NOMBRE_D_HEURES.

Sub RECONNAITRE_LES_COULEURS_AFIN_DE_CALCULER_LE_NOMBRE_D_HEURES()

Const BLEU As Integer = 41
Const ROUGE As Integer = 3
Const JAUNE As Integer = 36
Const VERT As Integer = 35
Dim PLANNING_Z, HEURES_Z As Range
Dim HEURES
Dim LIGNE, COLONNE As Integer
Dim NB_LIGNES, NB_COLONNES As Integer

Set PLANNING_Z = Range("D4:BG16")
Set HEURES_Z = Range("BJ4:BL16")
HEURES = HEURES_Z.Value
NB_LIGNES = PLANNING_Z.Rows.Count
NB_COLONNES = PLANNING_Z.Columns.Count

For LIGNE = 1 To NB_LIGNES
HEURES(LIGNE, 1) = 0
HEURES(LIGNE, 3) = 0
Next LIGNE

For LIGNE = 1 To NB_LIGNES
For COLONNE = 1 To NB_COLONNES
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = BLEU Then HEURES(LIGNE, 1) = HEURES(LIGNE, 1) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = ROUGE Then HEURES(LIGNE, 1) = HEURES(LIGNE, 1) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = JAUNE Then HEURES(LIGNE, 3) = HEURES(LIGNE, 3) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = VERT Then HEURES(LIGNE, 3) = HEURES(LIGNE, 3) + 0.25
Next COLONNE
Next LIGNE

HEURES_Z = HEURES

End Sub








Avatar
Quetzalcoatl
"Frasax" a écrit ...
je ne sais pas comment coder cette couleur


Bonsoir,

Si tu sélectionnes une cellule et que tu lances la macro ci-dessous, tu obtiendras ses coordonnées RGB et le code couleur si la
couleur est dans la palette standard.

Sub MAIS_QUELLE_EST_DONC_CETTE_COULEUR()
MsgBox "ROUGE : " & Int(ActiveCell.Interior.Color Mod 256) & vbCrLf & _
"VERT : " & Int((ActiveCell.Interior.Color Mod 65536) / 256) & vbCrLf & _
"BLEU : " & Int(ActiveCell.Interior.Color / 65536) & vbCrLf & vbCrLf & _
"CODE : " & ActiveCell.Interior.ColorIndex
End Sub

Avatar
Frasax
Bonjour Quetzalcoatl,

Merci pour les informations, cette fois ça fonctionne.
C'est vraiment super, vous êtes génial sur ce forum.
Encore merci et à une prochaine !!!

Sincères salutations.


"Quetzalcoatl" wrote:

Bonsoir,

Pour connaître les codes de couleur, place toi dans une feuille vierge et exécute la macro suivante :
Sub COULEURS()
Dim i
For i = 1 To 56
Cells(i, 1) = i
Cells(i, 2).Interior.ColorIndex = i
Next i
End Sub

La couleur 'Lavande' correspond au code 39 :
Const LAVANDE As Integer = 39
En rajoutant la ligne :
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = LAVANDE Then HEURES(LIGNE, 3) = HEURES(LIGNE, 3) + 0.25
ça devrait fonctionner !


"Frasax" a écrit dans le message de news:
Merci à vous pour vos bons conseils. La formule de Quetzalcoatl fonctionne
presque, il ya juste avec la couleuer lavande que ça ne marche pas, est-il
possible de pouvoir faire en sorte que la macro reconnaisse cette couleur ou
faut-il changer de couleur ce qui peut-être serait plus simple. Est-il
possible de tester avec cette couleur, je ne sais pas comment coder cette
couleur ou une autre, merci de me renseigner, bonne nuit et à +

"Quetzalcoatl" wrote:


"Frasax" a écrit ...
J'aimerais savoir si une macro peut reconnaître les couleurs afin de calculer le nombre d'heures.
http://cjoint.com/?gbsC3TqVgy


--------------
Bonsoir,

Oui, c'est possible.
D'ailleurs, la macro existe, elle s'appelle RECONNAITRE_LES_COULEURS_AFIN_DE_CALCULER_LE_NOMBRE_D_HEURES.

Sub RECONNAITRE_LES_COULEURS_AFIN_DE_CALCULER_LE_NOMBRE_D_HEURES()

Const BLEU As Integer = 41
Const ROUGE As Integer = 3
Const JAUNE As Integer = 36
Const VERT As Integer = 35
Dim PLANNING_Z, HEURES_Z As Range
Dim HEURES
Dim LIGNE, COLONNE As Integer
Dim NB_LIGNES, NB_COLONNES As Integer

Set PLANNING_Z = Range("D4:BG16")
Set HEURES_Z = Range("BJ4:BL16")
HEURES = HEURES_Z.Value
NB_LIGNES = PLANNING_Z.Rows.Count
NB_COLONNES = PLANNING_Z.Columns.Count

For LIGNE = 1 To NB_LIGNES
HEURES(LIGNE, 1) = 0
HEURES(LIGNE, 3) = 0
Next LIGNE

For LIGNE = 1 To NB_LIGNES
For COLONNE = 1 To NB_COLONNES
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = BLEU Then HEURES(LIGNE, 1) = HEURES(LIGNE, 1) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = ROUGE Then HEURES(LIGNE, 1) = HEURES(LIGNE, 1) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = JAUNE Then HEURES(LIGNE, 3) = HEURES(LIGNE, 3) + 0.25
If PLANNING_Z.Cells(LIGNE, COLONNE).Interior.ColorIndex = VERT Then HEURES(LIGNE, 3) = HEURES(LIGNE, 3) + 0.25
Next COLONNE
Next LIGNE

HEURES_Z = HEURES

End Sub