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 :

VBA : impression automatique d'étiquette prix supermarché


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2016
    Messages : 10
    Par défaut VBA : impression automatique d'étiquette prix supermarché
    Bonjour à tous,

    Je ne suis pas certain de poster au bon endroit, si c'est le cas, veuillez m'en excuser.

    Je souhaite créer un fichier Excel d'impression des étiquettes prix pour un supermarché. N'ayant pas de base en VBA, j'ai tenté d'effectuer cela via l'enregistrement de macro mais j'arrive à une limite que je ne peux pas surmonter.

    Le contexte : Il s'agit d'un format d'étiquette en magasin classique, avec le nom du produit, son origine et son prix. La dimension ne doit pas etre modifiée car elle sera imprimée ensuite. Le contenu de l'étiquette par contre est modifiable. L'employé peut donc changer le nom du produit, son prix etc en fonction de l'étiquette qu'il doit imprimer.

    J'ai donc créé le format d'étiquette souhaité, et un bouton qui copie cette étiquette, puis colle cette même étiquette sur une autre feuille, de sorte qu'après la rédaction d'une étiquette sur le fichier Excel, l'employé clique sur le bouton et l'étiquette est envoyée sur une seconde page pour impression lorsqu'il a terminé.
    Le but étant de rédiger une étiquette, presser le bouton pour "l'enregistrer" (la coller en realité) sur une seconde feuille, rédiger une seconde étiquette, presser le bouton etc.
    De sorte que lorsque l'employé a terminé de rédiger toutes ses étiquettes, il imprime simplement la feuille avec toutes les étiquettes ainsi enregistrées (collées).

    Le problème c'est que l'enregistreur de macro ne me permet pas (je crois) d'indiquer à Excel que la cellulle est déjà remplie (par l'étiquette prcédente) et qu'il faut donc qu'il colle l'étiquette 2 lignes en dessous de l'étiquette collée précédemment. Il s'agit d'une fonction décallage avec VBA il me semble.

    Il faudrait en realité que lorsque l'employé clique sur le bouton, cela colle l'étiquette sur la seconde feuille, et insère également 2 lignes en dessous de cette même étiquette afin que l'étiquette suivante ne soit pas collée par dessus la première.

    En espérant que l'explication soit claire, merci d'avance pour vos réponses.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut
    Hello,

    Les supermarchés ont déjà un logiciel interne qui gère tout plein de truc, dont l'étiquetage !!

    En général, ces logiciels utilisent des codes de format (ex: code 43 permet d'imprimer 24 étiquettes sur une feuille A4)
    Tu n'a pas a créer ce genre d'application, elles existent déjà et sont développées en interne.

    Près de l'imprimante tu trouvera certainement un placard avec plein de feuille pré-imprimée avec différents format, et ça tu ne peux pas le changer. Car les étiquettes doivent respecter les normes imposées par l'enseigne.

    Désolé de ne pas t'aider dans ta recherche de VBA, mais tu ne peux pas créer ton propre système d'impression d'étiquettes.

    Slooby

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2016
    Messages : 10
    Par défaut
    Bonjour Slooby et merci pour ta réponse.

    Je suis conscient que les supermarchés ont un système propre et celui-ci est bien développé mais il ne peut pas gérer mon problème.

    Je m'explique, je suis dans un pays ou le système de caisse est peu avancé, ce qui fait que certains articles sont gérés par le système, mais pas la totalité des articles.

    Ce qui fait que les fruits et légumes sont étiquetés à la main par l'employé, qui créé les etiquettes via un template Excel, qui les imprime puis les découpe.
    Je sais que cela peut paraitre archaique, mais il s'agit de la seule solution à court terme, c'est pour cela que ma question se porte sur le VBA afin de simplifier ce process.

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par CorentinB49 Voir le message
    j'ai tenté d'effectuer cela via l'enregistrement de macro mais j'arrive à une limite que je ne peux pas surmonter.
    Post ton code (avec la balise code #) et on verra ce qu'on peut faire.

    Le problème c'est que l'enregistreur de macro ne me permet pas (je crois) d'indiquer à Excel que la cellulle est déjà remplie (par l'étiquette prcédente) et qu'il faut donc qu'il colle l'étiquette 2 lignes en dessous de l'étiquette collée précédemment.
    L'enregistreur de macro ne peux pas le faire mais une petite retouche du code devrait suffir.

  5. #5
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2016
    Messages : 10
    Par défaut
    Bonjour halaster08 et merci de ta réponse,

    Mon code est en fait juste un copy past pour l'instant.

    Je ne sais pas comment fonctionne la balise désolé, voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Eticheta()
    '
    ' Eticheta Macro
    '
     
    '
        Range("D4:G10").Select
        Selection.Copy
        Sheets("Printing F & V").Select
        ActiveSheet.Paste
    End Sub
    Merci

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  7. #7
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2016
    Messages : 10
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Eticheta()
    '
    ' Eticheta Macro
    '
     
    '
        Range("D4:G10").Select
        Selection.Copy
        Sheets("Printing F & V").Select
        ActiveSheet.Paste
    End Sub

  8. #8
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par CorentinB49 Voir le message
    Je ne sais pas comment fonctionne la balise désolé
    C'est le bouton avec ce symbole #


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Sub Eticheta()
    '
    ' Eticheta Macro
    '
     
    '
        Range("D4:G10").Select
        Selection.Copy
        Sheets("Printing F & V").Select
        ActiveSheet.Paste
    End Sub
    Ok ça c'est pour le premier. Comme tu n'indique pas de plage pour le coller je suppose que c'est en A1
    On peut déjà virer les select inutiles comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Sub Eticheta()
    Range("D4:G10").Copy Sheets("Printing F & V").range("A1")
    End Sub
    Ensuite on peut demander a VBA de chercher la dernière ligne non vide via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Printing F & V").range("A" & rows.count).end(xlup).row
    Et donc remplacer le 1 de A1 par cette formule + un décalage pour séparer tes étiquettes ce qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Sub Eticheta()
    Range("D4:G10").Copy Sheets("Printing F & V").range("A" & Sheets("Printing F & V").range("A" & rows.count).end(xlup).row + 2)
    End Sub

  9. #9
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2016
    Messages : 10
    Par défaut
    Au vu de tes explications je pense que c'est bien ce que je recherche à faire, en revanche lorsque je lance le code, cela ne fonctionne pas.

    Les cellulles sur lesquelles je souhaite coller sont fusionnées, j'ai une boite de dialogue qui m'indique que je ne peux pas coller à cause de cela.

    Je suis pourtant obligé de conserver le format comme il est. Y a t-il un moyen de coller malgré les cellulles fusionnées ?

    Merci

  10. #10
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    malgré les cellulles fusionnées
    Noooooooooooooooooooooon pas les fusions, c'est le mal !
    Les fusions sont particulièrement horribles a gerer en VBA, je ne saurais pas t'aider plus sur ce coup là.
    Peut être faudrait-il essayer une image de la plage.

Discussions similaires

  1. [VBA-E]Impression automatique de plusieurs PDF
    Par guntag2 dans le forum Excel
    Réponses: 3
    Dernier message: 09/05/2007, 23h07
  2. Réponses: 5
    Dernier message: 21/01/2007, 19h31
  3. [VBA]Macro d'impression automatique
    Par olivier45fr dans le forum SDK
    Réponses: 5
    Dernier message: 27/11/2006, 11h04
  4. [CR] débuter l'impression sur une étiquette X
    Par theflamme dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 11/01/2005, 08h47
  5. [VBA]répondre automatiquement à un msgbox
    Par gromite dans le forum Général VBA
    Réponses: 11
    Dernier message: 13/01/2004, 17h37

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