Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word
Word Forum d'entraide sur le traitement de texte Microsoft Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/04/2008, 18h29   #1
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
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.
Zeilloc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2008, 18h37   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 360
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 360
Points : 29 280
Points : 29 280
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2008, 18h47   #3
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
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.
Zeilloc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2008, 21h28   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 360
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 360
Points : 29 280
Points : 29 280
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 :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 08h56   #5
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
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 ?
Zeilloc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 09h16   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 360
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 360
Points : 29 280
Points : 29 280
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 :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 10h02   #7
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
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...
Zeilloc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 11h24   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 360
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 360
Points : 29 280
Points : 29 280
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 12h04   #9
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
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 ??
Zeilloc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 12h43   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 360
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 360
Points : 29 280
Points : 29 280
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 :
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 :
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 :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 12h56   #11
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
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é...)
Zeilloc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 13h02   #12
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
Je crois avoir trouvé : j'ai fait ça

Code :
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 ?
Zeilloc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 13h16   #13
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 360
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 360
Points : 29 280
Points : 29 280
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 13h53   #14
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
Ok c'est super !!

Merci beaucoup !!

C'est tout à fait ce que je voulais.

Bonne fin de journée !
Zeilloc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 14h31   #15
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 360
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 360
Points : 29 280
Points : 29 280
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h21.


 
 
 
 
Partenaires

Hébergement Web