Macro ne fonctionne pas avec validation de données

Joshua1

XLDnaute Nouveau
Bonjour,
J'utilise une même macro que j'appelle soit lorsque l'on sélectionne la feuille, soit lorsque l'on change le contenu d'une cellule bien précise.
Lorsqu'elle est lancée via l'évènement worksheet.activate, tout fonctionne bien.
Lorsqu'elle est lancée via l'évènement worksheet.change, il y a de gros soucis.
Après plusieurs recherches, la fonction ci dessous présente dans mon classeur semble être une des raisons de l'échec de la macro via worksheet_change puisque lorsque je la supprime du classeur, la macro fonctionne sans soucis.

Code:
Function SommeCouleurFond(champ As Range, couleurFond)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleurFond Then
If IsNumeric(c.Value) Then temp = temp + c.Value
End If
Next c
SommeCouleurFond = temp
End Function

Mais, j'ai trouvé une autre source d'erreur.
Dans mon fichier la sélection de la valeur de la cellule au départ de la macro, toujours par l'évènement worksheet_change, se fait par une validation de donnée.
Lorsque je supprime cette validation de donnée en tapant moi même la valeur, tout fonctionne très bien y compris avec la présence de la fonction citée plus haut.

Je précise que la version d'Excel ou il y a des erreurs est 2003. Sur une version 2007, il n'y a aucun soucis.

Cela fait maintenant plusieurs jours que je teste diverses solutions mais sans succès. Le classeur n'est pas complet et il est possible que le classeur complet soit nécessaire pour trouver une solution pérenne.
Avec l'aide d'un internaute, une solution possible est l'utilisation d'une combobox, mais la feuille incriminée sera dupliquée à un moment ou un autre et, avec cette combobox, la macro dupliquant la feuille ne fonctionne plus.

J'espère que quelqu'un pourra me donner une solution sinon je fais finir par tournée en bourrique.
Merci d'avance à tous ceux qui se pencherons sur cette problématique pour le moins déconcertante.
 

JBARBE

XLDnaute Barbatruc
Re : Macro ne fonctionne pas avec validation de données

Bonsoir,

Comme d'habitude un fichier aurait été le bienvenu !

Néanmoins il y a probléme ici :

Code:
If c.Interior.ColorIndex = couleurFond Then
If IsNumeric(c.Value) Then temp = temp + c.Value
End If

Code:
If c.Interior.ColorIndex = couleurFond Then



Aprés la ligne ci-dessus il devait avoir la réponse à la condition if et 1 autre End if

A+
 

Joshua1

XLDnaute Nouveau
Re : Macro ne fonctionne pas avec validation de données

C'est une macro que j'ai trouvé sur le net et qui a toujours bien fonctionné jusqu’à présent.
Et je pense que s'il manquait un end if, cette fonction ne fonctionnerait pas du tout non?
Mais je vais essayé dès demain (sur excel 2033) si cela change quoique se soit.
 

JBARBE

XLDnaute Barbatruc
Re : Macro ne fonctionne pas avec validation de données

RE !

J'ai débuté à programmer avec Excel 2003 en ayant été formé avec le livre VBA ( micro application) couvrant Excel 2003-2002-2000 (excellent accompagné d'une disquette) !

J'ai gardé quelques mauvaises( exemple: mettre >>> range("A1").value = "X" alors que l'on peut se passer de value), ( enfin peut-on dire mauvaise dans ce cas) avec Excel 2007 que je corrige petit à petit en regardant le Forum ou le livre que j'ai acheté d'occasion avec le conseil des internautes ( Programmation VBA pour Excel 2007 pour les nuls de John Walkenbach)

Oui il faut tester cette macro avec Excel 2003 car à mon avis il manque ce que j'ai décris !

A+
 

Mytå

XLDnaute Occasionnel
Re : Macro ne fonctionne pas avec validation de données

Salut le forum

La fonction fonctionne très bien sous Excel 2003.
Code:
Function SommeCouleurFond(champ As Range, couleurFond)
    Application.Volatile
    Dim c, temp
    temp = 0
    For Each c In champ
        If c.Interior.ColorIndex = couleurFond Then
            If IsNumeric(c.Value) Then temp = temp + c.Value
        End If
    Next c
    SommeCouleurFond = temp
End Function
Il faudrait voir le code de tes deux macros évenementielles.

Mytå
 

JBARBE

XLDnaute Barbatruc
Re : Macro ne fonctionne pas avec validation de données

En fait tu as peut-être raison ! mais je ne comprends pas bien ta macro et son objectif car il manque( il est possible que le classeur complet soit nécessaire) !

Je préfère t'envoyer un modèle qui additionne les cellules de même couleur pour te donner un exemple de fichier conçu pour Excel2003 et +!

Code:
Option Explicit
Function som_couleur(plage As Range, couleur As Integer) As Double
Dim r As Range, nb As Double
Application.Volatile
nb = 0
For Each r In plage
If r.Interior.ColorIndex = couleur Then
nb = nb + r.Value
End If
Next
som_couleur = nb
End Function

Function cellCouleur(c As Range)
cellCouleur = c.Interior.ColorIndex
End Function

PS : ce fichier pourra servir à plusieurs personnes jonglant avec les couleurs de cellules !
 

Pièces jointes

  • Sommecouleurs.xlsm
    20.1 KB · Affichages: 32
Dernière édition:

Joshua1

XLDnaute Nouveau
Re : Macro ne fonctionne pas avec validation de données

Donc visiblement, le problème n'est pas rencontré sur toutes les bécanes.
Je crois que j'ai trouvé la solution.
Je vais attendre que mon employeur passe à la version suivante d'Excel d'ici 10 ou 15 ans !!!
 

Discussions similaires

Réponses
18
Affichages
1 K

Statistiques des forums

Discussions
314 656
Messages
2 111 609
Membres
111 220
dernier inscrit
Elé0n0re