Compter selon date/période (Vba ou fn Si)

Résolu
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention   -  
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je me permets de vous solliciter pour un problème que j'ai grand mal à résoudre.

Je souhaite comptabiliser des données (dans le document ci-joint colonne L) en fonction de la date.
J'ai essayer plusieurs formules (voir en L) mais celle-ci ne marche pas et en plus je ne suis pas sur qu'elle puisse réaliser tout ce que je souhaite faire.

Je souhaite comptabiliser les données en H uniquement si la date en colonne E est comprise entre le 01/04/2012 et 16/04/2012.

Petite complication si cela est possible : le 16/04/2012 est un dimanche alors il faudrait qu'excel comprenne que l'intervalle se réduit du 01/04/2012 au 14/04/2012.

Et j'ai mis ce sujet dans le forum programmation pour la demande qui suit.

En effet, il faudrait que cette formule s'actualise en fonction du mois en cours. Je m'explique : Nous sommes en mai l'intervalle devient alors 01/04/2012 au 16/05/2012. Et ainsi de suite.

Merci mille fois de vous penchez sur mon problème. Si vous avez le moindre problème de compréhension du problème où besoin de compléments, n'hésitez pas.
Jusqu'à maintenant j'ai franchi toutes les étapes pour parvenir à ce rendu et j'espère ne pas avoir à baisser les bras si près du but.

Fichier : https://www.cjoint.com/?BDrpAVSie7z

A voir également:

15 réponses

lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bon, je pense que c'est la dernière :-)
Public Function VIP_mois(Mois As Integer, plage As Range) As Integer
Dim Cel As Range, NbJour As Integer
Dim NB As Integer
Dim D As Date
    Application.Volatile
    NbJour = IIf(Mois < 12, DateDiff("d", "1/" & Mois & "/" & Year(Now), "1/" & Mois + 1 & "/" & Year(Now)), 31)
    D = NbJour & "/" & Mois & "/" & Year(Now)
    For Each Cel In plage
        If Cel = "VIP" Then
            If Cel.Offset(0, 1) <= D And Cel.Offset(0, 2) > D Then
                NB = NB + Cel.Offset(0, 4)
            End If
        End If
    Next Cel
    VIP_mois = NB
End Function

Si c'est bon oublie pas de cocher "Résolu" (en haut à gauche)
A+
1
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Lermite222, tu m'as été d'une grande aide sur ce fichier.

J'ai un fichier bien plus grand, où j'aurai besoin du même genre de fonction. Serait-il possible que tu me donne un coup de main dessus ?

Voici le fichier en question : https://www.cjoint.com/?BDxl0EIcTY0

Il s'agirait en fait pour la feuille FTP qui se rempli par le userform_Fontionnaire/CDI, de compter en fonction du statut dans la colonne J (quotité effective).
Si fonctionnaire ou CDI et date de saisie > 15 (du mois en cours) quotité effective = 0 soit colonne J = 0.

Pour fonctionnaire, si date de saisie <= 15 (du mois en cours) colonne J = colonne G
Pour CDI, si date de saisie <= 15(mois en cours) colonne j = z/y colonne G
Z = nombre de jours travaillés
Y = nombre de jours du mois
Soit calculé la colonne J au prorata du nombre de jours travaillés.

Tout en incorporant, les points particuliers du fichier précédant, exclusion du dimanche et prise en compte du nombre précis de jours du mois en cours.

Si tu y arrives (je n'en doute pas trop :) et si je n'abuse pas trop de ta sympathie, je te demanderai une formule pour la feuille HS et une autre pour la CDD.

Quoi qu'il en soit, je met ce fil en résolu car tu m'a été d'une grande aide ;) Merci
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Si tu préfère, je peux ouvrir un nouveau fil de discussion ? Mais j'espère que tu pourra m'aider parce qu'il n'est pas facile, comme tu as pu le voir au tout début, d'expliquer mes besoins.
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Ouvre un nouveau poste, suis indisponible pour au moins une huitaine de jours?
A+
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Merci lermite 222, je vais faire ca ;)
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour le forum,

Ne voyez vous aucune solution pour ma question ?

