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 :

Automatisation Excel VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Assistante administrative
    Inscrit en
    Septembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistante administrative
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 15
    Points : 13
    Points
    13
    Par défaut Automatisation Excel VBA
    Bonjour,

    J'ai regardé plusieurs site mais je n'arrive pas à faire fonctionné mon automatisation ou alors je n'ai pas le bon sens des choses...
    Pourriez vous m'aider?

    ONGLET DE TRAVAIL
    J'ai des onglets de travail où sont indiqués des dates (17.01.23), des lieux (visio, ou clisson) et le type de formation (D2,D3,D41B/D4-1B et BMM) dans le titre de l'onglet. exemple : 17.01.23 VISIO BMM
    Ces onglets servent à noter toutes les informations au fur et à mesure de l'avancer vers la date du jour j et après la date.
    Certains peuvent être inscrit et se désinscrire au dernier moment, nous souhaitons donc garder une trace des personnes.
    Sur ces onglets de travail, est-il possible d'automatiser les colonnes B à D (DATE FORMATION, N° FORMATION, LIEU DE FORMATION) en fonction du titre de l'onglet?


    ONGLETS RECAP (en vert)
    Je souhaite mettre en place un onglet récap des formations, ces onglets récap seront forcément mis à la fin de tout les onglets (mon VBA est ok)

    Dans les onglets récap en colonne Q (N°Certificat), est indiqué une référence et j'aimerai qu'en fonction de cette référence, le code aille chercher dans tous les onglets, les éléments se rapportant à cette référence et en fonction des titres du tableau en ligne 1 (un peu comme une rechercheV ou un DBlire mais sur tous les onglets).
    Forcément les ligne où les informations sont barrées ne doivent pas figurer ainsi que les TCD.
    Est-il possible de faire ceci?

    Merci à tous par avance de votre aide !

    PS: je vous joins mon fichier

    Bonne et heureuse année 2023 à tous
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 267
    Points : 406
    Points
    406
    Par défaut Début de piste
    Bonjour,
    dans un module, on pourrait mettre ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function nomFeuille()
    Application.Volatile 'permet la MAJ auto si changement de nom de feuille
    nomFeuille = ActiveSheet.Name
    End Function
    Dès lors, dans le classeur, la fonction =nomfeuille() renverrait le nom de l'onglet
    On pourrait utiliser des fonctions classiques du style =GAUCHE(nomFeuille();8) pour récupérer la date par exemple.

    Pour la seconde question, je pense qu'il serait plus simple de lancer l'exécution pour faire la mise à jour et ainsi obtenir le résumé souhaité.
    Ex : sur clic, récupérer les infos de tous les feuilles (ne se nommant pas comme les récap) et les copier sur une feuille "recup" puis en extraire les données sur les feuilles récap.

    Fab

  3. #3
    Membre averti
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 267
    Points : 406
    Points
    406
    Par défaut Erreur
    La nouvelle année commence bien avec une belle erreur dans ce que j'ai dit précédemment...
    si on utilise la fonction nomfeuille() ca va changer à chaque fois qu'une donnée et réactualisée et donc fausser la donnée...

    vaudrait peut etre mieux se pencher sur la mise en place dans ThisWorkbook d'un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Range("A1").Value = ActiveSheet.Name
    End Sub
    En changeant le A1 par une cellule où on serait sûr qu'il n'y ait rien

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Citation Envoyé par bmartin0903 Voir le message
    ONGLET DE TRAVAIL
    Sur ces onglets de travail, est-il possible d'automatiser les colonnes B à D (DATE FORMATION, N° FORMATION, LIEU DE FORMATION) en fonction du titre de l'onglet?
    Google propose de mettre cette formule dans la cellule A1, elle permet de retourner le nom de la feuille. A partir de là, tu devrais pouvoir extraire les différents éléments qu'il contient.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DROITE(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-TROUVE("]";CELLULE("nomfichier";A1)))

    [Edit]

    Je viens de regarder ton fichier.
    Les noms d'onglets ne sont pas tous formatés pareil, ça va pas te faciliter la vie (8 ET 09/12/2022).

    Je me demande si tu ne ferais pas mieux de prendre le problème à l'envers en mettant toutes les lignes dans un tableau unique.
    Ensuite, soit tu gardes ton principe d'onglets multiples et tu extraits dans chaque onglet, les lignes qui correspondent (Date + lieu).
    Soit, ce qui à mon avis serait mieux, tu fais des tris sur le tableau principal pour afficher les données souhaitées (directement dans le tableau ou dans un onglet dans lequel tu saisis les valeurs utilisées pour filtrer les données affichées dans un tableau lié au tableau principal.

    En fonction de ta version d'excel, tu peux peut-être t'appuyer sur PowerQuery pour faire les extractions.
    [/Edit]
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre à l'essai
    Femme Profil pro
    Assistante administrative
    Inscrit en
    Septembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistante administrative
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Fab_de_chez_PERFORM Voir le message
    Bonjour,
    dans un module, on pourrait mettre ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function nomFeuille()
    Application.Volatile 'permet la MAJ auto si changement de nom de feuille
    nomFeuille = ActiveSheet.Name
    End Function
    Dès lors, dans le classeur, la fonction =nomfeuille() renverrait le nom de l'onglet
    On pourrait utiliser des fonctions classiques du style =GAUCHE(nomFeuille();8) pour récupérer la date par exemple.

    Pour la seconde question, je pense qu'il serait plus simple de lancer l'exécution pour faire la mise à jour et ainsi obtenir le résumé souhaité.
    Ex : sur clic, récupérer les infos de tous les feuilles (ne se nommant pas comme les récap) et les copier sur une feuille "recup" puis en extraire les données sur les feuilles récap.

    Fab

    Merci beaucoup pour ton aide, je vais voir ce que je peux faire

  6. #6
    Membre à l'essai
    Femme Profil pro
    Assistante administrative
    Inscrit en
    Septembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistante administrative
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Salut



    Google propose de mettre cette formule dans la cellule A1, elle permet de retourner le nom de la feuille. A partir de là, tu devrais pouvoir extraire les différents éléments qu'il contient.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DROITE(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-TROUVE("]";CELLULE("nomfichier";A1)))

    [Edit]

    Je viens de regarder ton fichier.
    Les noms d'onglets ne sont pas tous formatés pareil, ça va pas te faciliter la vie (8 ET 09/12/2022).

    Je me demande si tu ne ferais pas mieux de prendre le problème à l'envers en mettant toutes les lignes dans un tableau unique.
    Ensuite, soit tu gardes ton principe d'onglets multiples et tu extraits dans chaque onglet, les lignes qui correspondent (Date + lieu).
    Soit, ce qui à mon avis serait mieux, tu fais des tris sur le tableau principal pour afficher les données souhaitées (directement dans le tableau ou dans un onglet dans lequel tu saisis les valeurs utilisées pour filtrer les données affichées dans un tableau lié au tableau principal.

    En fonction de ta version d'excel, tu peux peut-être t'appuyer sur PowerQuery pour faire les extractions.
    [/Edit]
    ++
    Qwaz
    Merci beaucoup pour ta proposition
    Nous avons besoin de faire un suivi à la date (par onglet), mais il n'est pas facile de retrouver la dernière référence car il faut chercher le dernier onglet créé... d'où ma demande d'automatisation sur une feuille synthèse... tant pis, je vais quand même tester ta formule
    Merci pour cette avancée

  7. #7
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Quelle version d'Excel utilises-tu?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Membre à l'essai
    Femme Profil pro
    Assistante administrative
    Inscrit en
    Septembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistante administrative
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Salut

    Quelle version d'Excel utilises-tu?

    ++
    Qwaz

    Je travail avec la version suivant: Microsoft*365 MSO (Version 2211 Build 16.0.15831.20098)

  9. #9
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Je continue de penser que tu devrais faire le travail inverse.
    L'idéal serait de travailler avec un Userform, à chaque saisi, tu passes par le UserForm dans lequel tu sélectionnes les données indiquant de quelle formation il s'agit et l'opération à effectuer (annulation d'un participant). De là les données devraient être déversée dans un tableau structuré commun.

    En parallèle, tu pourrait avoir un bouton permettant de créer un formation. Ici un UserForm te demande les renseignements caractérisant la formation, le code créerait l'onglet correspondant avec un tableau issu de ton tableau principal, et filtré pour ne conserver que les données lié à la formation en question.

    [Edit]
    Je dirais même qu'il faudrait organiser les données de la sorte (bien sûr pas de tableau les uns en dessous des autres)
    Nom : 2023-01-05_20h16_51.png
Affichages : 121
Taille : 24,2 Ko
    J'ai ajouté une info date d'annulation, cette info peut être utilisée pour mettre en place un MFC (Mise En Forme Conditionnelle) afin de rayer la ligne.
    Ces tableaux seraient importés dans Power Query (c'est du temps réel, à ne faire qu'une fois). De là, dans Power Query tu fais les jointures de données.
    [/Edit]

    Si tu veux persister dans le sens inverse, regarde du coté de Power Query, tu y a accès avec ta version d'Excel. il peut te permettre de récupérer tes données dans chaque feuille pour ensuite les agréger dans un seul tableau.
    Les données qui sont dans les différents onglet doivent être placées dans des tableaux structurés (Menu insertion... Tableau). Puis dans l'onglet Données... "A partir d'un tableau ou d'une plage". Par contre, va falloir coder en M pour mettre un routine qui récupère le contenu des onglets, tu ne pourras pas faire la manip pour chaque onglet, il faut que le code boucle tout seul sur les onglets.

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  10. #10
    Membre à l'essai
    Femme Profil pro
    Assistante administrative
    Inscrit en
    Septembre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistante administrative
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Salut

    Je continue de penser que tu devrais faire le travail inverse.
    L'idéal serait de travailler avec un Userform, à chaque saisi, tu passes par le UserForm dans lequel tu sélectionnes les données indiquant de quelle formation il s'agit et l'opération à effectuer (annulation d'un participant). De là les données devraient être déversée dans un tableau structuré commun.

    En parallèle, tu pourrait avoir un bouton permettant de créer un formation. Ici un UserForm te demande les renseignements caractérisant la formation, le code créerait l'onglet correspondant avec un tableau issu de ton tableau principal, et filtré pour ne conserver que les données lié à la formation en question.

    [Edit]
    Je dirais même qu'il faudrait organiser les données de la sorte (bien sûr pas de tableau les uns en dessous des autres)
    Nom : 2023-01-05_20h16_51.png
