Générer des étiquettes à partir d'un tableau à double entrées

Bonjour à tous et à toutes,

Je vous expose ci-dessous mon problème:

Je reçois un tableau hebdomadaire de commande de pains sous forme de fichier excel, avec

- en abscisse la date et le type de produit commandé ("PAIN" ou "BAGUETTE"")

- en ordonnée la structure qui passe la commande ("ECOLE 1", "ECOLE 2", etc...)

- mes données chiffrées qui sont le nombre d'unité commandées

Le tableau se lit de cette manière:

- Lundi 26 novembre, l'école 1 commande 13 pains + 24 baguettes

A partir de ce tableau, je souhaiterai générer une planche d'étiquettes sur une seconde feuille de mon classeur excel, pour ensuite pouvoir les imprimer sur des étiquettes autocollantes.

Les étiquettes voulues ont les contraintes suivantes:

1) Mon étiquette doit avoir les mentions suivantes en majuscules et dans cet ordre:

"NOM DE L'ECOLE"

"DATE"

"NOMBRE D'UNITES" "PRODUIT COMMANDé"

2) Le nombre d'unités qui doit figurer sur l'étiquette est limité à

- 14 unités pour les PAINS

- 20 unités pour les BAGUETTES

Cela correspond à la capacité maximum des unités de manutention (un sac de livraison ne peut accueillir que 14 pains ou 20 baguettes)

3) Dans le cas où la condition 2) n'est pas respectée, il faut générer une/plusieurs autre(s) étiquette(s) qui ne dépassent pas 14 unités pour les PAINS ou 20 unités pour les baguettes. Le nombre d'unités doit être réparti équitablement entre les différentes étiquettes: si l'ECOLE 5 commande 15 PAINS, la répartition doit être 8+7 et non 14+1

4) Ma planche d'étiquette doit comporter 12 étiquettes: 2 (largeur) x 6 (hauteur)

5) Il peut arriver qu'il n'y ait pas de commande pour une école (voir cellules C5 et C7 de mon fichier), il ne faut pas générer d'étiquettes dans ce cas là

Mon fichier ne contient que les données du lundi, mais je souhaiterai faire de même jusqu'au vendredi, à la suite, pour tout imprimer d'un coup

J'ai quelques notions sur Excel mais pas du tout en VBA, et il me semble très compliqué de générer des étiquettes uniquement avec les fonctions présentes dans Excel. Je fais donc appel à votre aide et serait très reconnaissant pour l'aide que vous pourriez m'apporter à résoudre ce problème :)

Bonne journée.

Cordialement;

Vincent

Bonjour

Excel 2020 n'existe pas

Peux-tu vérifier ta version car tu postes un format xls périmé depuis 13 ans...

Ne peux-tu créer le tableau dans l'autre sens

Date, Ecole, Pains, Baguettes

car là c'est difficilement exploitable sans faire inutilement compliqué...

Bonjour Chris, pour ta réponse.

Je procède aux modifications tout de suite quant à l'extension du fichier ! Et ayant fait une mise à jour il y a quelques jours je pensais qu'il s'agissait de la d'Office 2020, mais enfaite non ;)

Pour ce qui est du tableau d'origine, je peux tout à fait le modeler pour le rendre exploitable, tout est question de prise en main pour les utilisateurs qui remplissent les données des commandes (prise en main qui ne sera pas trop difficile je pense).

Un tableau de cette forme-ci est t'il plus exploitable ?

Bien Cordialement,

Vincent

Bonjour

J'ai préparé la liste d'étiquettes : tu peux les imprimer en publipostage Word ?

Peux-tu préciser si tu édites 1 seul jour ou plusieurs ?

Tu imprimes sur des étiquettes autocollantes ? si oui il faut donner le détail des dimensions

Bonjour Chris, merci beaucoup !

Je peux tout à fait les imprimer en utilisant la fonction publipostage, et en général j'édite les étiquettes pour toute la semaine...du lundi au vendredi. Ce n'est d'ailleurs pas grave si sur une seule et même feuille d'étiquettes deux jours se superposent, un coup de ciseaux et c'est réglé :)

