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 :

Générateur d'étiquette sous condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable Supply Chain
    Inscrit en
    Juillet 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Supply Chain

    Informations forums :
    Inscription : Juillet 2018
    Messages : 6
    Par défaut Générateur d'étiquette sous condition
    Bonjour à tous,

    J'ai longtemps cherché mais je n'ai pas vraiment trouvé ce que je voulais. D'habitude je trouve des petits bouts de code pour commencer, mais là, rien.

    Le fichier contient des lignes de commandes. Il y a donc plein de commandes et un nombre aléatoire de lignes pour une même commande. J'aimerai générer autant d'étiquettes que de lignes, en choisissant un numéro de commande. Les étiquettes contiendront différents champs présents dans les colonnes.

    J'imagine qu'il y a plusieurs solutions, dont utilisation d'un UserForm ou la création d'un tableau qu'on passerait en publipostage sous Word. Mais là encore, je n'ai aucune idée pour commencer.

    Ci-joint le fichier.

    Merci d'avance pour vos retours
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    J'imagine qu'il y a plusieurs solutions, dont utilisation d'un UserForm ou la création d'un tableau qu'on passerait en publipostage sous Word. Mais là encore, je n'ai aucune idée pour commencer.
    - Je ne vois pas trop ce qu'apporterait l'utilisation d'un userform
    - utiliser Word en publipostage, oui
    Mais il est toujours possible de composer tes étiquettes sur une feuille à imprimer (par lecture des données sur la feuille où elles figurent). Si ma mémoire est bonne, une solution de ce type a été donnée dans une discussion sur ce forum, il y a plus d'un an.
    NB : je n'ai pas ouvert ton classeur (voir ma signature).

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Bes38200 Voir le message
    J'aimerai générer autant d'étiquettes que de lignes, en choisissant un numéro de commande.
    Pour limiter les lignes à une commande donnée, tu peux placer un filtre sur tes données.
    https://msdn.microsoft.com/fr-fr/vba...r-object-excel

    dont utilisation d'un UserForm
    Comme Unparia ( ), je ne vois pas ce qu'apporterais un UserForm.
    A la limite, tu pourrais utiliser une simple InputBox pour permettre à l'utilisateur de saisir la référence de l'affaire traitée.
    Personnellement, je ferais beaucoup plus simple : tu demandes à l'utilisateur de sélectionner la cellule de tes données contenant la référence de l'affaire avant de lancer la macro. Comme ça, tu peux récupérer cette référence avec un simple Selection.Value en début de code. Pas de risque de faute de frappe ou d'orthographe, pas besoin de vérifier que l'affaire existe dans tes données. C'est simple et sûr.

    NB : moi non plus je n'ai pas ouvert ton fichier. Voir ce lien : https://www.developpez.net/forums/d8...s-discussions/

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable Supply Chain
    Inscrit en
    Juillet 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Supply Chain

    Informations forums :
    Inscription : Juillet 2018
    Messages : 6
    Par défaut
    Bonjour,

    Merci pour vos retours rapides. J'ai bien compris que mon fichier n'était pas le bienvenu sur un premier message.

    Citation Envoyé par unparia Voir le message
    Mais il est toujours possible de composer tes étiquettes sur une feuille à imprimer (par lecture des données sur la feuille où elles figurent). Si ma mémoire est bonne, une solution de ce type a été donnée dans une discussion sur ce forum, il y a plus d'un an.

    Oui c'est exactement ce que je veux faire. Par contre j'ai longtemps cherché, je n'ai pas trouvé cette discussion.

    Citation Envoyé par Menhir Voir le message
    Pour limiter les lignes à une commande donnée, tu peux placer un filtre sur tes données.
    Donc l'idée serait de filtrer puis de récupérer les données? Disons qu'aujourd'hui je sais à peu près comment, par le choix d'un numéro de commande, récupérer toutes les lignes. Par contre je ne sais pas comment faire correspondre mes colonnes du fichiers de données dans les étiquettes à créer. Et surtout de créer la boucle permettant de générer autant d'étiquette qu'il y a de lignes.


    Citation Envoyé par Menhir Voir le message
    A la limite, tu pourrais utiliser une simple InputBox pour permettre à l'utilisateur de saisir la référence de l'affaire traitée.
    Personnellement, je ferais beaucoup plus simple : tu demandes à l'utilisateur de sélectionner la cellule de tes données contenant la référence de l'affaire avant de lancer la macro. Comme ça, tu peux récupérer cette référence avec un simple Selection.Value en début de code. Pas de risque de faute de frappe ou d'orthographe, pas besoin de vérifier que l'affaire existe dans tes données. C'est simple et sûr.
    Cette solution n'est pas optimale dans le sens où le fichier de base fera entre 15000 et 20000 lignes. L'idée est de faire gagner du temps à l'utilisateur, je ne veux pas qu'il cherche puis sélectionne. Donc l'Inputbox me va bien.

    Merci,

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Bes38200 Voir le message
    Cette solution n'est pas optimale dans le sens où le fichier de base fera entre 15000 et 20000 lignes. L'idée est de faire gagner du temps à l'utilisateur, je ne veux pas qu'il cherche puis sélectionne.
    Ce qui renforce l'intérêt d'un filtre.

    Une solution qui serait encore plus souple serait de mettre en place un filtre et de demander à l'utilisateur de le régler pour ne laisser visibles que les lignes qu'il souhaite sortir en étiquettes.
    Ca permettrait, par exemple, de sortir simultanément les étiquettes de deux ou trois affaires ou bien de sélectionner, à l'intérieur d'une affaire, des lignes à éviter.

    Au niveau code, ce serait d'autant plus simple pour toi : il suffirait de faire une boucle sur les cellules visibles, par exemple sur la collection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each MaCellule In Range("A2", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeVisible)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Responsable Supply Chain
    Inscrit en
    Juillet 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Supply Chain

    Informations forums :
    Inscription : Juillet 2018
    Messages : 6
    Par défaut
    J'ai bien compris le début de ta réponse et je suis en train de créer le filtre.
    Par contre je ne comprends pas à quoi sert le morceau de code. Peux-tu m'éclairer stp?

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Bes38200 Voir le message
    Par contre je ne comprends pas à quoi sert le morceau de code. Peux-tu m'éclairer stp?
    C'est une boucle qui permettrait de scruter chaque cellule visible sur la colonne A (la désignation de la colonne étant facilement modifiable).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. déplacer une étiquette dans un état sous conditions
    Par françois35 dans le forum IHM
    Réponses: 6
    Dernier message: 28/08/2008, 14h36
  2. Afficher un champ sous condition
    Par Cantalou dans le forum Access
    Réponses: 24
    Dernier message: 01/02/2006, 14h25
  3. Réponses: 8
    Dernier message: 14/01/2006, 15h17
  4. Pb Ouverture de formulaire sous condition.
    Par Phl98 dans le forum Access
    Réponses: 8
    Dernier message: 03/11/2005, 22h28
  5. Create function sous condition
    Par nbl dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/05/2005, 12h00

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