Problème de l'utilisation de la fonction somcool

benjiii369

XLDnaute Nouveau
Bonjour,

Dans mon fichier de notation par couleur, j’utilise la fonction somcool.
Elle fonctionne lorsque je l'écris sous la forme =SomCool('nom de l'éleve'!B:B;"rouge")
seulement je souhaite ne pas recopier le nom de chaque élève mais que ce nom d'élève qui correspond à une feuille fasse référence au nom inscrit dans une cellule.

Comment faire ?

Merci d'avance ! :)
 

Pièces jointes

  • Notation.xlsm
    166.1 KB · Affichages: 45
  • Notation.xlsm
    166.1 KB · Affichages: 44
  • Notation.xlsm
    166.1 KB · Affichages: 39

PMO2

XLDnaute Accro
Re : Problème de l'utilisation de la fonction somcool

Bonjour,

Votre classeur a des liaisons avec d'autres et, de ce fait, nous n'avons pas toutes les infos pour comprendre votre problématique.
Pouvez-vous construire un classeur sans liaison pour l'illustrer ?
 

PMO2

XLDnaute Accro
Re : Problème de l'utilisation de la fonction somcool

Bonjour,

J'ai 2 pistes à vous proposer (dans l'exemple, voir la feuille "Prépa_Pro_Troisième_")

1) Function SomCool_pmo(NomFeuille As Range, Zone As Range, Couleur As String) As Long
Elle s'écrit =SomCool_pmo(B6;B17:E100;"rouge")
Le troisième argument est de type String

OU

2) Function SomCool_pmo2(NomFeuille As Range, Zone As Range, Cellule_Couleur As Range) As Long
Elle s'écrit =SomCool_pmo2(B6;B17:E100;E29)
Le troisième argument est de type Range et transmet sa propriété Interior.ColorIndex

A vous de choisir.

Code:
Function SomCool_pmo(NomFeuille As Range, Zone As Range, Couleur As String) As Long
Dim C As Range
'---
Application.Volatile True
Select Case Couleur
  Case "rouge"
    Couleur = 3
  Case "bleu"
    Couleur = 5
  Case "orange"
    Couleur = 44
  Case "vert clair"
    Couleur = 35
  Case "vert"
    Couleur = 4
End Select
'---
For Each C In Sheets(NomFeuille.Value).Range(Zone.Address)
  If WorksheetFunction.And(C.Interior.ColorIndex = Couleur) Then _
      SomCool_pmo = SomCool_pmo + 1
Next C
End Function

'#################

Function SomCool_pmo2(NomFeuille As Range, Zone As Range, Cellule_Couleur As Range) As Long
Dim C As Range
'---
Application.Volatile True
'---
For Each C In Sheets(NomFeuille.Value).Range(Zone.Address)
  If WorksheetFunction.And(C.Interior.ColorIndex = Cellule_Couleur.Interior.ColorIndex) Then _
      SomCool_pmo2 = SomCool_pmo2 + 1
Next C
End Function
 

Pièces jointes

  • Notation_pmo.xlsm
    143.7 KB · Affichages: 43

Discussions similaires

Réponses
1
Affichages
187

Statistiques des forums

Discussions
312 472
Messages
2 088 710
Membres
103 930
dernier inscrit
Jibo