Où ma question n'est-elle pas claire ?
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
C'est quoi qui décide de la période ?
Dans ton exemple il y a des dates de mai et d'avril ?
Et essaye d'expliquer un peu plus, c'est pas fort clair
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Lermite222, bonjour le forum,

La période démarre début 2012 (ou même avant) et se termine le 16 du mois en cours. En fait de mois en mois la période s'aggrandit... Est-ce que je me fais bien comprendre.
Un exemple :
Nous sommes le 15/04/2012 : la période va du 01/01/2012 jusqu'au 15/04/2012.
Nous sommes le 16/04/2012 : la période va du 01/01/2012 jusqu'au 16/04/2012.
Nous sommes le 17/04/2012 : la période va du 01/01/2012 jusqu'au 16/04/2012.

Mais dès le 1er mai la période doit se réactualiser pour reprendre en compte la fin du mois d'avril oublié. Et le 16 mai rebelote : fin de période jusqu'au premier janvier.
En gros, pour chaque mois en cours, la période du 17 inclus au 30 ou 31 doit être exclu avant d'être réintégré le mois suivant.

Si ce n'est toujours pas clair merci de me le préciser et j'essayerai de créer un petit fichier excel explicatif.
Merci à vous
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

Je viens de créer un petit exemple pour essayer de faire comprendre la tâche que je souhaite réaliser :

Fichier ci-joint : https://www.cjoint.com/?BDtxcYcFAHQ

Si au moins vous pouvez m'indiquez vers où me tourner pour trouver le moyen de réaliser, via une formule ou encore mieux du VBA, une formule pour calculer automatiquement la colonne E suivant la date du jour en cours.

Bonne soirée
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Si je comprend bien.. (pas sûr)
1er cadre : totaliser la colonne E si date < 16/4
Note : 2 x Famille H dans le cadre erreur ou normal ?
Si Normal faudra modifier par exemple Famille H(2)
2em cadre idem si date < 16/5

Et le 3, Total du 1/1 au 15/6
Sans doublon du tout ou bien en tenant compte de chaque cadre
Exemple Dans cadre 1 Famille A Nombre P = 1 -- Dans Cadre 2 Famille A Nombre P=1
Dans le total 3 ça devrait faire 1 ou 2 ??
Si j'ai tout les renseignement je pourrais voire pour faire une fonction perso en VBA, suis pas spécialiste des formules Excel.
Ca te conviendrais ?
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour lermite222,

1er cadre : il s'agit bien de totaliser colonne E si date (inférieur ou égal) à 16/04/2012 soit le 16 inclus. [ Et pour H il s'agit d'une erreur de ma part c'est en fait L]

2eme cadre : idem si date<16/05/2012 (également 16/05/2012 inclus).

En fait ce sont les mêmes familles dans le cadre 1 et 2. Donc famille A (cadre1) = famille A (cadre2) = Famille A (cadre 3) = 1.
Et famille B (cadre 1) = famille B (cadre 2) = 2 , etc.

En vba ca serait parfait c'est ce que je cherches :)

Si tu y arrives j'aimerai apporter quelques complications à ce petit cas si ca ne t'embete pas trop

Merci pour le coup de main ;)
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Je n'aime pas beaucoup de faire un travail en plusieurs fois ça nécessite souvent de tout revoir.
Alors maintenant que j'ai bien compris le départ explique
Si tu y arrives j'aimerai apporter quelques complications à ce petit cas si ca ne t'embete pas trop
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
J'essaie de formuler cela en un exemple et je te le fais parvenir au plus vite. Merci
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Voici un nouveau fichier avec l'ensemble des possibilités que je souhaiterais retrouver dans mon projet.
Cela n'est pas forcément évident à comprendre et si tu as besoin de plus ample précision, n'hésite pas.

Fichier ci-joint : https://www.cjoint.com/?BDurohdSzyd

merci encore de me donner un coup de main
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
OK.
Effectivement c'est pas simple.
Je vois ce que je peu faire mais ça va prendre un ti temps.
A+
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Ton classeur en retour
J'ai scinder les VIP et NON VIP pour un contrôle plus facile mais ça ne pose aucun problème pour les rassembler.
Il y a plusieurs incohérences dans tes explications.. Vérifie et...
Tu dis
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Bravo !
Je ne suis pas encore trop rentré dans le code pour regarder mais je n'y manquerai pas. J'ai corrigé mes petites erreurs.
Je te reposte le fichier avec les petites modifications.