Affichages : 121
Taille : 24,2 Ko
    J'ai ajouté une info date d'annulation, cette info peut être utilisée pour mettre en place un MFC (Mise En Forme Conditionnelle) afin de rayer la ligne.
    Ces tableaux seraient importés dans Power Query (c'est du temps réel, à ne faire qu'une fois). De là, dans Power Query tu fais les jointures de données.
    [/Edit]

    Si tu veux persister dans le sens inverse, regarde du coté de Power Query, tu y a accès avec ta version d'Excel. il peut te permettre de récupérer tes données dans chaque feuille pour ensuite les agréger dans un seul tableau.
    Les données qui sont dans les différents onglet doivent être placées dans des tableaux structurés (Menu insertion... Tableau). Puis dans l'onglet Données... "A partir d'un tableau ou d'une plage". Par contre, va falloir coder en M pour mettre un routine qui récupère le contenu des onglets, tu ne pourras pas faire la manip pour chaque onglet, il faut que le code boucle tout seul sur les onglets.
    Bonjour,

    Merci pour cette nouvelle possibilité, je vais regarder et approfondir ceci.

    pour information, j'essaye de mettre au gout du jour des informations qui sont utilisé depuis longtemps et comme je viens d'arriver dans l'entreprise, je ne peux pas bousculer toutes les habitudes de tous et de la personne en arrêt maladie comme je le souhaite c'est pour cela que je souhaite garder cette base "inverse" dans un premier temps pour ensuite passé sur le bon sens...

    J'aime bien ton idée, et ne connaissant pas, je vais m'y intéresser de plus prêt.

    Merci beaucoup pour tous ceci

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

Discussions similaires

  1. [XL-2019] Automatiser un Power Point à l'aide d'une macro Excel VBA
    Par lati_sakina dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/05/2022, 13h40
  2. [Mission/Télétravail] Prestataire Freelance Excel VBA Access Macros Tableau croisé finance Automatisation
    Par Pythonesque dans le forum Demandes
    Réponses: 0
    Dernier message: 03/10/2019, 15h48
  3. Automatisation d'une enquête via ACCESS+ EXCEL + VBA
    Par LaTOPE dans le forum Général VBA
    Réponses: 6
    Dernier message: 02/05/2018, 17h04
  4. [Mission/Télétravail] Consultant Développeur Freelance Excel VBA Macros Tableau croisé finance Automatisation
    Par Pythonesque dans le forum Demandes
    Réponses: 0
    Dernier message: 27/02/2018, 01h47
  5. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27

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