Méthode value de l'objet range à échoué - Comptage de points
Bonjour,
Je suis débutant en VBA et dans le cadre de ma mission d'alternance, je dois compter le nombre de point sur une ligne via la couleur d'une cellule.
Par exemple, si la cellule D4 est verte, cela ajoute 10 point a un compteur et ainsi de suite. Une fois les colonnes parcouru, la valeur du compteur doit être mise dans la colonne M pour avoir la valeur de pondération de la ligne puis je passe à la ligne suivante.
Cependant, à l'étape où je souhaite remplir la colonne M avec l'indice de ligne correspondant, je rencontre l'erreur "La méthode value de l'objet range à échoué". Je vous avoue que je ne comprends pas vraiment l'origine de l'erreur, surtout que cela fonctionne avec une autre macro faisant un traitement similaire.
Voici le code, j'ai également joint le fichier simplifié.
Sub Test()
'
' Test Macro
'
Dim CptIndicateurGlobalCol As Integer
Dim CptIndicateurGlobalLigne As Integer
Dim Cpt As Integer
CptIndicateurGlobalLigne = 4
CptIndicateurGlobalCol = 4
Cpt = 0
Application.EnableEvents = False
While CptIndicateurGlobalLigne <> 16
While CptIndicateurGlobalCol <> 12
If Cells(CptIndicateurGlobalLigne, CptIndicateurGlobalCol).Interior.Color = RGB(146, 208, 80) Then
Cpt = Cpt + 10
ElseIf Cells(CptIndicateurGlobalLigne, CptIndicateurGlobalCol).Interior.Color = RGB(255, 255, 0) Then
Cpt = Cpt + 5
ElseIf Cells(CptIndicateurGlobalLigne, CptIndicateurGlobalCol).Interior.Color = RGB(255, 192, 0) Then
Cpt = Cpt - 5
ElseIf Cells(CptIndicateurGlobalLigne, CptIndicateurGlobalCol).Interior.Color = RGB(255, 0, 0) Then
Cpt = Cpt - 10
Else
Cpt = Cpt + 0
End If
Range("M" & CptIndicateurGlobalLigne).Value = Cpt
Cpt = 0
Wend
Cpt = 0
CptIndicateurGlobalLigne = CptIndicateurGlobalLigne + 1
CptIndicateurGlobalCol = 4
Wend
Application.EnableEvents = True
'
End Sub
Pourriez-vous m'éclairer sur une éventuelle solution ?
Je vous remercie d'avance.
Axel :) !
Bonjour,
A tester :
Option Explicit
Sub Test()
Dim I As Integer, J As Integer, DerniereColonne As Integer, DerniereLigne As Integer, Cpt As Integer
Dim Sh As Worksheet
Set Sh = Sheets("Général à décliner palier")
With Sh
DerniereColonne = .Cells(3, .Columns.Count).End(xlToLeft).Column - 1
DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
For J = 4 To DerniereLigne
Cpt = 0
For I = 1 To DerniereColonne
Select Case .Cells(J, I).Interior.Color
Case RGB(146, 208, 80)
Cpt = Cpt + 10
Case RGB(255, 255, 0)
Cpt = Cpt + 5
Case RGB(255, 192, 0)
Cpt = Cpt - 5
Case RGB(255, 0, 0)
Cpt = Cpt - 10
End Select
Next I
.Cells(J, "M") = Cpt
Next J
End With
Set Sh = Nothing
End SubBonjour,
Cela fonctionne, merci beaucoup ! (Et merci pour l'optimisation de code).
Bonne journée
Axel