Calcul à partir d'une date

Bonjour,

Je ne trouve pas la formule pour mon problème qui est le suivant :

j'ai 4 feuilles identiques ( ACC - SAP - INC - OPD ) dans ces feuilles j'ai la date qui s'inscrit dans la colonne B et le jours dans la colonne C ( grâce à un formulaire de saisie).

Dans une autre feuille j'aimerais compter le nombre de Lundi par exemple sur les feuilles en fonction de la date (colonne B), et par mois.

Voilà merci de votre aide

27 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Besoin : compter le nombre de lundis par mois sur quatre feuilles identiques (ACC, SAP, INC, OPD) à partir des dates en colonne B et des jours en colonne C. Une solution pratique propose une fonction VBA, NombreJ, qui compte les occurrences d'un jour donné (lundi = 2) entre deux dates, utilisable avec une formule comme =NombreJ(B8;C8;2). D'autres échanges évoquent des approches alternatives, notamment des macros d'ouverture et des conseils de configuration des feuilles, mais ces options restent plus implicites et dépendent de la structure exacte du classeur. En cas de précision supplémentaire, il faut définir l’intervalle mensuel, harmoniser les formats de date sur les feuilles et prévoir une plage de dates représentatives afin d’obtenir des résultats cohérents et reproductibles.

Bobot (l’IA à votre service)
  1. Contributeur
    VBA >>
    Dans l'explorateur de projet double clic sur ThisWorkBook.
    Dans la fenêtre qui s'ouvre tu colle...
    Option Explicit
    Private Sub Workbook_Open()
        Sheets("Acceuil").Activate
    End Sub

    Adapter le nom de la feuille.
    A+
    1. Contributeur
      Bonjour,
      Il y a moyen de faire cela par formule Excel mais soit la fonction Jour360 est approximative, soit avec la dateserial ça ferait de trop longue formule.
      Une formule en VBA ?
      Tu tape le code ci-dessous dans un module général.
      Option Explicit
      'D1 la cellule de la 1ère dates
      'D2 la cellule de la 2èm date
      'Jour : Le jours à trouver, Lundi = 1, mardi = 2 etc..
      Public Function NombreJ(D1 As Range, D2 As Range, Optional Jour As Integer = 1) As Long
      Dim DT1 As Long, DT2 As Long, DT3 As Long
          Application.Volatile
          DT1 = DateValue(D1): DT2 = DateValue(D2)
          If DT1 > DT2 Then 'Vérifie si pas d'inversion
              DT3 = DT1: DT1 = DT2: DT2 = DT3
          End If
          If Jour > 7 Then Jour = 7
          If Weekday(D1, 2) <> Jour Then DT1 = DT1 + (8 - Weekday(D1, 2))
          If Weekday(D2, 2) <> Jour Then DT2 = DT2 - (Weekday(D2, 2) - Jour)
          NombreJ = ((DT2 - DT1) / 7) + 1
      End Function


      Dans la feuille tu met..
      =NombreJ(B8;C8;2)

      Voir les Rem de la fonction pour les valeurs de D1; D2 et Jour
      A+
      1. Contributeur
        C'est aussi une solution mais tu dois ajouter une colonne avec le N° du jour.
        dans cette colonne
        =JOURSEM(C4;2) 'en ajustant l'adresse. Le 2 c'est pour Lundi=1, mardi =2 etc..
        Ensuite ru peu employer NB.Si sur cette colonne
        A+
        1. Bonjour,

          En fait j'ai du mal exprimer ce que j'aimerais.

          Dans ma feuille 5 j'ai un tableau :
          Janvier Février .... Décembre
          lundi Cellule B2
          mardi
          mercredi
          ....
          Dimanche

          dans ma cellule B2, il faudrait calculer le nombre de fois qu'apparait le lundi dans mes feuilles 1,2,3 et 4 dans la colonne C, et il faudrait que je compte en fonction des dates qui sont dans la colonne B de mes 4 feuilles. c'est à dire pour l'exemple prendre en compte que les dates de 01/01 au 31/01

          C'est plus clair comme ça je pense
          1. Contributeur
            le plus simple, mettre un exemple de ton classeur sans donnée confidentielle sur CiJoint et mettre le lien dans un poste suivant.
            Sinon ont risque de tourner en rond encore longtemps.

            1. Bonjour,

              Oui tu as raison c'est plus simple, je viens de reproduire rapidement mon classeur avec juste les données qui nous intéresse.
              Par contre je ne trouve pas CI joint
              1. Modérateur
                Bonjour,
                ci-joint ou cjoint sont des sites indépendants de dépose de fichiers...
                Tu les trouveras en cliquant ici :
                cjoint ou alors cijoint
                méthode :
                "parcourir"
                Puis créer un lien vers ton fichier.
                Une fois le lien créé, le copier et venir le coller ici dans ta future réponse...
                Bonne journée
                P'tit coucou à Lermitte222 au passage
            2. Bonjour,

              Je me suis avancé trop vite ça fonctionne pas quand je le remets dans mon classeur d'origine
              1. Contributeur
                Oui, change le nom de Feuil5 par Totaux, comme sur le modèle
                ou change dans la macro le nom de la feuille
                Tu dis
                1. Contributeur
                  Ca ne fonctionne pas.
                  Pas façile de t'aider avec TOUT ces renseignements !!!!
                  Explique quoi et où ?
                  Edit: Tu a bien mis la macros dans un module public ?

                  L'expérience instruit plus sûrement que le conseil. (André Gide)
                  Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                  1. oui c'est vrai c'est pas très explicite...
                    Donc, ma feuille 10 (Totaux) dans les cases j'ai =Sommefeuille() qui me donne un défaut "#VALEUR!"
                    Dans la macro de cette feuille j'ai inscrit " OPTION EXPLICIT", et j'ai donc crée un module de classe ou j'ai fait un copier coller de ce que tu m'avais envoyé.
                    1. Contributeur
                      Apparement la réponse que j'ai mis avant hier est pas passée...
                      Tu ne dois pas mettre la fonction dans un module de classe mais dans un module public.. par exemple Module1

                      L'expérience instruit plus sûrement que le conseil. (André Gide)
                      Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                      1. Contributeur
                        Tu dis...
                        et j'ai donc crée un module de classe ou j'ai fait un copier coller de ce que tu m'avais envoyé.
                        Quel est le nom du module ?

                        1. Contributeur
                          Oups,, pas bien réagit à ton explication.
                          Pour que ça fonctionne,
                          1°) Le tableau doit être aux mêmes coordonnées que sur ton modèle.
                          2°) Les données doivent aussi êtres sur les mêmes colonnes que sur ton modèle.
                          Si l'un ou l'autre de ces point est différent dis où se trouve Lundi dans ton tableau (actuellement sur A2)
                          Et les dates dans les autres feuilles sur la colonne B ?
                          L'expérience instruit plus sûrement que le conseil. (André Gide)
                          Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                          • 1
                          • 2