Concatener des données

Bonjour,

Je suis en train de travailler sur un fichier qui collecte dans une colonne A un numéro de commande (Fruit dans mon exemple), chaque ligne correspond à un composant de la commande (je n'ai pas reproduit ces lignes dans l'exemple pour simplifier) par traitement des données j'obtiens une liste de caractéristiques pour chaque commande par colonne (ici la couleur et le diametre du fruit).

Mon objectif est de concatener les données par fruit avec une formule excel. Je joins un fichier exemple qui montre le type de fichier avec lequel je travail, il contient un exemple des données brutes sur la première feuille et l'objectif dans la feuille "fichier cible".

EDIT : dans concatener j'entends "rassembler les données et les grouper par commande"

Merci pour votre aide,

Jean-Alexis

18exemple.xlsx (13.84 Ko)

Bonjour,

Voici ma tentative.

Bonjour,

Merci beaucoup pour votre aide, cela semble bien fonctionner.

Est ce qu'il y aurait une possibilité d'optimisation du temps de calcul en passant par une boucle VBA par exemple ?

Je me permets de préciser, la réponse d'Ausecour m'a grandement aidé, cependant la fonction CONCAT recalcul sans arrêt pour chaque modification, est ce qu'il est possible d'utiliser une autre fonction qui remplirait la tâche ou d'optimiser le temps de calcul (fichier de 10000 lignes..)

Rebonjour,

Il y a plusieurs possibilités, mettre la feuille en calcul manuel pour que les valeurs ne se mettent pas à jour en permanence, il faudra lancer le calcul manuellement quand tu voudras consulter les concaténations pour les mettre à jour. Si tu passes par du VBA ça va être la même chose, il va falloir avoir un bouton pour concaténer tout. Ce qui me semblait quand même étrange avec le fichier que tu as donné, c'est toutes les erreurs qui sont présentes, tu as beaucoup de #N/A aussi dans ton fichier d'origine? J'ai tenté de proposer une solution avec ce qui a été fournis mais je trouvais l'exemple étrange...

Bonjour Ausecour,

Je comprends, je joins une partie du fichier original pour pour t'aider dans la compréhension et te permettre de faire des suggestions.

12help.zip (633.41 Ko)

Bonjour,

J'ai essayé d'utiliser Power Query mais sans succès, je ne suis pas très à l'aise avec son utilisation donc je suis peut-être passé à côté de quelque chose, je vais donc m'orienter vers une solution VBA, mais j'aurais quelques questions à te poser:

  • Comment renseignes-tu tes feuilles Sheet1 et BOM par OF? ce sont des extractions que tu fais automatiquement, ou bien tu renseignes une à une tes lignes?
  • Dans BOM par OF, est-ce que ça te conviendrait de déplacer dans une feuille d'archive les lignes traitées par la macro afin de ne plus les rencontrer par la suite?

Je ne crois pas avoir d'autres questions pour le moment, je commence à voir la problématique beaucoup plus clairement, on s'approche de la solution.

Merci pour ta réponse,

Voici les précisions :

  • Comment renseignes-tu tes feuilles Sheet1 et BOM par OF? ce sont des extractions que tu fais automatiquement, ou bien tu renseignes une à une tes lignes
  • Sheet 1 est renseignée ligne par ligne à la main, BOM par OF est une extraction pour les colonnes A et B, le reste est obtenue grace à sheet 1
  • Dans BOM par OF, est-ce que ça te conviendrait de déplacer dans une feuille d'archive les lignes traitées par la macro afin de ne plus les rencontrer par la suite?
  • Cela ne me pose aucun soucis bien au contraire

Encore merci pour l'aide que tu m'apporte et pour le temps passé

Je pense avoir bien compris la problématique maintenant, je propose la solution en pièce jointe, j'espère que le résultat te plaira.

4copie-de.zip (640.65 Ko)

Merci au secour cela semble fonctionner parfaitement.

Il me reste deux question concernant le code VBA (je suis vraiment débutant en VBA) :

  • Si je souhaite ajouter une colone à la fin de la feuille "BOM par OF" (par exemple une date, ou une zone geographique par exemple) sur quelle variable, indice je dois jouer dans le code ?
  • Même question si j'ajoute une colone entre "order" et "Material" dans la feuille "BOM par OF" comment cela se gère au niveau VBA ?

Rebonjour,

j'ai tenté de rendre le code un peu plus flexible quand à la structure du tableau, mais le codage par VBA ne permet pas une flexibilité infinie non plus.

