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 :

Concaténation valeurs en fonction de la date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Juin 2017
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 261
    Par défaut Concaténation valeurs en fonction de la date
    Bonjour le forum!

    Je dispose d'un fichier de suivi des formations du personnel (389 salariés * 60 formations).
    Je souhaite réaliser un plan de formation "automatique" dans une autre feuille.
    Mon objectif: avoir un visuel immédiat des formations à recycler par mois.

    Voici ma base:

    FORMATIONS.xlsm

    Voici ou j'en suis dans mes recherches:

    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
    Sub Planformation()
        Dim DateDeb As Date
        Dim DateFin As Date
        Dim LaDate As Date
        Dim Res As Variant
     
        DateDeb = Sheets("PLAN FORMATION").Cells(3, 5)
        DateFin = Sheets("PLAN FORMATION").Cells(3, 6)
     
        nbl = Sheets("SUIVI FORMATIONS").Range("a1").End(xlDown).Row
     
        For I = 5 To nbl
            LaDate = Sheets("SUIVI FORMATIONS").Cells(I, 11)
     
            If LaDate < DateFin And LaDate > DateDeb Then
                'Res = Res + Int(Sheets(2).Cells(i, 2))
                Res = Res & Chr(10) & Cells(I, 1)
            End If
     
        Next I
     
                Sheets("SUIVI FORMATIONS").Cells(4, 5) = Res
    End Sub
    dans les faits, je souhaiterais que mon code alimente le tableau PLAN FORMATION en répartissant les noms des salariés concernés aux mois d'échéances de l'année à venir depuis le tableau SUIVI FORMATION.

    Par exemple:

    - Monsieur DUPOND a son CACES chariot élévateur catégories 3 et 5 qui atteint sa limite de validité le 29 mai 2018 - informations perdues quelque part dans SUIVI FORMATIONS.
    - Monsieur HADDOCK a le même CACES qui atteint sa limite de validité le 10 juin 2018

    A l'activation du programme, je voudrais que :

    -dans la case réunissant CACES Cat 3 et MAI 2018 le nom DUPOND apparaisse
    -dans la case réunissant CACES Cat 5 et MAI 2018 le nom DUPOND apparaisse
    -dans la case réunissant CACES Cat 5 et JUIN 2018 le nom HADDOCK apparaisse

    le cas échéant, si plusieurs personnes doivent repasser leur CACES le même mois, les noms apparaissent de façon concaténée...

    Comment parvenir à ce résultat? suis je sur la bonne voie?

    Merci!

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    le problème posé : basculer une liste de date (suivi formation) vers (plan formation)

    étape 1 : créer la liste de date (suivi formation) ET la rendre utilisable
    il y a, bien sur la possibilité de trier la colonne 11

    mais j'utiliserais, perso, un tableau "année"...TabAnnée(366),
    avec un calcul du numéro de jour --> 1° janvier --> jour 1 --> TabAnnée(1)... trop facile
    pour les doubles , (plusieurs nom pour même jour) : TabAnnée(1) = TabAnnée(1) & ";" & nom2
    utiliser "Split()" pour "séparer" les noms
    pour test si plusieurs nom : instr() avec ";"...par exemple
    dans TabAnnée(1), on peu noter le nom , mais perso, je noterais le numéro de ligne de l'onglet (suivi..)

    étape 2 : basculer vers "plan de formation"
    2 possibilités :
    A) de TabAnnée vers onglet formation : on vide (la liste suivi)
    B) de onglet formation vers TabAnnée : on bouche (un trou dans formation)

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Juin 2017
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 261
    Par défaut
    Bonjour mjpmjp,

    Tes explications sont très claires, je te remercie.
    Mon niveau de maîtrise ne m'autorise cependant pas à transformer l'essai!

    Associer un calcul de référence de jour me semble intéressant, mais la mise en application obscure!
    Pour ce qui est de la référence par ligne et non par nom... Chaud! la liste des salariés est mouvante! Triée par ordre alphabétique, elle peut s'incrémenter ou se décrémenter chaque semaine!

    J'ai commencé à regarder une piste du style :

    "Pour les formations intitulées en ligne 4 page1,
    Si la date de recyclage est l'an prochain, alors:
    - afficher le nom du salarié figurant en colonne A dans la cellule
    à l'intersection entre la ligne de cette formation page2 ET la colonne du mois correspondant à cette date

    Si il y en a plusieurs, alors:
    - concaténer les noms"

    Mais je galère à la mise en œuvre...

  4. #4
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    Tu dis que t'aimerais avoir les info de l'année à venir, alors pourquoi ne pas commencer par un tri sur l'année +1 des dates d'échéances.
    Tu pourras ensuite travailler sur cette base pour faire ton tableau de l'année à venir.

    PS : je n'ouvre pas les fichiers (d'autant plus vrai au 1er post - cf règles du forum - et en plus contenant des macros) , donc je n'ai pas regardé
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  5. #5
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Juin 2017
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 261
    Par défaut
    Bonjour RyuAutodidacte,

    Tu parles de démarrer ma fonction par la "collecte" des dates à N+1?

    Je songeais à quelque chose du genre "Pour toutes les dates à venir en N+1" effectivement.

    Je ne suis malheureusement pas autonome dans la rédaction VBA , je galère de façon empirique avec les fragments glanés sur la toile et la bonne volonté de passionnés qui détectent les erreurs fatales!

    en 4 mots comme en 100: comment intégrer cette "collecte"?

    Merci!

  6. #6
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    sans connaitre le vba en utilisant l'enregistreur de macro pour le tri (en exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro1()
        Range("Table1[[#Headers],[Colonne2]]").Select
        ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, Operator:= _
            xlFilterValues, Criteria2:=Array(0, DateSerial(Year(Date) + 1, Month(Date), 1))
    End Sub
    et en utilisant la faq pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateSerial(Year(Date) + 1, Month(Date), 1)
    http://mhubiche.developpez.com/vba/f...ions/datetime/

    Edit : Il y a aussi les filtres avancés qui peut t'intéresser
    ça permet l'export vers une autre feuille si besoin - à voir
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

Discussions similaires

  1. Changer des valeurs en fonction d'une date
    Par sam01 dans le forum Requêtes
    Réponses: 10
    Dernier message: 05/03/2016, 18h22
  2. [XL-2013] Problème d'ajout de valeur en fonction d'une date VBA
    Par Pierre8585 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/01/2016, 17h00
  3. Paramètre multi valeurs en fonction de la date
    Par mekatxis dans le forum Deski
    Réponses: 6
    Dernier message: 29/06/2010, 16h39
  4. Zedgraph valeur en fonction d'une date
    Par petitours dans le forum C#
    Réponses: 8
    Dernier message: 07/06/2010, 09h34
  5. Réponses: 14
    Dernier message: 04/11/2009, 18h08

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