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 :

Compiler tableaux en une ligne


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Compiler tableaux en une ligne
    Bonjour à tous :)

    Je reviens vers vous suite à la précieuse aide que vous m'aviez apporté la dernière fois !

    J'ai un nouveau projet et je dois réunir plusieurs fichier excel en un seul. Ces fichiers sources, se trouvant dans le même dossier, possèdent tous la même interface, et on tous un tableau identique. Ces tableaux ont des colonnes Non Applicable, Notions, Application, Maîtrise, Expert. Sur chaque ligne du tableau est présente une croix:X (ou n'importe quel autre élément) dans une des colonne précédemment cité.
    Nom : tableau.PNG
Affichages : 113
Taille : 9,5 Ko

    Ailleurs se trouve un fichier qui compile tous ces fichiers. Chaque tableau de fichier se résume en une ligne. La différence est que les croix se transforme en NA si dans la colonne NA, en 1 si dans la colonne Notions, en 2 si dans le colonne Applications, en 3 si dans la colonne Maîtrise, en 4 si dans le colonne Expert. Voilà ce à quoi devrait ressembler le fichier compilateur une fois la macro réalisé:
    Nom : Compilateur.PNG
Affichages : 109
Taille : 10,4 Ko

    J'aimerai avoir votre aide concernant le code à utiliser pour qu'automatiquement les lignes se remplissent.

    J'ai déjà commencé avec ces lignes de codes afin que les fichiers excels puissent être lus:
    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
     
    Option Explicit
    'Déclaration des variables
    Dim FichierSource As String
    Dim CheminFichiersSource As String
    Dim WBSource As Workbook 'Appelle le fichier source
     
    Sub Compilateur()
     
    'Etape 1: Parcourir les fichiers du dossier prédéfini
     
    CheminFichiersSource = "C:\XXXXXXXXXXXXXXXXXXXXXXXXXX\Unificateur de fichiers excel\test"
    'On cherche le premier classeur dans le dossier
    FichierSource = Dir(CheminFichiersSource & "*.xlsx")
    'On boucle pour chercher tous les classeurs Excel
     
    While Len(FichierSource) > 0
        Set WBSource = Workbooks.Open(CheminFichiersSource & FichierSource)  'On ouvre le fichier dans lequel on veut extraire les données
     
    'On prend les données du fichier
     
        ThisWorkbook.Activate  'On revient sur le classeur de synthèse
     
    'On les traites et colle dans le fichier compilateur
    Comme vous le voyez je ne sais pas comment traiter les données du tableaux pour les transformer. Donc si quelqu'un avait une solution j'en serais extremement ravi :)

    Merci d'avance pour votre aide :D
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior

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

    Une solution PowerQuery (intégré à Excel)

    Adapter le nom du dossier puis Données, actualiser tout ou automatiser avec ThisWorkbook.RefreshAll
    Fichiers attachés Fichiers attachés
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Merci Chris pour ton aide.

    Je ne connaissais pas Power Query. j'arrive à faire fonctionner ton fichier. Néanmoins j'ai un peu simplifier le problème que je vous ai exposer et je ne sais pas si on peut toujours l'utiliser avec les contraintes que je n'ai pas énoncer.
    Le truc c'est qu'il y a plusieurs fichiers à traiter et que j'aimerai qu'il ajoute aux données existantes les nouvelles sans les effacer. Ca serait possible ? C'est aussi pour ça que je passais par un code vba.

  4. #4
    Expert éminent sénior

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

    Ton dossier peut contenir autant de classeurs que tu veux

    As-tu testé ?
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Oui j'ai testé et il fonctionne et ce quelque soit le nombre de fichiers.

    Mais j'ai trois problèmes:
    - le premier c'est que j'ai plusieurs tableaux à extraire dans une même feuille d'un fichier source.
    - le second c'est que le tableau à remplir dans mon fichier compilateur est déjà prédéterminé. Ce que je souhaite c'est le remplir.
    - le troisième est les fichiers sources se trouvent dans des dossiers différents. Par exemple dans C:\Doc\Femmes j'ai les fichiers source de Anne, Ines et Sophie à récupérer et dans C:\doc\Hommes j'ai les fichiers sources de Pierre, Paul, Jacques et ainsi de suite.

    Je vais donc préciser ce que je cherche à faire.

    Dans les deux nouveaux fichiers çi-joint, les tableaux sont placés exactement comme ils devraient être.
    Le FichierCompilateur prends les informations (Nom, Prénom, Date, Milieux) de feuilles excel comme Paul, Pierre, Jacques dans un dossier et les enregistre. Puis je pointe vers un autre dossier et il prendra les fichiers excel de cet autre dossier sans écraser les anciennes.
    Comme je le disais avant, les croix se transforment en NA si dans la colonne NA, en 1 si dans la colonne Notions, en 2 si dans le colonne Applications, en 3 si dans la colonne Maîtrise, en 4 si dans le colonne Expert.

    FichierCompilateur.xlsx
    Antoine.xlsx

    j'espère que cela sera plus clair de la sorte.

  6. #6
    Expert éminent sénior

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

    Un fichier vide avec juste des titres à remplir ou un résultat complet, je ne vois pas ce que cela change si les règles de titrage sont précisées.

    Mais si tu fournis des fichiers non représentatifs et des explications changeantes je vais m'abstenir...

    Citation Envoyé par Linkay Voir le message
    Bonjour à tous

    Ces fichiers sources, se trouvant dans le même dossier, possèdent tous la même interface, et on tous un tableau identique.
    Citation Envoyé par Linkay Voir le message
    Oui j'ai testé et il fonctionne et ce quelque soit le nombre de fichiers.

    Mais j'ai trois problèmes:
    - le premier c'est que j'ai plusieurs tableaux à extraire dans une même feuille d'un fichier source.
    - le second c'est que le tableau à remplir dans mon fichier compilateur est déjà prédéterminé. Ce que je souhaite c'est le remplir.
    - le troisième est les fichiers sources se trouvent dans des dossiers différents.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    J'ai pour philosophie que lorsque l'on travail sur un projet complexe, pour rendre celui-ci plus digeste et réalisable, on le décompose de tel sorte que la contrainte principale soit clairement identifier et résolu en priorité. Viennent après les sous contraintes que l'on résout les une après les autres.

    De plus, je n'avais pas connaissance de PowerQuery jusqu'à ce matin. Cette extension d'Excel m'a l'air très contraignante dans la mesure où il faut prendre en compte tout de suite toutes les sous-contraintes qui seront à réaliser. Sauf que ça, je ne pouvais pas le savoir n'ayant pas connaissance et ne sachant pas utiliser cet outil Excel.

    M'attendant à recevoir de l'aide en VBA, j'ai fonctionné exactement de la même manière que sur les autres sujets que j'ai exposé sur ce forum. C'est à dire récupérer le squelette du code VBA que l'on me propose pour résoudre mon principal problème, l'étudier pour comprendre comment il fonctionne, l'adapter à la réalité du problème puis y ajouter mes propres lignes de code qui me permettent de résoudre les sous-contraintes. Cela me permet aussi de gagner en expérience et de pouvoir aider sur un sujet semblable quand de l'aide met demandé. Jusqu'à maintenant cela c'est toujours très bien passé quand j'ai exposé mes problèmes sur le forum mais aussi dans plusieurs domaines autre que le codage.
    C'est aussi, pour moi, une façon plus respectueuse de demander de l'aide en disant " Salut tout le monde, je travail sur un projet et sur une partie du code (dans mon cas attribuer des valeurs ou NA en fonction de la position d'une croix dans un tableau) je bloque. Voilà ce que j'aimerai faire, avez vous une idée sur la solution à adopter ou avez vous une solution ?" que de faire "Salut tout le monde, voici mon projet [...], faites moi tout le code svp, comme ça je copie-colle, merci, au revoir"

    A partir de ça, voilà comment j'ai décomposé mon projet.
    1 - Transformer correctement les croix en NA ou nombre en fonction de leurs position.
    2 - Pouvoir lire plusieurs fichiers excel et les compiler dans un unique tableau.
    3 - Pouvoir faire la même chose mais cette fois-ci avec plusieurs tableaux de croix à extraire d'un même fichier.
    4 - Pouvoir lire plusieurs classeurs comprenant plusieurs fichiers.

    Maintenant je me dis que je devrais inverser 2 et 3 pour donner.
    1 - Transformer correctement les croix en NA ou nombre en fonction de leurs position.
    2 - Pouvoir faire la même chose mais cette fois-ci avec plusieurs tableaux de croix à extraire d'un même fichier.
    3 - Pouvoir lire plusieurs fichiers excel et les compiler dans un unique tableau.
    4 - Pouvoir lire plusieurs classeurs comprenant plusieurs fichiers.

    J'aurais du sans doute exposer toutes les taches dès le départ (chose que je n'ai pas faite par soucis de discrétion) et demander de l'aide sur l'une d'elle spécifiquement. Tu as plus d’expérience que moi en codage, sur l'exposition et la résolution de problèmes sur ce forum. Ta façon de fonctionner est donc sans doute plus propice que la mienne pour la résolution de problèmes sur ce forum. Je ne voulais pas te vexer et je voulais bien faire. Je m'en excuse.

    Ce weekend, j'ai taper quelques lignes de codes vba pour résoudre mon problème. Je n'ai pas le code avec moi et il n'est pas fini mais je l'exposerai demain.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/08/2007, 08h56
  2. [Tableaux] Insérer une ligne au début d'un tableau
    Par WagaSeb dans le forum Langage
    Réponses: 5
    Dernier message: 20/06/2007, 12h13
  3. [Tableaux] Créer une ligne dynamiquement
    Par Lenaick dans le forum Langage
    Réponses: 11
    Dernier message: 24/01/2007, 10h58
  4. [Tableaux] Effacer une ligne dans un tableau
    Par gpsevasion dans le forum Langage
    Réponses: 8
    Dernier message: 22/01/2007, 16h38
  5. Réponses: 4
    Dernier message: 19/05/2006, 10h10

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