Probleme avec #valeur

Bonjour a tous,

c'est tres etrange car dans un fichier excel, mon code fonctionne mais pas dans un autre fichier excel.

Les cases sont au format nombre, sans separateur de virgule puisque mes donnees sont entiers et vont de 1 a 100.

Il ne peut pas y avoir d'espace caches puisque les cases sont les resultats d'une formule.

Voici mon code :

' calculer moyenne selon couleur de la tete

Public Function moyenneCouleur(plage As Range)

Application.Volatile

For Each c In plage

If c.Interior.ColorIndex = 1 Then

cpt = cpt + 1

tot = tot + c.Value

End If

Next c

moyenneCouleur = tot / cpt

End Function

En gros mon code calcule la moyenne des chiffres situes dans la colonne sous une cellule de couleur noire (car il peu y avoir plusieurs case noire mais qui change de place toutes les semaines selon les controles)

Je pense que c'est un probleme tout bete mais a part varier le format de mes cellules, je ne sais pas quoi faire alors je prends toutes les bonnes idees qui vous passe par la tete =)

MERCI MERCI BEAUCOUP

Lise

Bonjour.

Pour un problème de ce genre c'est pratique de fournir le fichier en question

Bonne journée.

Salut Elhevan

merci de te pencher sur mn petit probleme =)

Je t'ai joint un exemple ou j'essaie d'utiliser ma macro en J38.

(A noter que ce code fonctionne dans un autre excel et je ne comprends pas quelles sont les differences entre mes excel puisque j'en ouvre un toujours de la meme facon)

7exemple.xlsm (103.81 Ko)

Bonjour,

Rien que de très normal, tes cellules ne sont pas colorées (une MFC ne modifie pas la couleur de cellule).

Alors pourquoi dans ce fichier le code fonctionne ?

Exemples en E et I31

6exemple2.xlsm (101.33 Ko)

Si, si, c'est bien colorié, pas de la couleur présente dans sa fonction, mais ça l'est.

J'arrive à faire ton truc avec une macro, mais la fonction me résiste encore


Forcément je teste dans mes macros avec les déclarations, je reprends ta fonction sans les déclarations et je me demande pourquoi ça marche dans un cas et pas dans l'autre Donc voilà.

Function moyenneCouleur(plage As Range)
   Application.Volatile
   Dim cpt As double
   Dim tot As double
   cpt = 0
   tot = 0
    For Each c In plage
       If c.Interior.Color = 16777215 Then
            cpt = cpt + 1
           tot = tot + c.Value
        End If
    Next c
    moyenneCouleur = tot / cpt
End Function

wwwwwwwwwwaaa c'est magique !! Mille fois j'aurai du me lancer a poser une question sur un forum ! merci merci merci car je n'aurai JAMAIS trouve toute seule !

De rien

Morale : Ne jamais faire confiance à Excel pour initialiser tes variables !

Elhevan : une couleur est une donnée de type Long ! Inutile de s'encombrer avec Double !

Et où as-tu écrit ton code : double devient toujours Double dans l'éditeur !

Elhevan, en fait faux espoir T-T la formule fonctionne dans le fichier exemple 2 que je t'avais joint mais lorsque je l'utilise dans mon vrai excel ... ca ne fonctionne plus. As-tu modifie autre chose que le code ? un parametre, une option dans Excel etc. ?

Rechercher des sujets similaires à "probleme valeur"