Recuperation de données et mise en page

bonjour,

Je cherche une solution a un problème que j'ai.

Je reçois (pour mon travail) des tableaux avec les colonnes suivantes :

  • désignation
  • prix d'achat HT
  • prix d'achat TTC
  • prix de vente
  • prix avec remise
de ce fichier, je dois faire des étiquettes toujours sur exel avec un format spécifique, qui doit rentrer dans un présentoir. où les formations son mise en page d'une manière particulière.

pour l'instant, je suis obligé de tout retaper et de refaire la mise en page.... existe t'il un moyen ou une macro, pour générer les étiquettes directement?

merci de votre aide

Bonjour,

si ton étiquette est toujours la même ou si tes données à y placer sont toujours organisés de la même façon, oui c'est possible, après si tu ne met pas de fichier qui ressemble à ce que tu as et ce que tu attends, ça va être dur de t'aider ^^ (Si c'est juste une question de mise en page, tu enregistre une macro, cela te permet de répéter la même tâche. Si cela varie, il faut adapter la macro enregistrée pour qu'elle s'adpte aux données)

Je n'avais pas vu où on pouvais mettre les "pièces jointes".

du coup, voila le genre de fichier, en feuille 1 le listing que je recois

et en 2eme feuille, le format type de mes étiquettes.

Merci pour la réponse aussi rapide !!

22exemple.xlsx (16.92 Ko)

Salut,

J'ai déjà fait ça (c'est très brouillon en terme de codage : on peut faire beaucoup moins lourd mais j'ai pas la motivation ce soir ^^), je voulais savoir, dans désignation comment vous gérez la taille de la cellule de l'étiquette correspondante, vu que le contenu varie, y a-t-il une taille a respecter etc ?

Je joins le code pour avoir une idée (macro "etiquette" pour faire la mise en place des données, changement police, fusion des cellules....; "effacer" pour remettre la feuille comme à son ouverture (pour les tests))

18etiquette.xlsm (27.03 Ko)

salut,

merci c'est déjà génial, je me doutais un peu qu'a coder ce genre d'action ca serait bien lourd.

pour la partie désignation, en général, on ne note juste que ce qui nous intéresse pour gérer le stock.

Il n'y a pas de contrainte a ce niveau là.

mais merci beaucoup c'est géant !! et cela va déjà beaucoup m'aider !!!

Re, je viens de mettre tout dans la même boucle, la macro est beaucoup plus rapide (j'ai ajouté des commentaires pour que tu puisses voir le raisonnement. La plupart des fonctions, surtout le changement format, police, fusion cellule, etc, c'est excel qui me les a donné en utilisant la fonction "enregistrer une macro")

Je te met la nouvelle version et je regarde pour te faire l'encadrement des cellules

Ah fais attention aussi, je n'ai pas mis de règlage de la taille des colonnes, certaines étiquettes sont plus grandes que d'autres, donc :

  • soit tu redimmensionnes manuellemenent (une fois si tu utilises le même fichier) tes étiquettes pour avoir la taille voulue et elle ne changeront pas (si tu changes de fichier ou si tu utilise la macro sur un autre fichier il faudra regarder)
  • soit on enregiste code dans la macro pour imposer une taille aux colonnes
12etiquettev2.xlsm (32.08 Ko)

Je viens de penser à un truc, vérifie avant d'imprimer, combien d'étiquettes tu peux avoir sur ta feuille, sinon tu vas te retrouver avec des étiquettes coupées en deux.

En rajoutant le traçage on ralentit un peu le programme (je vais regarder s'il y a moyen d'optimiser un peu pour éviter le ralentissement)

20etiquettev3.xlsm (37.13 Ko)

j'ai testé l'impression, en effet il y a un probleme, mais c'est pas super grave, si c'est juste réajuster ca, c'est déjà beaucoup moins lourd.

et petite question, mais j'ai envie d'essayer de faire la programmation moi meme (c'est un détail) si je veux rajouté une ligne sous designation, pour mettre la référence, je suppose que c'est possible, non?

C'est effectivement possible la seule chose c'est qu'il faut faire attention à ce que tu fais, on a actuellement des étiquettes qui fonctionnent sur 3 lignes, si tu en rajoutes une, il faudra penser à adapter le reste de ton code sinon en lançant la macro cela va faire un gros paté.

Pour résumer, le code va chercher des valeurs dans ta feuille de donnée et les mets dans les cellules correspondantes de la feuille étiquettes (1ère ligne prix, 2ème ligne lot de 2 et prix, 3ème ligne désignation, ensuite on décalle de 3 lignes pour faire une nouvelle étiquette).

Note : A5 = (5,1) : 5 représente le numéro de la ligne et 1 celui de la colonne

On joue sur le système de variable, "l" (L minuscule) est la variable représente la ligne, et "c" la colonne, on se base sur ses deux valeurs pour dire à Excel tu me places ici ou ici :

Le style de ligne qui va t'intéresser dans ce cas se sera celle là :

Sheets("Etiquette Tarif").Cells(l, c).Value = Sheets("Tableau de donnée").Cells(i, 5).Value

Littéralement : Le contenu de la cellule de ligne "l" et de colonne "c", de la feuille "Etiquette Tarif" devient égal au contenu de la cellule de ligne "i" et de colonne E ("5")

Cela correspond au prix unitaire

Comme tu peux le voir dans l'extrait de code en dessous j'utilise cette formule pour chaque information de l'étiquette, en changeant juste les coordonnées de l'information à récupérer et les coordonnées pour la placer.

'Cellule prix
                Sheets("Etiquette Tarif").Rows(l).RowHeight = 60
                Cells(l, c).Select
                Selection.NumberFormat = "$#,##0.00_);($#,##0.00)"
                Sheets("Etiquette Tarif").Cells(l, c).Value = Sheets("Tableau de donnée").Cells(i, 5).Value
            'Cellule lot de 2
                Sheets("Etiquette Tarif").Cells(l + 1, c).Value = "Le Lot de 2 :"
            'Cellule lot de 2,prix -20%
                Sheets("Etiquette Tarif").Cells(l + 1, c + 1).Value = Sheets("Tableau de donnée").Cells(i, 6).Value
                Cells(l + 2, c + 2).Select
                Selection.NumberFormat = "$#,##0.00_);($#,##0.00)"
            'Cellule désignation
                Sheets("Etiquette Tarif").Cells(l + 2, c).Value = Sheets("Tableau de donnée").Cells(i, 2).Value

Il te suffit donc de rajouter une ligne de code en indiquant les bonnes coordonnées pour récupérer la référence et lui dire de la placer en dessous de la désignation.

La désignation est 2 ligne en dessous du prix soit l+2

La référence qui sera 3 lignes en dessous sera donc à l + ...

Ensuite à la fin de chaque étiquettes je place ce code pour lui dire de recommencer mais 3 lignes plus bas (première étiquette commence en A1, deuxième en A4, ...)

Si tu veux donc rajouter une ligne, il faut que tu demandes à Excel d'augmenter cet espace pour qu'il ne copie pas le prix par dessus la référence ajoutée.

l = l + 3

Je vais aller manger, mais je pense que tu peux essayer de le faire avec ses indices (fais une sauvegarde avec un autre nom si tu veux éviter de tout perdre ou de tout planter en faisant une fausse manip, sachant que tu peux toujours télécharger depuis le site le fichier, mais si un jour tu fais ça sur un de tes fichiers, sa peut éviter des heures de relecture pour trouver la cause du plantage d'un code qui marchait avant ^^)

J'ai ajouté la ligne des références et j'ai adapté les nombre d'étiquettes pour une feuille A4 (il y a moyen de changer la taille des étiquettes pour rajouter une ligne et une colonne -> économie de papier ? (dépend du nombre) ou sinon en réduisant la marge d'impression (sécurité pour que l'imprimante ne dépasse pas de la feuille) mais ne sachant pas quel type d'imprimante, le format de votre papier et les directives (taille minimum de l'étiquette, etc) sous les yeux, je reste sur ce modèle)

14etiquettev4.xlsm (40.15 Ko)

C'est extra, merci beaucoup, j'aurais mis un bon bout de temps a faire un codage comme celui ci vu mes petites connaissances.

pour la taille des étiquettes, c'est surtout une question de hauteur, il faut au minimum 3.2 cm de haut et 3.5cm maximum. du coup après avoir imprimé une page ca passe nickel, il fallait pas plus haut !!! mais comment faire si je veux que l'étiquette soit un peu plus longue (sans forcément rendre le texte de designation entièrement visible...) mais pour que les étiquettes fassent 5.5cm de long?

La machine que j'utilise pour imprimer les étiquettes peut aller jusqu'a des marge "étroite" dans le module de mise en page.

autre chose, pour certain document j'aurais au moins une dizaine de page d'étiquette a sortir, est-il possible de généralisé le code pour qu'il le fasse peut importe la longueur de la liste, et le nombre de feuille a imprimer?

merci encore

Bonjour,

je viens de regarder sur internet et j'ai trouver ce site pour convertir les cm en pixels (et inversement) : http://www.comment-calculer.net/conversion-cm-pixel.php

Pour la hauteur de l'étiquette on a :

3,2cm = 120,945 pixels

3,5cm = 132,2836 pixels

En gros la hauteur doit être comprise entre 121 et 132 pixels

à l'heure actuelle on a :

le prix = 80 Pixels

Lot de 2 = 20 pixels

désignation = 20 pixels

réference = 20 pixels

soit 140 pixel = 3.7042 cm

Le code qui fait varier la hauteur de l'étiquette (de la ligne prix, vu que c'est la seule que je fais varier; 60->80Pixels)

Sheets("Etiquette Tarif").Rows(l).RowHeight = 60

Pour la largeur (j'ai repris taille des colonnes initiales soit 80 Pixels)

On a 2 colonnes par étiquettes : 160 pixels = 4.2333cm

Si on veut 5,5 cm il nous faut 207.8741 pixels

Code pour faire varier la taille d'une colonne

    Columns("A:A").ColumnWidth = 11.43 

La largeur correspondanste pour avoir les 5,5 cm ou 207 Pixels, il faut 104 Pixels pour la colonne A et 103 pour la colonne B

Cela donnerait ceci

    Columns("A:A").ColumnWidth = 14.14
Columns("B:B").ColumnWidth = 14.00

(il ne reste plus qu'à remplacer les A par la variable c et les B par la variable c+1 et à l'incorporer au code éxistant)

Générer le code pour plusieurs dizaine, je vais regarder pour voir si je peux l'automatiser (normalement oui) sinon j'agrandirait manuellement le décallage pour qu'il fasse une vingtaine de pages (on verra après modification des étiquettes voir comment gérer l'espace

J'ai "allégé le code" (c'est un bien grand mot, en tout cas j'ai remplacé plusieurs procédures qui ralentissaient le programme) Je l'ai fait jusqu'à 20 pages de 20 étiquettes (soit 400 étiquettes au max avec le code actuel). Vu la quantité de données et la mise en forme que cela implique, le code est lent et on a l'impression qu'Excel plante mais après 10 essais consécutif, cela fonctionne normalement sur ce PC.

Les valeurs en bleu sont une élongation de ta liste pour avoir un grand nombre de valeurs

28etiquettev6.xlsm (93.20 Ko)

merci beaucoup, c'est juste parfait !!!

mille merci, cela va m'avancer considérablement, merci encore

Rechercher des sujets similaires à "recuperation donnees mise page"