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 :

Macro pour trier et classer des données avant TCD [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut Macro pour trier et classer des données avant TCD
    Bonjour,
    Merci à tous ceux qui auront le courage de traiter ce problème

    Sur une feuille, dans une colonne unique, des "centres d'intérêt" sont écrits avec un séparateur virgule, en face du nom des personnes.
    Exemples de quelques lignes :
    Nom
    Centres d'intérêt
    Coco i_couture,i_cuisine
    Fred
    Baptiste i_balade,i_convivialite,i_cinema
    Mick i_theatre,i_livres,i_couture,i_bricolage
    Marie i_convivialite
    Isabelle i_informatique
    Yann
    Paul i_sport,i_famille,i_informatique,i_anglais

    A partir de ces données d'entrée, je souhaite créer un tableau croisé dynamique, pour lister les personnes par centre d'intérêt (CI). J'ai conscience que la présentation des données dans l'état ne permet pas de créer le TCD.
    J'imagine une macro comme suit:
    • extraire un dictionnaire des centres d'intérêt existants dans la colonne
    • écrire dans une nouvelle colonne, pour chaque ligne, une chaine avec un séparateur, comprenant les CI, s'ils existe(nt)
    • copier les données dans autant de colonnes que nécessaires (transposer données...)


    Cela donnerait le dictionnaire : i_anglais, i_balade, i_convivialite, i_cuisine, i_couture ...

    Nom
    Centres d'intérêt
    CI ordonnés
    Coco i_couture,i_cuisine ,,,,i_cuisine,i_couture,...
    Fred ,,,,,,,,,,
    Baptiste i_balade,i_convivialite,i_cinema
    Mick i_theatre,i_livres,i_couture,i_bricolage
    Marie i_convivialite
    Isabelle i_informatique
    Yann
    Paul i_sport,i_famille,i_informatique,i_anglais

    Avez-vous des pistes pour résoudre ce problème alambiqué !
    Alain

  2. #2
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    je ne comprends pas la finalité d'avoir le résultat sous forme d'une liste séparée par des virgules dans une seule cellule.

    À part ça la solution la plus simple passe probablement par Powerquery : faire un split de la colonne centres d'intérêts, puis pivoter sur cette colonne pour avoir un "TCD".
    Ensuite si tu tiens absolument aux virgules il faudra réagréger les colonnes.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par Tête de chat Voir le message
    Bonjour,

    je ne comprends pas la finalité d'avoir le résultat sous forme d'une liste séparée par des virgules dans une seule cellule.

    À part ça la solution la plus simple passe probablement par Powerquery : faire un split de la colonne centres d'intérêts, puis pivoter sur cette colonne pour avoir un "TCD".
    Ensuite si tu tiens absolument aux virgules il faudra réagréger les colonnes.
    Bonjour Tête de chat,
    La finalité n'est pas d'avoir le résultat sous forme d'une liste séparée par des virgules dans une seule cellule, mais d'obtenir une liste de Centres d'intérêt par personne et d'avoir une TCD.

    Je découvre Powerquery. Après l'import de la feuille concernée, j'ai sélectionné les deux colonnes.
    Comment poursuivre ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Salut,

    La première question que j'ai envie de te poser est: D'où proviennent tes données ?
    Et: Peux-tu les obtenir autrement ?
    Sous forme normalisée, ce sera autrement plus facile à gérer.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Ta question est TRÈS pertinente, c'est la première réflexion que j'ai entrepris avant d'ouvrir la discussion sur le forum.

    Les données sont issues d'une base de connaissance, genre Notion. L'export créé une colonne Centre d'intérêt, alimentée par des tags.
    Les tags (centres d'intérêt) sont séparés par une virgule et ne sont pas ordonnés dans la cellule. Ils sont susceptibles d'évoluer dans le temps (ajout, suppression, variation orthographe).
    D'où le sujet de la discussion

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Bonjour,
    La nuit porte conseil...
    Hier, dans l'énoncé du problème, j'avais oublié de tester l'étape finale du TCD.
    Par leurs questionnements, deedolith et Tête de chat ont orienté mes réflexions.

    Le TCD doit être de cette forme : somme des Centres d'intérêts
    Somme de i_couture Somme de i_anglais Somme de i_cuisine
    1
    2
    1

    Si je reviens à la macro, l'itération sur la colonne des Centres d'intérêts (CI) :
    • créé la colonne avec le nom du CI,
    • ajoute dans la cellule la valeur 1 si une personne est concernée.

    Une aide serait la bienvenue !
    Merci

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    La première chose à faire, est de retravailler tes données afin de les normaliser (un nom / centre d'intéret par ligne):
    Nom
    Centres d'intérêt
    Coco i_couture
    Coco i_cuisine
    Fred
    Baptiste i_balade
    Baptiste i_convivialite
    Baptiste i_cinema
    Ensuite tu pourras faire le TCD qui te plait.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par deedolith Voir le message
    La première chose à faire, est de retravailler tes données afin de les normaliser (un nom / centre d’intérêt par ligne):
    Ensuite tu pourras faire le TCD qui te plait.
    Bonjour deedolith,
    Ton propos est effectivement exact.
    C'est l'objet du traitement effectué par la macro VBA que j'ai posté ce matin.
    Alain

  9. #9
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    solution Powerquery ci-joint

    TCD_CI.xlsx

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

Discussions similaires

  1. Problème Macro pour trier des données
    Par lmb19 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/11/2010, 00h00
  2. macros pour trier un tableau vers une nouvelle feuille excel
    Par argaz01 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2010, 14h00
  3. [AC-2007] requête pour trier et afficher des champs non vides
    Par girard.hubert dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 25/01/2010, 20h08
  4. macro pour automatiser l'évaluation des garch
    Par paiva44 dans le forum Macro
    Réponses: 2
    Dernier message: 22/01/2010, 22h11
  5. [XL-2003] macro pour afficher les dates des troisièmes vendredi du mois
    Par julius999 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 28/10/2009, 17h39

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