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

Word Discussion :

Imprimer un nombre d'étiquettes en fonction d'une colonne Excel "Quantité"


Sujet :

Word

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Imprimer un nombre d'étiquettes en fonction d'une colonne Excel "Quantité"
    Bonjour,

    Je dois imprimer des étiquettes pour une tombola.
    J'ai un fichier lots.xls contenant une colonne "Intitulé" avec le nom du lot et une autre "Quantité" avec ka quantité de chacun des lots.

    J'aurais voulu créer une procédure automatique (publipostage ?) pour créer un document WORD avec autant d'étiquettes que d'intitulés et de quantité de lots. (Si j'ai 3 stylos et 5 casquettes, je voudrais 3 étiquettes "Stylos" et 5 étiquettes "Casquettes").

    Comment m'y prendre ?
    Merci d'avance pour votre aide.

    PS : je ne connais rien au macro, alors merci de bien détailler les explications.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Bonjour,

    Il va falloir mélanger du VBA et du publipostage.

    Le VBA, pour construire une liste exploitable en fonction du nombre d'objets par lot et ensuite passer au publipostage pour automatiser les étiquettes.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Tu pourrais me détailler un peu la marche à suivre. Me donner les différentes étapes à mener et avec quel logiciel, dans quel mode.
    Je ne demande pas forcément un tutoriel qui prendrait bcp de temps à réaliser... mais au moins un chemin à suivre pour réaliser ma tache.

    D'avance merci pour ton aide.

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    On va appliquer la méthode des petits pas.


    Le principe, on va dans un tableau Word affecter un nombre de ligne en rapport à la valeur de la case.
    Si on a ballon => 5, on va générer 5 cellules ou lignes dans le tableau.

    Le tout est de savoir si on connait le nombre de lignes utilisées en Excel. Si ce n'est pas le cas, il faudra les compter.

    On va tout faire au départ de Word.

    Pour la méthode des petits pas.

    Dans un module de Word (Alt + F11 pour ouvrir l'éditeur VBE)
    Double clic sur ThisDocument pour générer une module de document.

    Ensuite : Outils => Références => Ajouter la bibliothèque Microsoft Excel qui correspond à la version d'Excel qui est installée.

    Ajouter le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub TextExcel()
    Dim xlApp As Excel.Application
     
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Workbooks.Add
    xlApp.Visible = True
     
    End Sub
    Ceci devrait être une première étape pour la suite, on ouvre Excel et on crée un nouveau classeur.

    L'étape suivante sera l'ouverture d'un classeur existant.





    Le publipostage est très simple à faire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    OK donc j'ai copié le code, et cliqué sur "Exécuter" : cela m'a lancé Excel (youhou !). C'est déjà ça.

    Maintenant je fait quoi ?
    Je copie mes valeurs dans le fichier Eccel qui s'est ouvert ? Je l'enregistre ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Le but, c'est d'ouvrir ton fichier et d'y récupérer les valeurs.
    Avec ces valeurs, on va faire une boucle pour ajouter un nombre de lignes dans un tableau Word.

    On reprend le premier code et on va le modifier un peu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub TextExcel()
    Dim xlApp As Excel.Application
    Dim xlWB As Excel.WorkBook
     
    Set xlApp = CreateObject("Excel.Application")
    set xlWB = xlApp.Workbooks.Open ("c:\Temp\etiquettes.xls")
     
    xlApp.Visible = True
     
    End Sub
    Essaie pour voir !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    J'ai recopier coller la macro dans un fichier WORD tout neuf.
    Placer le fichier etiquette.xls contenant tous les intitulés et leur quantité dans un dossier C:\Temp\

    Mais quand je clique sur Exécuter, j'ai une erreur de syntaxe sur la ligne contenant le chemin du fichier (que j'ai pourtant vérifié) et une flèche jaune surligné sur la première ligne de la macro (sub...)

    Il y a un hic...

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Dans ton document, tu dois déclarer la bibliothèque Excel.

    Outils => Références => ...
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Bien vu c'était cela !

    L'effet du code est pour le moment d'ouvrir le fichier Excel du dossier C:\Temp\ avec les colonnes "Article" et "Qty".

    Que faire ensuite pour arriver à générer les étiquettes ??

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Maintenant, on va récupérer les données de la feuille Excel.
    L'une pour l'intitulé, et l'autre pour la quantité.
    Il va falloir récupérer la taille de la table en Excel.
    Pour la taille, on trouve une information ici
    On peut déjà l'intégrer dans notre code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Sub TextExcel()
    Dim xlApp As Excel.Application
    Dim xlWB As Excel.WorkBook
    Dim xlSH As Excel.WorkSheet
    dim intLigne As Integer
     
    Set xlApp = CreateObject("Excel.Application")
    set xlWB = xlApp.Workbooks.Open ("c:\Temp\etiquettes.xls")
    set xlSH = xlWB.sheets(1)
    intLigne = xlSH.UsedRange.Rows.Count 'Nombre de lignes utilisées
     
     
    xlApp.Visible = True
     
    End Sub
    Mais ce ne sera pas tout.
    Il va falloir ajouter un document avec une table et pouvoir l'utiliser dans notre code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim oDoc as Document
    Dim oTbl as Table
     
    Set oDoc = Documents.Add
    Set oTbl = oDoc.Tables.Add( Range:=oDoc.Range , NumRows:= 2, NumColumns:= 1)
    De cette manière, on pourra facilment passer du document au fichier Excel.

    On va faire deux boucles pour parcourir les lignes du fichier Excel et ajouter des lignes dans la tables Word.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub TextExcel()
    Dim xlApp As Excel.Application
    Dim xlWB As Excel.Workbook
    Dim xlSH As Excel.Worksheet
    Dim intLigne As Integer, i As Integer, j As Integer, h As Integer
    Dim oDoc As Document
    Dim oTbl As Table
     
     
    Set oDoc = Documents.Add    'création d'un nouveau document
    Set oTbl = oDoc.Tables.Add(oDoc.Range, 2, 1)   'création d'une table
     
     
     
    Set xlApp = CreateObject("Excel.Application")
    Set xlWB = xlApp.Workbooks.Open("c:\temp\etiquette.xls")
    Set xlSH = xlWB.Sheets(1)   'si c'est la première feuille
    intLigne = xlSH.UsedRange.Rows.Count 'la dernière ligne
    i = j = h = 0
     
    'Création de deux boucles pour l'extraction et le traitement des données.
    For i = 2 To intLigne
        j = xlSH.Cells(i, 2)
                'Boucle pour la création des lignes de la table.
                For h = 1 To j
                    'Sélection de la dernière ligne
                    oTbl.Rows.Last.Range.Select
                    'Copie des données dans la table
                    Selection.Range.Text = xlSH.Cells(i, 1)
                    'Ajout d'une ligne
                    oTbl.Rows.Add
                Next h
     
    Next i
     
    xlApp.Visible = True
     
    End Sub
    Essaie, si tu as des questions, des doutes !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    ca devient intéressant

    J'ai 60 lignes dans le tableau étiquette.

    Ma question : où dois-je entrer cette valeurs dans le code ?
    (malgrè les précieuses annotations, je n'ai pas trouvé...)

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Je crois avoir trouvé : j'ai fait ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set oDoc = Documents.Add    'création d'un nouveau document
    Set oTbl = oDoc.Tables.Add(oDoc.Range, 60, 1)   'création d'une table
    Alors la macro me génère un tableau avec en ligne les intulés des lots et autant del ignes qu'il y a de lot : c'est déjà bien ! Merci !

    Bon il n'en reste pas moins que je ne vois pas comment faire pour personaliser ce tableau...
    J'aurais aimé (je suis pénible ) concevoir un bulletin avec un logo dans lequel j'insère un champ de publipostage et que quand je lance l'impression en publipostage, Word s'occupe de compléter ce champ avec les lignes du tableau qu'on a conçu par exemple.

    On peut y arriver ?

  13. #13
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pour les étiquettes, il faut simplement lancer un publipostage classique.

    Outils => Lettre et enveloppes et suivre le processus. C'est assez rapide.

    Tu dois spécifier que ce sera le fichier contenant la table qui vient d'être crée qui va servir de source de données.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Ok c'est super !!

    Merci beaucoup !!

    C'est tout à fait ce que je voulais.

    Bonne fin de journée !

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Un petit alors.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

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

Discussions similaires

  1. [XL-2010] Nombre de décimales en fonction d'une autre cellule
    Par Robert Bélanger dans le forum Excel
    Réponses: 4
    Dernier message: 06/04/2014, 16h03
  2. etat couleur étiquette en fonction d'une lettre
    Par justine91 dans le forum VBA Access
    Réponses: 14
    Dernier message: 28/02/2014, 13h34
  3. Compter le nombre de lignes en fonction d'une variable.
    Par sumakali31 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 11/04/2012, 18h13
  4. Calcul du nombre de lignes en fonction d'une condition
    Par didier roustand dans le forum Débutez
    Réponses: 7
    Dernier message: 27/01/2010, 18h32
  5. Réponses: 7
    Dernier message: 24/11/2009, 12h28

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