Enfin, mes impressions se font sur des planches d'étiquettes AVERY-L4743, étiquettes qui font chacune 99,1 x 42,3 mm. Il faut compter 12 étiquettes par planches (2 en largeur x 6 en hauteur).

Bonne journée.

Bonjour

J'avais zappé la répartition équitable qui complique nettement. C'est fait !

La solution passe par PowerQuery, intégré à Excel : utiliser Données, Actualiser Tout une fois les dates choisies dans l'onglet Paramètres

Tu as un onglet Pour Publipostage a utiliser dans Word où pourras y gérer le format d'étiquettes

Génial Chris, merci beaucoup.

J'essaie maintenant d'adapter le fichier à une feuille de commande qui contient beaucoup plus d'écoles que ce qu'il y avait en exemple.

Je n'ai jamais entendu de PowerQuery, en quoi cela diffère t-il de Visual Basics ?

Bonne journée :)

Bonjour

Tu peux normalement ajouter des école (nouvelles lignes) et des produits (nouvelles colonnes)

Pour les produits il faut compléter le tableau des limites dans la feuille Paramètres en respectant la casse (majuscules, minuscules) car PowerQuery y est sensible

On pourrait peut-être ajouter un tri en fin de requête : dis mois et je t'expliquerai comment le faire dans PowerQuery

C'est un requêteur donc avec une logique base de données

Dans nombre des cas il remplace VBA car plus simple pour pas mal de traitements

J'ai compris la logique et j'ai pu l'adapter à mon utilisation , c'est pile ce qu'il me fallait :) ... j'ai en effet rajouté des nouvelles lignes, et je ne pense pas avoir besoin de rajouter d'autres produits autres que PAIN et BAGUETTES, mais c'est tout de même bon à savoir !

Tu m'expliques qu'il est possible d'apposer un tri dans notre liste "POUR PUBLIPOSTAGE", mais est t'il possible de créer un filtre automatique autre que celui au niveau de l'entête de notre tableau (le petit entonnoir) ? Je t'explique: mon publipostage est parfait, j'ai pu rentrer les dimensions de mes étiquettes, et les formater de façon à avoir toutes mes informations sur chaque étiquette...mais sur Word lorsque je veux "Filtrer mes destinataires" afin de ne pas créer d'étiquettes " 0 BAGUETTES" ou "0 PAINS", le filtre ne se fait pas (enfin il s'est fait correctement une première fois puis après impossible de filtrer ces 0 baguettes et 0 pains).

A chaque fois que j'essaie d'apposer ce filtre, deux autres filtres sont créées sans que je le veuille, et impossible de les faire disparaître, ils reviennent à chaque fois

<ou>

<Champs> = quantités

<Comparaison> = vide

...peut être que je ne maîtrise pas la notion de "filtre" mais c'est assez embêtant parceque ça me ferait gaspiller énormément d'étiquettes.

Je pense qu'il serait plus simple (si c'est possible) de créer ce filtre sur la base de donnée avant de l'importer sur Word pour le publipostage.

Je te joins les fichiers si nécessaire:

Merci pour les infos sur PowerQuery !

Bonjour

La tableau source de commandes n'était pas supposé contenir des formules : la requête filtrait les cellules vides mais là on obtient 0 avec des formules

Un tableau structuré doit contenir des formules identiques de la 1ère à la dernière ligne : là tu risques des problèmes et, si cela se produit, cela va se répercuter sur l’exploitation par requête.

Ma proposition initiale était d'inverser la structure de saisie. La requête est cohérente avec cela, pas avec ton tableau formulé

Là tu essayes de ménager la chèvre et le chou et on va au-devant de problèmes.

En plus si tu choppes un autre client tu vas devoir encore ajouter d'autres formules ...

Je veux bien ajouter le filtre des 0 mais je ne garantis plus la stabilité de la solution

Bonsoir Chris,

Ça y est, j'ai compris le pourquoi du comment...quand les cellules sont vides dans le tableau source, la ligne n'est tout simplement pas créée dans la feuille "pour publipostage". Mais à cause des formules, je me retrouve avec des cellules qui ne sont pas vides.