Le code continuera de fonctionner tant que order sera toujours en colonne 1, et que "Model and steel" reste la première colonne des données de la commande que l'on veut garder. Je joins le fichier qui est plus flexible à présent.

6copie-de.zip (641.34 Ko)

Il faudra quand même modifier en parallèle la feuille de résumé et celle d'archive pour qu'elles suivent aussi le changement dans la feuille BOM par OF.

Ausecour,

J'ai beau ajouter une colone dans BOM par OF ainsi qu'une colonne dans RESUME et OF RESUME, j'ai toujours une erreur out ouf range au niveau de cette ligne de code "If Not IsError(tabSource(i, j)) Then". Tout en respectant le fait que l'on veuille garder ORDER en C1 et model&steel en première donnée à garder..

Que voulais tu dire par ta derniere phrase ? (je l'interprete de la façon suivante : "si tu ajoutes une colone entre A et B dans BOM par OF, tu dois ajouter une colonne entre A et B dans les autres feuilles")

En effet,

je n'avais pas modifié la partie qui déclarait tableauSource, il y avait également 2 autres ajustements à faire, maintenant ça devrait fonctionner correctement.

3copie-de.zip (640.71 Ko)

en lançant, sans ajouter de colonne pour le moment j'obtiens cette erreur :

image

Pour la ligne que j'ai surligné en jaune

Ah,

cette fois j'ai testé le fichier avant d'envoyer, ça devrait vraiment être fonctionnel maintenant.

Je n'ai pas ajouté la colonne date dans BOM comme ce n'est pas une information que je souhaite conserver.

Bonjour Ausecour,

Le nouveau code fonctionne bien, j'ai une nouvelle question :

Imaginons que nous réalisions des exportations annuelles sur les commandes, aujourd'hui les code ne met pas à jour les les commandes dans le resume, ainsi, si on exporte à nouveaux la même commande on peut se retrouver avec des doublons dans la feuille "resume". ESt ce qu'il est possible d'ajouter un code qui interroge "resume" avant de commencer à le renseigner ?

Merci d'avance,

Bonjour,

Oui c'est possible d'interroger la feuille Resume, mais cela soulève une nouvelle question, si on a déjà le code d'une commande dans Resume, on met à jour ses informations par rapport à celles dans BOM par OF, ou bien on l'ignore?

Mettre à jour les informations me semble être le plus sûr mais également le plus gourmand en ressources, mais j'ai du mal à ne pas imaginer une commande changer avec le temps. Qu'en penses-tu?

Je suis d'accord, pour moi il faudrait mettre à jour la fiche "resume" par rapport à" BOM par OF". Le fichier BOM par OF sera mis à jour en fonction des nouvelles commandes cependant dans l'export nous retrouverons aussi les anciennes commandes.

Il faudrait qu'a chaque export, la macro commence par effacer la fiche "resume" et "OF resume", puis la remplisse avec les nouvelles données ? qu'en penses tu ?

de plus l'export nous donnes des données (confidentielles c'est pour ça que je les ai supprimé dans le fichier) jusqu'a la colonne "N" de " BOM par OF" , le reste est calculé par des formules. Ainsi on vient copier coller l'exportation dans les colonnes A à N, ça fonctionne trèbien avec le code actuel. ma question est : est ce que la macro pourrait étendre automatiquement les formules pour le reste des colonnes ? (exemple : copié collé des donné jusqu'a la colonne N et remplissage auto des formules de la colonne O à la première colonne dont la première cellule est non vide).

Merci pour ton aide,

Je propose la solution en pièce jointe, j'ai rajouté une commande bidon pour tester, voici comment fonctionne le code:

  1. enregistrement des codes commande présents dans la feuille Resume
  2. parcours de la feuille BOM par OF, si le code de la commande est déjà présent dans la feuille Resume, on enregistre quelque part qu'il faut supprimer la ligne de résumé pour la remplacer
  3. suppression des lignes à remplacer
  4. archivage des lignes restantes de Resume (si il en reste c'est que le code n'est pas présent dans BOM par OF, je considère qu'il faut l'archiver)
  5. export des données synthétisées de BOM par OF dans Resume
  6. archivage des OF de BOM par OF dans OF Resumed

Bonjour Ausecour,

Cela semble fonctionner.

Merci de ton aide.

Rechercher des sujets similaires à "concatener donnees"