OVH Cloud OVH Cloud

Erreur d'exécution "13"

5 réponses
Avatar
Patrick Bastard
Bonsoir, vous tous.

If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
devient jaune de rage. Pourquoi tant de N?

Le code complet :
------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cell As Range
Dim Compteur As Integer

Compteur = 0
For Each Cell In Range("B3:H47")
If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
End If
Next Cell
Range("A1") = Compteur

End Sub

------------------------------------------------

Merci d'aider le béotien que je suis toujours en VBA -sans fausse modestie-
;-)


--
Bien cordialement,
=====================================
P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse

Une foule de conseils utiles sur le site de Misange :
http://www.excelabo.net

5 réponses

Avatar
michdenis
Bonjour Patrick,

En supposant que la valeur dans la cellule a1 est situé entre 0 et 56 et pour en être sûr :

If range("A1") >=0 and Range("A1")<V then
If Cell.Interior.ColorIndex = range("A1") Then
Msgbox "ok"
end if
end if

pour ce qui est de ta procédure, attention, si tu modifies la couleur de fond d'une des cellules de la feuille, cela ne
déclenchera pas ta procédure événementielle ... la modification d'un format ne suscite pas de réaction ....

tu serais mieux d'utiliser une fonction comme celle-là :

Tu copies ceci dans un module STANDARD.

= Couleur(B3:H47,5)

5 représente le colorindex dont tu veux calculer le nombre dans la plage B3:H47

Et pour recalculer le truc, tu devras utiliser la touche F9 ou le recalcul de la feuille où la fonction est écrite.

'----------------------------
Function Couleur(Rg as range, LaCouleur as integer)As long
Dim B as long
Application.volatile
for each C in Rg
if c.interior.colorindex = LaCouleur then
B= b+1
end if
next
Couleur = b
End Function
'----------------------------


Salutations!


"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de news:%
Bonsoir, vous tous.

If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
devient jaune de rage. Pourquoi tant de N?

Le code complet :
------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cell As Range
Dim Compteur As Integer

Compteur = 0
For Each Cell In Range("B3:H47")
If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
End If
Next Cell
Range("A1") = Compteur

End Sub

------------------------------------------------

Merci d'aider le béotien que je suis toujours en VBA -sans fausse modestie-
;-)


--
Bien cordialement,
==================================== P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse

Une foule de conseils utiles sur le site de Misange :
http://www.excelabo.net
Avatar
Patrick Bastard
Merci, Denis.

Je cherche en fait à compter le nombre de cellules ayant la même couleur que
la cellule qui recevra le décompte.

Le but : Un planing hebdo par 1/4 d'heure avec des couleurs différentes
(prestations), mais pas toutes renseignées :
pour une prestation d'1h, par exemple, une cellule avec le libellé de la
prestation, et 3 cellules vides, les 4 de la même couleur
ce qui m'empèche d'utiliser une formule pour calculer le nombre d'heures par
semaine et par prestation.

Je dîne, je teste et te tiens informé.

Cordialement,


Bonjour Patrick,

En supposant que la valeur dans la cellule a1 est situé entre 0 et 56
et pour en être sûr :

If range("A1") >=0 and Range("A1")<V then
If Cell.Interior.ColorIndex = range("A1") Then
Msgbox "ok"
end if
end if

pour ce qui est de ta procédure, attention, si tu modifies la couleur
de fond d'une des cellules de la feuille, cela ne déclenchera pas ta
procédure événementielle ... la modification d'un format ne suscite
pas de réaction ....

tu serais mieux d'utiliser une fonction comme celle-là :

Tu copies ceci dans un module STANDARD.

= Couleur(B3:H47,5)

5 représente le colorindex dont tu veux calculer le nombre dans la
plage B3:H47

Et pour recalculer le truc, tu devras utiliser la touche F9 ou le
recalcul de la feuille où la fonction est écrite.

'----------------------------
Function Couleur(Rg as range, LaCouleur as integer)As long
Dim B as long
Application.volatile
for each C in Rg
if c.interior.colorindex = LaCouleur then
B= b+1
end if
next
Couleur = b
End Function
'----------------------------


Salutations!


"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de
news:% Bonsoir, vous tous.

If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
devient jaune de rage. Pourquoi tant de N?

Le code complet :
------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cell As Range
Dim Compteur As Integer

Compteur = 0
For Each Cell In Range("B3:H47")
If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
End If
Next Cell
Range("A1") = Compteur

End Sub

------------------------------------------------

Merci d'aider le béotien que je suis toujours en VBA -sans fausse
modestie- ;-)


Avatar
michdenis
Utilise ceci comme fonction :

'------------------------
Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function
'------------------------

Dans la cellule : = couleur(B3:H47)

B3:H47 = Plage où le décompte se fait le décompte...du nombre de cellules de même couleur que la cellule où tu inscrit la
fonction dans la feuille de calcul.


Salutations!



"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de news:
Merci, Denis.

Je cherche en fait à compter le nombre de cellules ayant la même couleur que
la cellule qui recevra le décompte.

Le but : Un planing hebdo par 1/4 d'heure avec des couleurs différentes
(prestations), mais pas toutes renseignées :
pour une prestation d'1h, par exemple, une cellule avec le libellé de la
prestation, et 3 cellules vides, les 4 de la même couleur
ce qui m'empèche d'utiliser une formule pour calculer le nombre d'heures par
semaine et par prestation.

Je dîne, je teste et te tiens informé.

Cordialement,


Bonjour Patrick,

En supposant que la valeur dans la cellule a1 est situé entre 0 et 56
et pour en être sûr :

