Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre à l'essai
    comptage de lignes sur possession de 2 critères
    Bonjour,
    Je souhaiterais compter le nombre de lignes possédant deux critères, 1 fixe et l'autre sur une date à moins de 31 jours (en fait le mois courant).
    Colonnes : A = des prénoms ; B des dates ; de C:ZB, d'autres col.

    Comment compter le nombre de lignes
    1) si "Fabienne" en col. A (prénom)
    1) SI et seulement si la date est <= 31 jours ?
    Pour la date je compare les dates col. B avec une cellule (disons ZA1)
    Plus tard, lorsque gràce à vous, je serais sortie du bois, je remplacerai par aujourdhui() en ZA1.
    Seule, la comparaison de dates me pose problème ( recherchev() ?? )

    Merci par avance, ainsi qu'à Pierre FAUCONNIER pour ses didactiques.

  2. #2
    Membre confirmé
    Bonjour,

    J'ai pas exactement bien cerné ton problème, j'ai cependant fait un petit Excel pour toi. Dis moi si sa s'approche de ce que tu souhaites.

    Dans Col A : Les Noms
    Dans Col B : La date
    Dans Col C : "=SI(B2<AUJOURDHUI()+31;SI(A2="Fabienne";1;0);0)"

    Cdt,
    Pour la carotte, le lapin est la parfaite incarnation du Mal.
    N'oublie pas de ou si la réponse t'a plu ou pas.

    Une fois que le topic est solutionné n'oublie pas

  3. #3
    Membre à l'essai
    Bonsoir et merci jackborogar,

    Effectivement, ton code fonctionne.
    Toutefois, en colonne A existent plusieurs Fabienne ; il faut compter le total des lignes
    - qui contiennent Fabienne en col. A
    - si et seulement si la date en col B est <= 31 jours .
    * Pour comparer les dates col. B, j'ai placé une date (pour l'instant en dur) en cell. ZA 1. Plus tard, je mettrai un aujourdhui() dans cette ZA1
    Dans le fichier de tests joint, j'ai déplacé la date référence de ZA1 en F1 (fichier moins lourd ......)
    Merci encore !!!

  4. #4
    Responsable
    Office & Excel

    Salut.

    Utilise NB.SI.ENS(). Tu peux placer jusqu'à 64 critères et tu évites de passer par une colonne intermédiaire.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre confirmé
    Bonsoir,

    La solution de Pierre Fauconnier semble la plus simple et la plus rapide.

    Pour remonter dans le temps, et revenir à 31 jours précédent aujourd'hui, il faut utiliser une combinaison de DATE() et de AUJOURD'HUI() :

    =NB.SI.ENS(A:A;"=Fabienne";B:B;">="&DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI()-31);JOUR(AUJOURDHUI())))
    Une variante intéressante permet de trouver le nombre de solutions sur le mois civil en cours. Exemple : nous sommes le 3 juin 2012, combien de "Fabienne" sont présentes depuis début juin ?

    =NB.SI.ENS(A:A;"=Fabienne";B:B;">="&DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI());JOUR(1)))
    Bertrand

  6. #6
    Responsable
    Office & Excel

    Salut.

    Tant qu'à faire plus simple

    Pour revenir 31 jours en arrière, on doit utiliser
    aujourdhui()-31
    car cette formule fonctionne à tous les coups (*).
    Dans la deuxième formule, l'utilisation de la fonction JOUR(1) est inutile. Il suffit de passer 1 directement. Il sera encore plus pertinent d'utiliser
    AUJOURDHUI()-JOUR(AUJOURDHUI())+1
    pour calculer le premier jour du mois courant, car on utilise moins de fonctions et on est plus "performant" sur de (très) grandes plages de données.

    Puisque l'on est en 2010, il serait probablement judicieux d'utiliser un tableau (se positionner dans la plage source puis insertion > tableaux > tableau), de manière à :
    • éviter d'utiliser la formule sur l'entièreté des colonnes ;
    • rendre la formule plus lisible par l'utilisation des références structurées.




    (*) Bertrand,

    Attention que ta formule
    DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI()-31);JOUR(AUJOURDHUI())
    recule de deux mois si nous sommes le premier jour d'un mois qui suit un mois de 30 jours. Ta formule pour le 01/05 renvoie le 01/03.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre confirmé
    Citation Envoyé par Pierre Fauconnier

    (*) Bertrand,
    Attention que ta formule
    recule de deux mois si nous sommes le premier jour d'un mois qui suit un mois de 30 jours. Ta formule pour le 01/05 renvoie le 01/03.
    Bonjour,

    Effectivement, ma formule n'est pas correcte. Merci de l'avoir rectifier.

    Bertrand

  8. #8
    Membre expert
    Bonjour,
    Une autre façon de donner le 2ème critère pour les lignes correspondant au mois civil en cours (moins rapide sans doute que la proposition de Pierre Fauconnier sur un long tableau) :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ">"&FIN.MOIS(AUJOURDHUI();-1)

    (à condition de ne pas être sur une version trop ancienne d'Excel ne possédant pas cette fonction)
    Cordialement

  9. #9
    Responsable
    Office & Excel

    Bien vu Claude...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

###raw>template_hook.ano_emploi###