IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Macros et VBA Excel Discussion :

Compter le nombre de cellules contenant une date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Par défaut
    Bonsoir,

    Je cherche une fonction permettant de compter le nombre de cellule contenant une date dans une plage déterminée.

    Un code du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunction.CountIf(Range("k11:k30"), IsDate)
    Ensuite, on verra si je peux aussi mettre une condition comme :

    comptez le nombre de cellule contenant une date < aujourd'hui


    Merci pour votre aide

    Je me réponds moi même

    J'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunction.CountIf(Range("m11:m30"), "<" & Date)
    Mais le nombre obtenu ne correspond pas à la réalité... !?

    En fait, il ne me renvoie pas le nombre de cellules avec une date mais le nombre de cellule contenant "-"

    Help

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par thomanneca Voir le message
    Je me réponds moi même

    J'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunction.CountIf(Range("m11:m30"), "<" & Date)
    Mais le nombre obtenu ne correspond pas à la réalité... !?
    C'est parce que tu cherches ce qui s'est passé hier et avant.
    Date est un mot réservé qui donne la date du jour.

    Il va falloir qu'un formuliste me corrige au besoin; mais je doute fortement que l'on puisse combiner comme cela, une/des fonction(s) de feuille de calcul avec une/des fonctions VBA.

    J'ai comme la vague impression que tu vas devoir "le faire au long"

    N'oublie surtout pas, que pour Excel, une date est fondamentalement un nombre. En Windows, c'est par défaut le nombre de jours entre la date exprimée dans un format donné et le 1er janvier 1900. J'ai comme la vague impression que ce que tu as ramassé, ce n'est pas vraiment le nombre de traits d'union; mais le nombre de cellules dont le nombre qui correspond à la date affichée est plus petit que le nombre qui correspond à la date d'aujourd'hui.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,



    C'est parce que tu cherches ce qui s'est passé hier et avant.
    Date est un mot réservé qui donne la date du jour.
    Bonsoir,

    C'est bien l'objectif oui, je cherche le nombre de cellule avec une date antérieure à aujourd'hui..

    Dois-je écrire DATE d'une autre manière alors ?

    Même en faisant référence à une cellule dans laquelle j'ai noté la date d'aujourd'hui, cela ne fonctionne pas

  4. #4
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonsoir,

    Tu veux savoir le nombre de cellules avec une date inférieure à aujourd'hui (attention ma plage est A1:A4) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI(A1:A4;"<" & AUJOURDHUI())
    Pour toi,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI(M11:M30;"<" & AUJOURDHUI())

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Tu dois assigner cette fonction à une cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("M1") = Application.WorksheetFunction.CountIf(Range("M11:M30"), "<" & Date)
    ou à une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Valeur
    Valeur = Application.WorksheetFunction.CountIf(Range("M11:M30"), "<" & Date)
    MsgBox Valeur

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Par défaut
    Citation Envoyé par parmi Voir le message
    Tu dois assigner cette fonction à une cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("M1") = Application.WorksheetFunction.CountIf(Range("M11:M30"), "<" & Date)
    Oui, ça c'est fait aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("m32").Value = Application.WorksheetFunction.CountIf(Range("h32:h33"), "<" & Date)

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Citation Envoyé par thomanneca Voir le message
    Bonsoir,

    C'est bien l'objectif oui, je cherche le nombre de cellule avec une date antérieure à aujourd'hui..

    Dois-je écrire DATE d'une autre manière alors ?

    Même en faisant référence à une cellule dans laquelle j'ai noté la date d'aujourd'hui, cela ne fonctionne pas
    Puisque quelques télescopages sont survenus pendant que je rédigeais et modifiais mon dernier message, je reprends donc ici.

    Comme j'ai mentionné plus haut, dans Excel une date c'est juste un nombre avec un format spécial.

    Je ne sais pas si la réponse de QuestVBA te convient. Personnellement, je pense qu'il est possible (préférable) de faire une fonction, ou une sub, en VBA pour séparer le bon grain de l'ivraie; ie un nombre qui ressemble vraiment à une date et un nombre quelconque. Cela me semble préférable, dans ce cas-ci, du moins, de privilégier uniquement les fonctions VBA sans utiliser de fonction de feuille de calcul.

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Par défaut
    @clementmarcotte

    En effet, je préférerais plutôt ne coder qu'en VBA car mon tableau est succeptible de bouger et avec excel, cela risque de ne plus fonctionner.
    Penses-tu être capable de créer un fonction de ce type en VBA ?

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Dim I As Long, nbLignes As Long
        Dim Cnt As Long
     
        nbLignes = Cells(Rows.Count, "M").End(xlUp).Row
        For I = 11 To nbLignes
            If IsDate(Range("M" & I)) Then
                If Range("M" & I) < Date Then
                    Cnt = Cnt + 1
                End If
            End If
        Next
     
        Range("M1") = Cnt
    Mais ça ne changera rien si tes dates ne sont pas considérées comme des dates.
    Tu auras 0 comme résultat...

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Par défaut
    @QuestVba

    Merci mais j'aimerais la transposer en vba c'est pourquoi, j'ai le code suivant (mais qui ne fonctionne pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunction.CountIf(Range("m11:m30"), "<" & Date)
    @clementmarcotte

    Je n'avais pas de suite ton message.
    Pour en être sûr, j'ai réduit ma plage à 2 cellules dans lesquelles j'ai fait varier des dates (sans résultat), des lettres (toujours sans résultat) et un trait d'union et pour ce dernier test, le résultat est le bon...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] compter le nombre de cellules supérieures à une date
    Par stdonat dans le forum Excel
    Réponses: 2
    Dernier message: 21/01/2015, 13h06
  2. [XL-2010] Compter le nombre de cellules contenant un temps
    Par seboboch dans le forum Excel
    Réponses: 5
    Dernier message: 22/11/2011, 17h15
  3. Compter un nombre de cellule contenant mot "flange" (suite)
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/09/2009, 15h00
  4. Compter un nombre de cellule contenant mot "flange"
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/09/2009, 13h48
  5. compter le nombre de cellule contenant la meme info
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/01/2008, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo