XL 2016 Function ne se met pas à jour dans excel

SystemeD

XLDnaute Nouveau
Bonjour à tous,

J'ai créé (grâce à votre aide) une fonction dans un module sur VBA que j'ai intégré dans mes cellules (=NbreCellulesCouleurParSite(plage;B6;$E$5))

Sauf que depuis que j'ai plusieurs onglets avec chacun leur tableau de suivi, si je vais d un onglet à l autre il mets à zéro les autres.

Est ce que vous sauriez pourquoi?

Function Couleur(Cellule As Range)
Application.Volatile
Couleur = Cellule.Interior.ColorIndex
End Function

Function NbreCellulesCouleur(Plage As Range, Couleur As Byte) As Long
'Compter le nombre de cellules d'une couleur donnée dans une plage donnée
'Plage: plage de cellules à inspecter
'Couleur: valeur de la couleur cherchée

Application.Volatile

Dim Cellule As Range

For Each Cellule In Plage
If Cellule.Interior.ColorIndex = Couleur And Not IsEmpty(Cellule) Then
NbreCellulesCouleur = NbreCellulesCouleur + 1
End If
Next Cellule

End Function


Function NbreCellulesCouleurParSite(Plage As Range, CouleurCellule As Range, Site As String)
Application.Volatile
Dim Cellule As Range, Couleur, NbreCellulesCouleur
Couleur = CouleurCellule.Interior.Color
Colonne = Plage.Column
For Each Cellule In Plage
If Cellule.Interior.Color = Couleur And Cells(Cellule.Row, Colonne) = Site Then
NbreCellulesCouleur = NbreCellulesCouleur + 1
End If
Next Cellule
NbreCellulesCouleurParSite = NbreCellulesCouleur
End Function


Merci

Bonne journée.
 

Fred0o

XLDnaute Barbatruc
Bonjour SystemeD

Sans fichier exemple, difficile de savoir exactement. Cependant, a la lecture rapide de ton code, je detecte une anomalie. Tu as le meme identifiant pour une fonction et pour une variable. Ainsi, il peut y avoir un conflit entre les deux. Il s'agit de "NbreCellulesCouleur" et "Couleur". Essaie de renommer la variable par exemple en "NbCellulesCouleur" et l'autre en "Coul" et teste a nouveau.

Si ca ne fonctionne toujours pas, poste un fichier exemple
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour SystemeD

cela fonctionne bien chez moi, question bête, ton calcul automatique ne serait t'il pas désactivé ou ne désactiverait tu pas les événements dans ton code ?
J'ai modifié un peu tes fonctions

Bien cordialement, @+
VB:
Function Couleur(Cellule As Range)
Application.Volatile
Couleur =  Cellule(1).Interior.ColorIndex
End Function

Function NbreCellulesCouleur(Plage As Range, Couleur&) As Long
'Compter le nombre de cellules d'une couleur donnée dans une plage donnée
'Plage: plage de cellules à inspecter
'Couleur: valeur de la couleur cherchée

Application.Volatile

Dim Cellule As Range, Compteur&

For Each Cellule In Plage
    If Cellule.Interior.ColorIndex = Couleur And Not IsEmpty(Cellule) Then Compteur = Compteur + 1
Next Cellule
NbreCellulesCouleur = Compteur
End Function


Function NbreCellulesCouleurParSite(Plage As Range, CouleurCellule As Range, Site As String)
Application.Volatile
Dim Cellule As Range, Couleur&, NbreCellulesCouleur&
Couleur = CouleurCellule.Interior.Color
Colonne = Plage.Column
For Each Cellule In Plage
    If Cellule.Interior.Color = Couleur And Cells(Cellule.Row, Colonne) = Site Then NbreCellulesCouleur = NbreCellulesCouleur + 1
Next Cellule
NbreCellulesCouleurParSite = NbreCellulesCouleur
End Function
 

Discussions similaires

Réponses
19
Affichages
672

Statistiques des forums

Discussions
314 629
Messages
2 111 345
Membres
111 110
dernier inscrit
chergui