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 un nombre de date dans une colonne


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Compter un nombre de date dans une colonne
    Dans une colonne, j'ai une serie de dates saisies chronologiquement. Elles sont sous le format suivant: jj/mm/aaaa. J'aimerais savoir s'il est possible avec VBA de compter toutes les dates correspondant à un mois donné (par ex: mai).
    Actuellement en utilisant un colonne supplémentaire et la fonction Month, j'y arrive, mais ne trouve pas cela très "élégant".
    pour votre aide

  2. #2
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour,

    une petit fonction pour t'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Function CompterMois(Mois As Integer, Zone As Range) As Integer
    For Each c In Zone
      If IsDate(c) Then If Month(c) = Mois Then CompterMois = CompterMois + 1
    Next c
    End Function
    Sub test()
    MsgBox CompterMois(1, Range("A1:A15"))
    End Sub
    cordialement

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour fred65200,

    Je vais te donner des détails qui pourraient être utile à l'avenir. Je suis responsable d'une station de contrôle chrono tachygraphe. Celle-ci a plusieurs opérateurs et fait donc des opérations de contrôle, de réparation ou de remplacement chaque jour. Ces opérations sont enregistrée sur un registre écrit et chaque mois je dois fournir un rapport à la DRIRE de rattachement ainsi qu'au responsable de mon groupe.
    J'ai donc eu l'idée de me créer un fichier pour gérer d'une part mes activités et d'autre part mon stock de matériel de rechange.
    Jusque là je m'en suis pas trop mal tiré, mais en voulant automatiser ma tâche, je me suis heurté au problème pour lequel j'ai fait appel à votre savoir.
    Mon tableau se présente un peu sous la forme suivante :
    Colonne A : Le numéro d'opération issu du registre
    Colonne B : La date de l'opération
    Colonne C : l'immatriculation
    Colonne D : La société propriétaire du véhicule
    Colonne E : L'opérateur qui a effectué l'opération
    Plusieurs autres colonnes pour différents paramètres.
    Mon souci est de pouvoir sélectionner dans la colonne des dates, celles qui correspondent à un mois déterminé (Mois actuel -1). Une fois la selection effectuée je peux faire un décalage vers la colonne des opérateurs et en extraire le nombre d'action menés par ceux-ci.

    Je vais tester cela dès demain et te dirais de quoi il en retourne.
    Merci pour la promptitude de ta réponse et la patience dont tu auras fait preuve pour lire tout ceci.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Points : 542
    Points
    542
    Par défaut
    bonsoir
    essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Sub rech_mois()
    Dim prem_ligne 'rech de la 1ere lig col b
    Dim dern_ligne
    Dim i As Integer
    Dim rg As Range
    Dim fl As Worksheet
    Dim mois_recherché
    Dim date_du_jour
    Dim nbaction()
    date_du_jour = Now
    date_du_jour = Month(date_du_jour) 'mois en cours
    mois_recherché = date_du_jour - 1 'mois precedent
    Set fl = Worksheets(1)
    dern_ligne = fl.Cells(65536, 2).End(xlUp).Row
    prem_ligne = fl.Cells(dern_ligne, 2).End(xlUp).Row
     
    For Each rg In fl.Range("b" & prem_ligne & ": b" & dern_ligne)
     
        If IsDate(rg.Value) = True Then 'si c une date
            If mois_recherché = Month(rg.Value) Then 'si mois desiré
                i = i + 1
                ReDim Preserve nbaction(i)
                With fl
                nbaction(i) = rg.Offset(0, 3).Value 'decalage vers la colonne
                Debug.Print nbaction(i) 'nbaction sert a stocker sous forme de tableau les valeurs a exploiter
                End With
            End If
        End If
    Next rg
     
    End Sub

  5. #5
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Hello,

    Tu peux aussi masquer la colonne du mois si tu ne trouve pas ca elegant!

    Sinon tu peux faire un tableau croisé dynamique avec les dates et les opérateurs !

    Regards,

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    La fonction de fred65200, m'a permis de trouver le nombre d'occurrence désiré dans ma colonne. A partir de là et avec la méthode fin, j'ai pu trouver la première cellule avec le mois désiré et faire un resize.
    C'est lourd, mais cela semble fonctionner pour le moment (Je dispose de peu de temps entre chaque opération de contrôle pour faire mes petites affaires).
    Je vous tiendrais au courant de la progression de la chose.
    Pour répondre à Drost, j'ai essayé la solution du TCD, cela marche avec un seul inconvénient, les données ainsi extraite ne se trouve jamais au même emplacement. En effet au fur et à mesure que l'on avance dans l'année, le nombre de mois s'incrémente et la donnée intéressante en fait de même.
    En attendant je vais essayer la méthode de patbou et voir ce que cela va donner.
    Je vous remercie tous de l'attention que vous portez à mon problème et aux solutions que vous me proposez


  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Citation Envoyé par MASK55 Voir le message
    ...
    Mon souci est de pouvoir sélectionner dans la colonne des dates, celles qui correspondent à un mois déterminé (Mois actuel -1). Une fois la selection effectuée je peux faire un décalage vers la colonne des opérateurs et en extraire le nombre d'action menés par ceux-ci.
    ...
    Dois-tu obligatoirement utiliser VBA pour faire cela?

    Car tu peux te construire un tableau utilisant la fonction SOMMEPROD pour créer ton récap annuel. Ce tableau peut se remplir automatiquement en fonction des saisies dans la feuille de saisie.

    A toi de voir. Si tu veux des détails sur la manière de créer ce genre de tableau, reviens nous trouver...

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    tout à fait Pierre, en revanche je ne vois pas trop ce que tu veux dire par "construction de tableau" ... une formule devrait suffire.

    Du type (exemple pour janvier) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(((MOIS(A2:A24)=1)*1))

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Salut.

    Citation Envoyé par cafeine Voir le message
    tout à fait Pierre, en revanche je ne vois pas trop ce que tu veux dire par "construction de tableau" ... une formule devrait suffire.

    Du type (exemple pour janvier) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(((MOIS(A2:A24)=1)*1))
    Tu as raison, quoique au vu de qu'il propose, SOMMEPROD sera un peu plus complexe, puisque le souhait serait, si j'ai bien compris, de compter les opérateurs par mois. De plus, pour que les plages s'étendent dynamiquement, je proposerais de nommer les plages en utilisant DECALER et d'utiliser les plages nommées dans SOMMEPROD. On s'orienterait donc vers un tableau à double entrée, avec en ligne les opérateurs et en colonne les mois de l'année. Pour simplifier la formule SOMMEPROD, il est alors utile de mettre, par exemple, le 1 de chaque mois en entête de colonne et d'adapter l'affichage... C'est cela que j'exprimais par "construire un tableau"

    Amicalement

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2015, 11h53
  2. [XL-2010] Calculer nombre dates dans une colonne.
    Par Bloubee dans le forum Excel
    Réponses: 2
    Dernier message: 29/05/2013, 16h56
  3. Compter le nombre de 1 dans une colonne
    Par paiva44 dans le forum Débutez
    Réponses: 2
    Dernier message: 28/01/2010, 18h33
  4. [MySQL] Compter le nombre d'entrées dans une colonne
    Par gastoncs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2009, 22h09
  5. Réponses: 6
    Dernier message: 04/11/2008, 22h35

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