J'imagine que les données doivent donc être impérativement saisies directement dans le tableau source pour garantir le bon fonctionnement de la requête ?

Je devrais pouvoir me débrouiller comme cela, c'est déjà un gain de temps monumental, merci encore mille fois.

Bien à toi,

Vincent

RE

Si cela facilite la saisie tu peux ajouter une colonne entre la colonne date et la colonne ’école ou avant la date avec le nom du client.

Je peux adapter la requête pour ne l'utiliser qu'en tri des étiquettes

C'est noté, merci

RE Chris,

J'ai un petit peu flâné sur PowerQuery afin d'essayer de comprendre comment tu étais parvenu à la solution que tu m'as apporté.

Simple petite question -j'imagine bien que ça ne fonctionne pas sinon tu y aurais probablement pensé-, mais pourquoi ne pas utiliser pour l'étape "Ligne filtrées 1" le code

= Table.SelectRows(#"Fractionner la colonne par délimiteur", each ([Qté] <> "0"))

au lieu de

= Table.SelectRows(#"Fractionner la colonne par délimiteur", each ([Qté] <> ""))

Je crois comprendre que ce code permet de sélectionner uniquement les lignes pour lesquelles le nombre de pains/baguettes ne serait pas nul.

Et tu m'as expliqué tout à l'heure que l'utilisation de formules aboutissait à des cellules avec zéros et non des cellules vides dans notre tableau source, ce qui après engendrait des problèmes pour le bon traitement de la requête. Pourquoi ne pourrions-nous pas pallier à ce problème de cette façon: en sélectionnant toutes les lignes pour lesquelles le nombre de pains/baguettes est différent de 0 ?

D'autre part, en procédant à des tests, j'ai constaté un petit "bug" dans la création des étiquettes pour l'école Michelis A (pour tous les jours)

La répartition de 35 pains se fait de la façon suivante: 11 + 11 + 12, qui font 34 et non 35.

capture

Est t'il possible de corriger ça ? si oui, comment ? :)

D'avance, merci.

Bonne soirée

RE

Je t'ai proposé de filtrer dans mon poste de Hier à 19:43 (c'est bien plus tôt dans la requête qu'il faut le faire : entre la 2ème et la 3ème étape de la requête)

mais le souci est surtout en amont comme expliqué car un tableau structuré est supposé contenir des formules homogènes et ce n'est pas le cas

Cela peut engendrer des problèmes : formules qui changent en raison des automatismes, risque d'erreur, maintenance délicate...

Bonjour Chris,

J'espère que tu as passé de bonnes fêtes !

Après un mois d'utilisation du fichier (qui me fait gagner énormément de temps, je t'en remercie), je constate toujours un petit problème avec la requête lorsqu'il s'agit de diviser ma quantité de pain de façon équitable selon la limite imposée. Tout se passe bien lorsque le multiple = 2, mais tu peux le voir avec la capture d'écran ci-dessous, ma répartition des quantités est complètement fausse lorsque le multiple = 3. Pour diviser la valeur 34 en "3 valeurs équitables", la requête me fais du:

11 + 11 + 11 + 12 ( = 45 )

au lieu de

11 + 11 + 12 ( = 34 )

...idem quand je veux diviser la valeur 29, j'obtiens

9 + 9 + 10 ( = 28 )

au lieu de

9 + 10 + 10 ( = 29 )

Et c'est la même chose lorsque je veux diviser les valeurs 32, 33, 35, 38, 39, 40, 41, 43, 46, 47, 50...je n'ai pas fait le test plus loin.

capture

A priori, cette mauvaise répartition n'est pas dûe à une mauvaise manip de ma part, car en faisant un test avec le fichier d'origine que tu m'as transmis dans ton message du 25/11 à 12h14...j'ai le même problème.

Sais-tu comment je pourrai régler ce petit soucis?

Merci d'avance.

Vincent

Merci beaucoup c'est parfait !

Rechercher des sujets similaires à "generer etiquettes partir tableau double entrees"