Une question tout de même est -il possible de faire tous ces calculs avec un automatisme de la date du jour. C'est à dire que si j'envoie mon fichier le 28/04/2012 il calcule automatiquement tout ce qui se fait dans le premier tableau.
Si je l'envoie le 25/05/2012, il fait les calculs du second tableau...
Et ainsi de suite pour chaque mois

Voici le fichier : https://www.cjoint.com/?BDvnsvbyFgo
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
C'EST... automatique. Vérifie, change une date significative ou le nombre de personnes et tu verras.
Reste une question.. Pour février ??
Pour le 15 qui serait un dimanche, tu travail le dimanche ?
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Oui il se peut qu'une personne parte le 15 c'est pour cela qu'il faudrait que le dimanche ne rendre pas en ligne de compte...
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
tu dis rien pour février ?
OK pour le dimanche je modifie
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Vesion 2 : Test sur le 14 si le 15 est un dimanche
Calcul période 2
Tu répond pas pour février mais je te signal que ça fera une erreur pour le 30 février.
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour lermite222,

Je n'avais pas compris pour le mois de février, et je comprends d'ailleurs pas trop le problème ?
Sinon à part cela j'ai un problème pour ouvrir ton fichier, mon site entreprise m'en bloque l'accès pourrais-tu le reposter via ce site : https://www.cjoint.com/

Merci d'avance
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Tu comprend pas pour février ?? Tu a déjà vu un mois de février avec 30 jours ? moi connais pas.
Tape 30/2/2012 dans une cellule au format date et tu comprendra.
ou change le N° du mois dans la formule VIP (2 à la place de 4)
Tu sais pas lire mon fichier ? tu a pourtant su ouvrir le précédant !
Mais juste une ligne à ajouter sous...
    D = "15/" & Mois & "/" & Year(Now) 

Tu met 

    If Weekday(D, vbSunday) = 1 Then D = D - 1

A+

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Re,
Si ok je viens de comprendre. Je partais du principe qu'excel prenais en compte le nombre de jour dans le mois. Mai sil a un standard a 30 jours, est-ce bien ca ?
Comment du coup cela peut-il marcher pour le mois de février ?

Concernant ton fichier, je peux l'ouvrir depuis chez moi mais pas depuis mon lieu de travail, d'où le fait que j'ai su ouvrir le précédant...

Merci
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Il n'y a pas de "standard", excel "connait" le nombre de jours dans un mois, 28, 29,30 ou 31
Et bien il faudrait tester le mois.. Si février calculer le nombre de jours maxi (Bissextile) et tester sur ce nombre de jours, 28 ou 29 à la place de 30.
Ça irait ?
Tu dis
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Bien sur cela serait bien.. Et permettrait de ne pas fausser les résultats.
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Remplace la fonction par..
Public Function VIP_mois(Mois As Integer, plage As Range) As Integer   
Dim Cel As Range, NbJour As Integer   
Dim NB As Integer  
Dim D As Date   
    Application.Volatile   
    NbJour = IIf(Mois = 2, DateDiff("d", "1/2/" & Year(Now), "1/3/" & Year(Now)), 30) 
    D = NbJour & "/" & Mois & "/" & Year(Now)   
    For Each Cel In plage   
        If Cel = "VIP" Then   
            If Cel.Offset(0, 1) <= D And Cel.Offset(0, 2) > D Then   
                NB = NB + Cel.Offset(0, 4)   
            End If   
        End If   
    Next Cel   
    VIP_mois = NB   
End Function

Ne vaudrait-il pas mieux de tenir compte du nombre de jours réel dans le mois plutôt que 30 fixe ?
Tu dis
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
C'est magique :) ca marche parfaitement.
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
réponse à l'édit de mon poste précédant. ?
0
Co_nexion Messages postés 328 Date d'inscription   Statut Membre Dernière intervention  
 
Pardon j'étais tellement sur le code que je n'avais pas vu ton post juste en bas ...
Oui en effet, c'est le nombre de jours réel dans le mois comme je le précisais pour février qui tient lieu de référence
0