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 :

Formulaire de choix et d'alimentation de données


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Formulaire de choix et d'alimentation de données
    Bonsoir,

    Dans le fichier joint, j'ai un formulaire qui récupère une liste de noms.

    Je souhaiterais filtrer cette liste en effectuant un choix par rapport au trois premières de la colonne site dans la Base_Agent (EMO, SPO,...)

    Dans le Useform je récupère les données dans une ListBox et j'ai alimenter une combobox avec une liste de thème.

    Est-il possible de sélectionner des noms dans la listBox et de leur affecter un thème ?
    Une foi ces choix effectué, je voudrais alimenter la feuille BD_THEMEREA.

    Merci pour vos retours

  2. #2
    Membre émérite
    Bonjour Japonta, bonjour le forum,

    Ce n'est pas la politique de ce forum, mais sans le fichier qui va bien je suis bien incapable de t'aider...
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Nouveau membre du Club
    Bonjour,

    En fichier joint le fichier avec le code.
    Comment récupérer dans la feuille "ACTIVITES" le derniers thèmes vu ?
    Merci pour votre aide.

  4. #4
    Nouveau membre du Club
    J'aimerais récupérer ces données dans le ListBox si possible.
    Merci pour votre aide.

  5. #5
    Nouveau membre du Club
    Je vous joint la dernière version de mon fichier.
    Merci pour votre aide

  6. #6
    Membre émérite
    Bonsoir Japonta, bonsoir le forum,

    Pas sûr d'avoir tout bien compris... Je te propose ton fichier modifié en pièce jointe. Désolé d'avoir renommer les variables mais j'ai trop l'habitude avec cette façon de faire...
    À plus,

    Thauthème

    Je suis Charlie

  7. #7
    Nouveau membre du Club
    Bonjour Thautheme,

    C'est à peu près ce que je souhaite et je te remercie.
    Par contre à dans ton exemple j'obtiens tous les thème vu par les noms, alors que je souhaiterais avoir que le dernier thème.
    Dans le fichier en PJ par exemple, le matricule 6 voit le theme B le 18/11 et le thème D le 16/11.
    Je souhaiterais récupérer uniquement le dernier thème, celui du 18/11 dans l'exemple.
    Aussi est-il possible d'avoir ces données à l'initialisation du formulaire.


    Merci.

  8. #8
    Membre émérite
    Re,

    Remplace le code du ComboBox1_Change par:


    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
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub ComboBox1_Change()
    Dim D As Object
    Dim I As Integer
    Dim J As Byte
    Dim K As Integer
    Dim TL() As Variant
    Dim TMP As Variant
    Dim NE As Integer
    Dim R As Range
    Dim DT As Date
     
    Me.ListBox1.Clear
    TV = OA.Range("A1").CurrentRegion
    Set D = CreateObject("Scripting.Dictionary")
    For I = 2 To UBound(TV, 1)
        D(TV(I, 2)) = ""
    Next I
    TMP = D.keys
    For NE = 0 To UBound(TMP)
        Set R = OA.Columns(2).Find(TMP(NE), OA.Range("B1"), xlValues, xlWhole)
        DT = DateSerial(Year(R.Offset(0, -1).Value), Month(R.Offset(0, -1).Value), Day(R.Offset(0, -1).Value))
        For I = 2 To UBound(TV, 1)
            If TMP(NE) = TV(I, 2) Then
                If Application.WorksheetFunction.CountIf(OA.Columns(2), TMP(NE)) = 1 Then
                    If TV(I, 4) = Me.ComboBox1.Value Then
                            K = K + 1
                            ReDim Preserve TL(1 To 6, 1 To K)
                            For J = 2 To UBound(TV, 2)
                                TL(J - 1, K) = TV(I, J)
                            Next J
                    End If
                End If
                If TV(I, 4) = Me.ComboBox1.Value And DateSerial(Year(TV(I, 1)), Month(TV(I, 1)), Day(TV(I, 1))) > DT Then
                        K = K + 1
                        ReDim Preserve TL(1 To 6, 1 To K)
                        For J = 2 To UBound(TV, 2)
                            TL(J - 1, K) = TV(I, J)
                        Next J
                End If
            End If
        Next I
    Next NE
    If K > 0 Then
        Me.ListBox1.Column = TL
    End If
    Tri_ListBox
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  9. #9
    Nouveau membre du Club
    Merci, mais lorsque je sélectionne avec ce code, je n'ai que la dernier nom qui correspond au lieu.
    J'ai du mal expliquer désolé.
    Si je sélectionne le lieu dans le combobox1, il faut que j'obtienne tous les noms avec le dernier thème vu par nom.
    Aussi pouvons-nous ajouter la date correspondante dans la listbox ?
    Merci à vous

  10. #10
    Membre émérite
    Re,

    Oui, après plusieurs tests je me rends bien compte que cette solution n'est pas fiable, c'est le moins qu'on puisse dire... Je vais tenter de trouver une solution mais je crains de n'obtenir qu'une usine à gaz pas totalement fiable...
    À plus,

    Thauthème

    Je suis Charlie

  11. #11
    Responsable
    Office & Excel

    Salut.

    Pourrais-tu, à ce stade de la discussion, reformuler tes attentes qui ont manifestement évolué depuis ton message initial, et rendre juste les trois tableaux de départ, le tableau d'arrivée et les règles qui président à la récupération des données de base?

    Sans cela, j'ai l'impression que c'est bien parti pour une usine à gaz.

    Au passage, je travaillerais avec des tableaux structurés qui vont faciliter la gestion du classeur, tant en Excel qu'en VBA.
    "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...
    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...
    Vous avez apprécié la réponse? =>
    ---------------

  12. #12
    Nouveau membre du Club
    Bonsoir,

    Oui il est vrai que je voudrais peut-être tout réaliser en même temps.
    La feuille de départ est la feuille la feuille GARDE_JOUR. Cette récupère en automatique des noms avec matricules, des lieux, des motifs et des postes.
    Celle-ci est mise à jour de façon journalière.
    L'idée est d'alimenter la feuille ACTIVITES à l'aide du Userform1. Pour aider l'utilisateur dans son choix,lorsqu'il a choisi le lieux via la combobox1, je souhaiterais pouvoir indiquer dans la LISTBOX ( en plus des informations déjà présentes) le dernier thème ainsi que la date vu par chacun des noms.
    Aussi et si possible, je voudrais indiquer quel est le thème le moins vu parmi les thème pour l'ensemble de la sélection.

    Merci pour votre aide.

  13. #13
    Nouveau membre du Club
    En travaillant avec des tableaux structurés, le code du formulaire serait plus simple qu'avec des objets tableau ?

  14. #14
    Responsable
    Office & Excel

    Je ne sais pas ce que tu appelles des objets tableau, car dans ton code, je ne vois pas que tu travailles avec des tableaux, mais avec des cellules de plage.

    Oui, le code sera plus simple et plus générique à écrire avec des tableaux structurés.

    • A quoi te sert la listbox avec les cases à cocher? Je pensais que ton userform servait à choisir les lignes à transférer dans la feuille Activités...
    • Tu dis que la feuille de départ est la feuille Garce_Jour.Il y a moins de données dans cette feuille que dans la feuille Activités. La feuille Activités doit garder les données précédentes ou bien est elle doit être nettoyée à chaque utilisation?
    • Tu dis vouloir indiquer le thème le moins vu pour l'ensemble de la sélection... Quelle sélection? Celle des combobox? Celle des cases cochées dans la liste?
    • Quelles sont les données du userform que tu veux voir réapparaître dans la feuille d'activités?
    "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...
    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...
    Vous avez apprécié la réponse? =>
    ---------------

  15. #15
    Nouveau membre du Club
    A quoi te sert la listbox avec les cases à cocher? Je pensais que ton userform servait à choisir les lignes à transférer dans la feuille Activités...
    En effet les case à cocher ne sont pas obligatoires. IL faut simplement que je puisse faire de la multisélection pour transférer dans la feuille Activités.
    Pour information, la feuille Garde jour importe chaque jour des noms en fontion des noms présents sur la journée. Cette feuille comporte un tableau structuré est il effacé tous le jours, et les nouveaux sont importés.

    Tu dis que la feuille de départ est la feuille Garce_Jour.Il y a moins de données dans cette feuille que dans la feuille Activités. La feuille Activités doit garder les données précédentes ou bien est elle doit être nettoyée à chaque utilisation?
    Oui la feuille activités doit garder les données précédentes. Ces données seront utiles par la suite pour faire un état des thèmes vu par les agents sur l'année.

    Tu dis vouloir indiquer le thème le moins vu pour l'ensemble de la sélection... Quelle sélection? Celle des combobox? Celle des cases cochées dans la liste?
    Pour faciliter le choix de l'utilisateur qui voit les noms dans le ListBox, avant de sélectionner ceux qu'il désire affecter à tel ou à tel thème, il est important de lui indiquer les thèmes dernièrement vu et les thèmes jamais abordé par les noms de la ListBOx. Aussi je souhaiterais que l'utilisateur puisse spécifier un formateur parmi les noms.

    Quelles sont les données du userform que tu veux voir réapparaître dans la feuille d'activités?
    Dans la feuille activités je souhaiterais voir la date , le nom, le matricule le lieu, le motif, le poste le thème le libellé du thème et le formateur choisi.

    Merci pour vos retours et votre aide.

  16. #16
    Nouveau membre du Club
    J'ai créé les tableaux structurés ==> tb_Garde; Tb_Sites; Tb_Themes; Tb_Activites
    Par contre le fichier fait plus de 2 Mo et je ne peux pas le joindre. Pourtant il n'ya pas beaucoup de données.

  17. #17
    Nouveau membre du Club
    En PJ le fichier avec tableau structuré

  18. #18
    Membre émérite
    Bonjour le fil, bonjour le forum,

    Je suis heureux de voir que tu es entre de très bonnes mains car pour ma part je n'y arrivais pas...
    À plus,

    Thauthème

    Je suis Charlie

  19. #19
    Nouveau membre du Club
    Bonjour,
    Je n'arrive pas à démarrer mon projet avec des tableau structurés.
    Merci pour votre aide.

  20. #20
    Rédacteur

    Bonjour,
    Je n'arrive pas à démarrer mon projet avec des tableau structurés
    C'est à dire ?
    Quel est le problème rencontré ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

###raw>template_hook.ano_emploi###