Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion cibleo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cibleo

XLDnaute Impliqué
Bonsoir le forum,

Cette fonction personnalisée me permet de compter les dates de la colonne B dont le mois et l'année sont identiques à C$3 dans l'exemple.
VB:
Function Nbre_Controles(Plage1 As Range, LaCellule As Range) As Byte
Application.Volatile
  For Each Cell In Plage1
    If Cell.Value = "x" Then
      If DatePart("m", Cells(Cell.Row, Cell.Column).Offset(0, 1)) = DatePart("m", LaCellule) _
      And DatePart("yyyy", Cells(Cell.Row, Cell.Column).Offset(0, 1)) = DatePart("yyyy", LaCellule) _
      Then Somme = Somme + 1
    End If
  Next
  Nbre_Controles = Somme
End Function

Retranscrite comme ceci en C112 :
=Nbre_Controles($A$6:$A$111;C$3)

C$3 renvoie juin 2011 (au format mmmm aaaa)
Cells(Cell.Row, Cell.Column).Offset(0, 1) renvoie des dates au format jjj j mmm aa, ex : lun 20 juin 11

J'aimerais savoir s'il n'y avait pas plus simple que la syntaxe Datepart ci-dessus pour comparer le mois et l'année de mes 2 cellules.

Et donc éviter ceci : If DatePart("m",... and DatePart("yyyy",....

Est-ce possible ?
Cibleo
 
Dernière édition:
Re : Datepart

Salut Cibleo

Pourquoi une fonction personnalisée !?

Une "simple" formule du type :
Code:
=SOMMEPROD((MOIS(B2:B100)=MOIS(C3))*(ANNEE(B2:B100)=ANNEE(C3)))
Te donne également le bon résultat

A+
 
Re : Datepart

Salut Bruno 🙂

En voulant bien faire, j'ai oublié de préciser qu'en colonne B, il n'y avait pas que des dates mais aussi du texte.
Et donc Le sommeprod me renvoie une valeur d'erreur 🙁
C'est pour ça que j'ai mis ceci pour la colonne A juste à coté des dates situées en colonne B.
If Cell.Value = "x" Then
Sinon, j'imaginais une syntaxe de type Format(Month et Year) sur les cellules
Mais, c'est vrai qu'une formule avec sommeprod, cela devrait le faire.
J'ai tellement délaissé les formules depuis quelques temps 😕

Cibleo
 
Dernière édition:
Re : Datepart

Cibleo,

Effectivement, dans ce cas, sans utliser de colonne "A"
Voici ta fonction modifiée 😉
VB:
Function Nbre_Controles(Plage1 As Range, LaCellule As Range) As Byte
  Dim Cell As Range, Somme As Byte
  Application.Volatile
  Somme = 0
  For Each Cell In Plage1
    If IsDate(Cell) Then
      Somme = Somme + Abs(Month(Cell) = Month(LaCellule) And Year(Cell) = Year(LaCellule))
    End If
  Next
  Nbre_Controles = Somme
End Function

Ou Plage1 = B2:B100 (par exemple)
et LaCellule = C3

A+
 
Re : Datepart

Re Bruno, 🙂

On traite directement la colonne B, c'est plus simple
Cette fonction personnalisée qui sort des sentiers battus, c'est super.
Jamais, je ne l'aurais trouvée.
Je vais méditer sur Abs que je n'ai jamais employé 🙄

Merci Bruno
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
1 K
Réponses
2
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…