If range("A1") >=0 and Range("A1")<V then
If Cell.Interior.ColorIndex = range("A1") Then
Msgbox "ok"
end if
end if

pour ce qui est de ta procédure, attention, si tu modifies la couleur
de fond d'une des cellules de la feuille, cela ne déclenchera pas ta
procédure événementielle ... la modification d'un format ne suscite
pas de réaction ....

tu serais mieux d'utiliser une fonction comme celle-là :

Tu copies ceci dans un module STANDARD.

= Couleur(B3:H47,5)

5 représente le colorindex dont tu veux calculer le nombre dans la
plage B3:H47

Et pour recalculer le truc, tu devras utiliser la touche F9 ou le
recalcul de la feuille où la fonction est écrite.

'----------------------------
Function Couleur(Rg as range, LaCouleur as integer)As long
Dim B as long
Application.volatile
for each C in Rg
if c.interior.colorindex = LaCouleur then
B= b+1
end if
next
Couleur = b
End Function
'----------------------------


Salutations!


"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de
news:% Bonsoir, vous tous.

If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
devient jaune de rage. Pourquoi tant de N?

Le code complet :
------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cell As Range
Dim Compteur As Integer

Compteur = 0
For Each Cell In Range("B3:H47")
If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
End If
Next Cell
Range("A1") = Compteur

End Sub

------------------------------------------------

Merci d'aider le béotien que je suis toujours en VBA -sans fausse
modestie- ;-)


Avatar
Patrick Bastard
Bonsoir, Denis.

J'ai dîné, testé, et te tiens donc informé :
C'est très exactement ce que je cherchais à obtenir.
J'eusse bien sûr préféré ne pas avoir à recalculer, mais si le changement de
format ne peut être détecté...

Donc, encore merci,

Bien cordialement,

Patrick.


Bonjour Patrick,


tu serais mieux d'utiliser une fonction comme celle-là :

Tu copies ceci dans un module STANDARD.

= Couleur(B3:H47,5)

5 représente le colorindex dont tu veux calculer le nombre dans la
plage B3:H47

Et pour recalculer le truc, tu devras utiliser la touche F9 ou le
recalcul de la feuille où la fonction est écrite.

'----------------------------
Function Couleur(Rg as range, LaCouleur as integer)As long
Dim B as long
Application.volatile
for each C in Rg
if c.interior.colorindex = LaCouleur then
B= b+1
end if
next
Couleur = b
End Function
'----------------------------


Salutations!


"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de
news:% Bonsoir, vous tous.

If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
devient jaune de rage. Pourquoi tant de N?

Le code complet :
------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cell As Range
Dim Compteur As Integer

Compteur = 0
For Each Cell In Range("B3:H47")
If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
End If
Next Cell
Range("A1") = Compteur

End Sub

------------------------------------------------

Merci d'aider le béotien que je suis toujours en VBA -sans fausse
modestie- ;-)




Avatar
Patrick Bastard
Mais...
Mais ça marche :-)
Et les changements de format sont pris en compte. :-) :-)

Vraiment, merci Denis.

Bien cordialement,

Patrick.


Utilise ceci comme fonction :

'------------------------
Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function
'------------------------

Dans la cellule : = couleur(B3:H47)

B3:H47 = Plage où le décompte se fait le décompte...du nombre de
cellules de même couleur que la cellule où tu inscrit la fonction
dans la feuille de calcul.


Salutations!



"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de
news: Merci, Denis.

Je cherche en fait à compter le nombre de cellules ayant la même
couleur que
la cellule qui recevra le décompte.

Le but : Un planing hebdo par 1/4 d'heure avec des couleurs
différentes (prestations), mais pas toutes renseignées :
pour une prestation d'1h, par exemple, une cellule avec le libellé de
la
prestation, et 3 cellules vides, les 4 de la même couleur
ce qui m'empèche d'utiliser une formule pour calculer le nombre
d'heures par
semaine et par prestation.

Je dîne, je teste et te tiens informé.

Cordialement,


Bonjour Patrick,

En supposant que la valeur dans la cellule a1 est situé entre 0 et 56
et pour en être sûr :

If range("A1") >=0 and Range("A1")<V then
If Cell.Interior.ColorIndex = range("A1") Then
Msgbox "ok"
end if
end if

pour ce qui est de ta procédure, attention, si tu modifies la couleur
de fond d'une des cellules de la feuille, cela ne déclenchera pas ta
procédure événementielle ... la modification d'un format ne suscite
pas de réaction ....

tu serais mieux d'utiliser une fonction comme celle-là :

Tu copies ceci dans un module STANDARD.

= Couleur(B3:H47,5)

5 représente le colorindex dont tu veux calculer le nombre dans la
plage B3:H47

Et pour recalculer le truc, tu devras utiliser la touche F9 ou le
recalcul de la feuille où la fonction est écrite.

'----------------------------
Function Couleur(Rg as range, LaCouleur as integer)As long
Dim B as long
Application.volatile
for each C in Rg
if c.interior.colorindex = LaCouleur then
B= b+1
end if
next
Couleur = b
End Function
'----------------------------


Salutations!


"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de
news:% Bonsoir, vous tous.

If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
devient jaune de rage. Pourquoi tant de N?

Le code complet :
------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cell As Range
Dim Compteur As Integer

Compteur = 0
For Each Cell In Range("B3:H47")
If Cell.Interior.ColorIndex = Cell.Interior.ColorIndex("A1") Then
Compteur = Compteur + 1
End If
Next Cell
Range("A1") = Compteur

End Sub

------------------------------------------------

Merci d'aider le béotien que je suis toujours en VBA -sans fausse
modestie- ;-)