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 :

Lister les dates comprises dans un intervalle pour chaque identifiant


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2019
    Messages : 2
    Par défaut Lister les dates comprises dans un intervalle pour chaque identifiant
    Bonjour,

    J'ai une base de données en format Excel dans un onglet qui contient 3 colonnes: ID = idenfiant, DEBUT = Date de début de la période observée, FIN = Date de fin de la période observée

    J'aimerai généré dans un autre onglet, ces données sous forme de 2 colonnes: ID = identifiant, DATE = chaque date contenue dans l'intervalle mentionné ci-dessus.
    C'est-à-dire que chaque date contenue dans l'intervalle sera affichée sur une ligne à côté de l'identifiant. Ensuite une fois que toutes les dates pour le premier idenfiant sont affichées, l'intervalle de dates pour le deuxième idenifiant s'affiche et ainsi de suite...

    J'imagine qu'une macro est nécessaire pour ce faire mais je n'ai aucune connaissances par rapport à ça.

    Pourriez-vous m'aider?

    Merci d'avance pour votre réponse!

    NCBLA

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 565
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 565
    Par défaut
    Bonjour

    Si c'est one shot tu peux utiliser un filtre avancé https://philippetulliez.developpez.c...dvancedfilter/

    Si l'extraction n'est que pour afficher mais doit être dynamique, tu peux utiliser PowerQuery intégré à 2016

    Si l'extraction est à modifier : automatiser le filtre avancé

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2019
    Messages : 2
    Par défaut
    Salut,
    Merci pour ta réponse.

    Ce processus est à faire une fois, donc un filtre avancé pourrait être une option. Seulement je ne comprends pas comment un filtre avancé pourra me lister les dates comprises dans l'intervalle?

    Mes critères de filtre seront les identifiants et les intervalles des dates mais comment créer la plage de données ?

    Merci

    NCBLA

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 565
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 565
    Par défaut
    RE

    Oui j'avais mal lu donc PowerQuery ou VBA

    Dans le module VBA de la feuille concernée, code basé sur une source sous forme de tableau structuré (adapter sinon) et nom Feuil2 à adapter

    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
    33
    34
    35
    36
    37
    38
    39
    Option Explicit
    Sub liste()
    Dim Mini As Date, Maxi As Date, D As Date
    Dim lig As Long, Id As Long
     
    Mini = WorksheetFunction.Min(ListObjects(1).DataBodyRange.Columns(2), ListObjects(1).DataBodyRange.Columns(3))
    Maxi = WorksheetFunction.Max(ListObjects(1).DataBodyRange.Columns(2), ListObjects(1).DataBodyRange.Columns(3))
    lig = 1
    With Worksheets("Feuil2")
        .Range("A:B").ClearContents
        .Range("A1") = "ID"
        .Range("B1") = "Date"
     
        For D = Mini To Maxi
            For Id = 1 To ListObjects(1).DataBodyRange.Rows.Count
                If D >= ListObjects(1).DataBodyRange.Columns(2).Cells(Id, 1) And D <= ListObjects(1).DataBodyRange.Columns(3).Cells(Id, 1) Then
                    .Range("A1").Offset(lig, 0) = ListObjects(1).DataBodyRange.Columns(1).Cells(Id, 1)
                    .Range("A1").Offset(lig, 1) = D
                    lig = lig + 1
                End If
            Next Id
        Next D
     
        'Tri
            With .Sort
                .SortFields.Clear
                .SortFields.Add Key:=Range("A:A") _
                    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                .SortFields.Add Key:=Range("B:B") _
                    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                    .SetRange Range("A:B")
                    .Header = xlYes
                    .MatchCase = False
                    .Orientation = xlTopToBottom
                    .Apply
            End With
            .Columns("B:B").NumberFormat = "m/d/yyyy"
        End With
    End Sub

Discussions similaires

  1. [AC-2000] Recherche par date comprise dans un intervalle
    Par polo31 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/04/2020, 16h56
  2. Réponses: 3
    Dernier message: 21/05/2017, 00h52
  3. [WD20] Lister les dates entre 2 dates dans un tableau
    Par seankeane dans le forum WinDev
    Réponses: 11
    Dernier message: 10/11/2016, 22h59
  4. [MySQL] Savoir si date est comprise dans un intervalle
    Par xillibit dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/12/2012, 12h55
  5. [MySQL] savoir les requetes insérés dans la base pour une date précise
    Par betadev dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/02/2009, 21h40

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