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 :

Copier une partie de données d'un filtre auto dans des lignes définies d'une autre feuille [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Chargée de com
    Inscrit en
    Janvier 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargée de com
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2021
    Messages : 3
    Par défaut Copier une partie de données d'un filtre auto dans des lignes définies d'une autre feuille
    Bonjour à tous,

    Mes meilleurs vœux pour cette nouvelle année.

    Je vous remercie d'avance de l'attention que vous porterez à ma demande.

    Je travaille sur un fichier qui a plusieurs feuilles.
    Feuille 1 = Base formation
    Matricule salarié | Nom formation | Uniformisation Nom | Organisme de formation | Date de stage | Date fin de stage | Nombre d'heures

    Feuille 2 = Base salariés
    Matricule salarié | service du salarié | Nom | Prénom | ...

    Feuille 3 = Support ADM
    Cette feuille est une mise page des informations des bases Formation et Salariés. L'objectif de cette feuille est d'être exportée en version pdf.

    Voici ce que je réalise actuellement, je filtre la base salariés pour trouver les salariés identifiés comme "ADM"
    Je prends le premier, j'identifie son matricule et grâce a celui-ci je recherche dans la base formation les formations qu'il a réalisé.
    Mon objectif final est de reporter une partie des informations des formations qu'il a effectuées dans la feuille 3 Support ADM a un endroit précis.
    Je souhaite reporter uniquement le nom de la formation, la date de début et la date de fin à la condition que la date de début formation est inférieure à deux ans par rapport à la date d'aujourd'hui.
    Je souhaite reporter ces trois informations concaténées dans la feuille 3 à partir de la cellule A34. J'ai laissé 12 lignes vides pour cela.
    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
     
    Sub adm_support_concatener()
    WBO = ActiveWorkbook.Name
     
    'aller sur la base
    Sheets("Base salariés et entretien").Select
     
    'Identification de la dernière ligne
    D_L = Range("A65536").End(xlUp).Row
     
    I = 2
    J = 1
    K = J + 2
     
     
    Do While I <= D_L
     
    statut = Cells(I, K).Value
     
    If Cells(I, J).Value <> Cells(I - 1, J).Value And statut = "ADM" Then
     
    MATRICULE = Cells(I, J).Value
     
    Sheets("Support ADM").Select
     
    Range("F1") = MATRITUCLE
     
    Sheets("Base formation").Select
    ActiveSheet.AutoFilterMode = False
     
    Range("A1").AutoFilter Field:=1, Criteria1:=MATRICULE
    Selection.SpecialCells(xlCellTypeVisible).Select
     
    End If
     
    I = I + 1
     
    Loop
     
    End Sub
    Voici mes problématiques :
    Actuellement je bloque à partir de mon filtre auto pour copier la sélection filtrée vers ma feuille 3 car ma sélection filtrée doit être conditionnée par la date de formation qui doit être inférieure à deux ans par rapport à aujourd'hui.
    Ensuite pour coller les formations je ne sais pas comment "écrire"/"coder" pour chaque ligne de formation aille dans les lignes prévues dans la feuille Support ADM à partir de cellule A34.

    Je suis preneuse de toute aide que vous pouvez m'apporter surtout de votre expérience pour améliorer ma façon de coder, j'ai appris en lisant des bouts de code sur ce forum. Je suis bien consciente de mon néophysme, j'ai encore beauuuuuucoup a apprendre pour faire correctement.

    J'espère avoir été assez claire, vous trouverez le fichier Excel attaché à mon message, et vous remercie encore pour tout aide que vous pourrez m'apporter.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 569
    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 569
    Par défaut
    Bonjour

    A priori simple à réaliser avec PowerQuery intégré à Excel plutôt que VBA, d'auatnt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A65536").End(xlUp).Row
    est périmé depuis 13 ans...

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 569
    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 569
    Par défaut
    RE

    Tu crées un pdf par salarié ou un seul pdf avec une feuille par salarié ?

    En ligne 10, en B c'est la date du futur entretien ? Sinon à quoi sert le titre en A10 ?

    Tes feuilles Base salariés et entretien et Base formation sont bien sous forme de tableaux structurés mais ne respectent pas la règle des listes de données : ne pas gérer n colonnes pour un même type de d'information mais gérer des lignes :
    dans Base salariés et entretien tu démultiplies les données d'entretiens et le 1 des titres comme Date de stage 1 dans Base formation et la feuille Base laisse augurer de la même pratique pour les stages

    C'est ingérable en TCD, peu gérable en VBA et complique PowerQuery.

    Pour modéliser une requête il nous faut savoir ce qu'il en est...

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Chargée de com
    Inscrit en
    Janvier 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargée de com
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2021
    Messages : 3
    Par défaut
    Bonjour 78Chris,

    Merci pour ton retour,

    Je ne connais pas Power Query mais je veux bien apprendre si cela peut résoudre le soucis.
    Pour répondre a tes questions,
    je crée un pdf par salarié
    La ligne 10 B oui c'est la date de l'entretien mais elle est remplie a la main par le manager le jour de l'entretien que je ne connais pas à l'avance.

    Concernant la règle des listes des données tu as tout a fait raison pour la base salariés, par contre pour la base formation une ligne = une formation donc je pratique la bonne règle si j'ai bien compris tes explications.

    Pour la base salariés, suite a ta remarque, pour que le tableau soit plus sain il faudrait que je crée un nouveau tableau avec uniquement le matricule et les dates d'entretien en "version ligne" pour que ca soit gérable ?

    Pour la modélisation de la requête elle concerne uniquement la base formation, as tu besoin que j'explique plus clairement ce que je souhaite ?

    Merci encore de pour tes retours

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 569
    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 569
    Par défaut
    RE

    J'ai déplacé tes onglets dans un nouveau classeur car le tiens semble vérolé (il affiche plusieurs modules Workbooks et feuilles inexistantes)

    J'ai enlevé les 1 pour les titres des colonnes de formation et changé un peu le contenu pour pouvoir tester sur 2 personnes et un nombre de formations différent

    Il y a
    • 2 requêtes dont l'une est chargé dans Extrait utilisé pour remplir ADM
    • 1 code VBA à compléter : j'affiche un message là où doit s'insérer l'impression (j'ignore quelle méthode tu utilises pour imprimer en PDF)
      Cela permet de voir ce qui se passe entre 2 impressions


    Le bouton de lancement est sur l'onglet Base salariés et entretien

    J'ai aussi changé la formule de la colonne Formule prochaine entretien (+2 ans)
    Fichiers attachés Fichiers attachés

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Chargée de com
    Inscrit en
    Janvier 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chargée de com
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2021
    Messages : 3
    Par défaut
    Re,

    Merci beaucoup d'avoir pris le temps 78Chris !

    Je vais essayer de refaire ce que tu as crée pour comprendre la démarche globale et découvrir par la même occasion Power Query .

    Bonne fin d'après midi

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

Discussions similaires

  1. [XL-2010] Copier vers une autre feuille des données filtrées
    Par Tooth dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 29/04/2014, 08h42
  2. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  3. copier donnée valide dans une autre feuille
    Par marie33000 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 16/04/2009, 20h25
  4. Copie de données filtrées dans une autre feuille
    Par papagei2 dans le forum Excel
    Réponses: 1
    Dernier message: 30/08/2007, 16h16
  5. Réponses: 6
    Dernier message: 03/02/2007, 05h29

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