Traitement liste- recopie multiple - export fichier - publipostage

hctad1

XLDnaute Junior
Bonjour à tous,
voici la présentation d'un de mes besoins de production.
J’ai un fichier excel que nous utilisons le matin pour éditer la liste des produits à sortir du stock pour préparer les commandes du jours.

J’ai 2 feuilles nommées respectivement KO et OK.
OK représente la liste des produits à prendre pour les commandes complètes (les plus urgentes) .

KO est la liste des produits des commandes qui partent pas (y compris les produits dont le stock est négatif). Ces commandes sont préparées plus tard dans la journée.

Le fichier xls est en fait un outil qui nous permet de générer les requetes mysql en partant de la dernière commande imprimée, nous faisons ensuite un copie coller pour travailler dans excel.

NOUVELLE FONCTION : je souhaiterais aussi imprimer une liste d’étiquette pour coller sur mes produits en fonction de la liste de picking et du stock.

Prenons le cas de la feuille OK
REF------------PRODUIT----------------------------------A PRENDRE-------STOCK
0722-30-------CABLE DE COMPTEUR 1959-1976 VISSE ( 76cm)--1---------0
GTG101MS ---JOINT DE CLOCHE DE CALORSTAT (ADAPTABLE)---3--------28
GWW1080 ---GICLEUR DE LAVE-GLACE NOIR (SIMPLE JET)------3--------(-1)​


Je voudrais générer un tableau de la forme suivante :
On repete chaque produit autant de fois qu'il nous est demandé
0722-30 CABLE DE COMPTEUR 1959-1976 VISSE ( 76cm)
GTG101MS JOINT DE CLOCHE DE CALORSTAT (ADAPTABLE)
GTG101MS JOINT DE CLOCHE DE CALORSTAT (ADAPTABLE)
GTG101MS JOINT DE CLOCHE DE CALORSTAT (ADAPTABLE)
GWW1080 GICLEUR DE LAVE-GLACE NOIR (SIMPLE JET)
GWW1080 GICLEUR DE LAVE-GLACE NOIR (SIMPLE JET)​

On remarquera que je n’ai fait ressortir le gicleur de lave que 2 fois pourtant on m’en demandait 3… oui mais...je n’en ai que 2 en stock.

Donc cela veut dire qu’avant de répéter la ligne on regarde -->
si stock<0 alors je repete (‘a prendre’+’stock’) fois la ligne
sinon
je répète (‘a prendre’) fois la ligne

Je souhaite ensuite sauvegarder la feuille ainsi crée dans un fichier xls nommé etiquette_produits_OK.xls
Enfin avec word, je fais un joli publipostage et je peux imprimer mes étiquettes.:)



Pour ce qui concerne la liste KO, c’est la même chose et on enregistre dans un fichier nommé etiquette_KO.xls
Bien sur si je doit prendre 5 GICLEURS et que mon stock est à -6, j’ignore la ligne et je passe a la suivante car je n'ai aucun produit sur lequel coller mon étiquette.

Je mets en pièce jointe l’essai que j’ai commis. Vous verrez que j'ai essayé de passer par plusieurs feuilles pour séparer les étapes mais mon système ne fonctionne vraiment pas.

Je commence a me débrouiller un petit peu en php mais VBA est vraiment au dessus de mes moyens actuels.
J’ai passé la journée à essayer et je n’arrive à rien.

Cela semble être relativement simple lorsque c’est énoncé mais traduire tout ça en code m’est vraiment impossible.

Si l’un d’entre vous à le courage d’y jeter un œil je lui en serais vraiment gré.

Bien cordialement,
Nicolas
 

Pièces jointes

  • PROTOTYPE Impression BL NEW.xls
    44 KB · Affichages: 108
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Traitement liste- recopie multiple - export fichier - publipostage

Bonjour Hctda1 :),
Je ne suis pas sûr que passer par des tableaux soit la bonne solution, mais pourquoi pas...
En ce qui me concerne, je suis passé par des compteurs. Ça donne ça
Code:
Dim Quantité As Integer
Dim I As Integer, J As Integer, K As Integer
I = 3
While Sheets("KO").Cells(I, 1) <> ""
Sheets("ETQ_KO").Cells(I - 1, 1) = Sheets("KO").Cells(I, 1)
Sheets("ETQ_KO").Cells(I - 1, 2) = Sheets("KO").Cells(I, 2)
If Sheets("KO").Cells(I, 4) >= Sheets("KO").Cells(I, 5) Then
    Sheets("ETQ_KO").Cells(I - 1, 3) = Sheets("KO").Cells(I, 3)
Else
    Sheets("ETQ_KO").Cells(I - 1, 3) = Sheets("KO").Cells(I, 4)
End If
I = I + 1
Wend
I = 2
J = 2
While Sheets("ETQ_KO").Cells(I, 1) <> ""
If Sheets("ETQ_KO").Cells(I, 3) = 0 Then GoTo StockNul
For K = 1 To Sheets("ETQ_KO").Cells(I, 3)
Sheets("ETQ_KO_IMP").Cells(J, 1) = Sheets("ETQ_KO").Cells(I, 1)
Sheets("ETQ_KO_IMP").Cells(J, 2) = Sheets("ETQ_KO").Cells(I, 2)
J = J + 1
Next K
StockNul:
I = I + 1
Wend
Dis moi si ça te convient.
Bonne journée :cool:
 

Catrice

XLDnaute Barbatruc
Re : Traitement liste- recopie multiple - export fichier - publipostage

Bonjour,

Je n'ai pas tres bien compris l'interet de la feuille ETQ_KO.
Je propose le code suivant qui créé les etiquettes directement dans la feuille ETIQ (pour l'exemple) :

Sub Test()
Sheets("ETIQ").Range("A1").CurrentRegion.Offset(1, 0).Clear
For Each X In Sheets(1).Range("A3:" & Sheets(1).Range("A65536").End(xlUp).Address)
For i = 1 To IIf(X.Offset(0, 3) >= X.Offset(0, 2), X.Offset(0, 2), X.Offset(0, 3))
X.Resize(1, 2).Copy (Sheets("ETIQ").Range("A65536").End(xlUp).Offset(1, 0))
Next
Next
Sheets("ETIQ").Select
End Sub

Voir fichier joint.
 

Pièces jointes

  • PROTOTYPE1.zip
    14.2 KB · Affichages: 67

JNP

XLDnaute Barbatruc
Re : Traitement liste- recopie multiple - export fichier - publipostage

Bonjour Catrice :),
Au niveau de réduction du code, chapeau. Mais il doit y avoir un petit défaut, le résultat ne comporte que 6 étiquettes, alors qu'il devrait en comporter 8. Par contre, n'utilisant pas Offset, je ne vois pas où est le problème.
Bonne journée :cool:
 

Catrice

XLDnaute Barbatruc
Re : Traitement liste- recopie multiple - export fichier - publipostage

Bonjour JNP,

Dans mon exemple, j'ai enlevé la derniere Ref GWW1080 dans la feuille KO.
J'obtiens alors 4 étiquettes :
GWW1080 qte 2, stock 22 => 2
0722-30 qte 2, stock 1 => 1
GTG101MS qte 1, stock 28 => 1
MSA2120 qte 1, stock 0 => 0

Total = 4
Ca m'a l'air conforme...

Dans son exemple hctad1 trouve 5 étiquettes.
Là ça me parait bizarre car pour 0722-30, le stock est de 1 !?
De plus je n'ai pas compris le GWW1080 en double.
Faut-il dédoublonner, ignorer cette ref ? la supprimer ?...
A suivre ...
 
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : Traitement liste- recopie multiple - export fichier - publipostage

Re,

Ci-joint une version qui créé les 2 onglets à la fois.
L'onglet ETQ_KO qui correspond à la liste des produits (avec la Qte souhaitée et la Qte dispo)
L'onglet ETQ_KO_IMP qui correspond aux étiquettes.
 

Pièces jointes

  • PROTOTYPE3.xls
    44 KB · Affichages: 120

JNP

XLDnaute Barbatruc
Re : Traitement liste- recopie multiple - export fichier - publipostage

Re,
Toute mes excuses (à genoux) Catrice, c'est moi qui avait tout faux :eek:...
Mon code corrigé
Code:
Dim Quantité As Integer
Dim I As Integer, J As Integer, K As Integer
I = 3
While Sheets("KO").Cells(I, 1) <> ""
Sheets("ETQ_KO").Cells(I - 1, 1) = Sheets("KO").Cells(I, 1)
Sheets("ETQ_KO").Cells(I - 1, 2) = Sheets("KO").Cells(I, 2)
If Sheets("KO").Cells(I, 4) >= Sheets("KO").Cells(I, 3) Then
    Sheets("ETQ_KO").Cells(I - 1, 3) = Sheets("KO").Cells(I, 3)
Else
    Sheets("ETQ_KO").Cells(I - 1, 3) = Sheets("KO").Cells(I, 3) - (Sheets("KO").Cells(I, 3) - Sheets("KO").Cells(I, 4))
End If
I = I + 1
Wend
I = 2
J = 2
While Sheets("ETQ_KO").Cells(I, 1) <> ""
If Sheets("ETQ_KO").Cells(I, 3) = 0 Then GoTo StockNul
For K = 1 To Sheets("ETQ_KO").Cells(I, 3)
Sheets("ETQ_KO_IMP").Cells(J, 1) = Sheets("ETQ_KO").Cells(I, 1)
Sheets("ETQ_KO_IMP").Cells(J, 2) = Sheets("ETQ_KO").Cells(I, 2)
J = J + 1
Next K
StockNul:
I = I + 1
Wend
donne bien le même résultat, mais en moins court...
Bonne journée :cool:
 

hctad1

XLDnaute Junior
Re : Traitement liste- recopie multiple - export fichier - publipostage

Bonjour à tous,
comment vous remercier? C'est super et ça répond vraiment à mes attentes.

Je vois que vous avez décidé de conserver l'étape intermédiaire qui ne me servait finalement que de test ... vu mes pauvres capacités en vba, j'avais décidé de décomposer.

Pensez vous qu'il soit possible de créer un fichier ETQ_KO.xls sur lequel je vais m'appuyer pour sortir ma liste d'étiquette (ainsi chaque matin on fermera le fichier avec la macro sans le sauvegarder)

Enfin, je me posais une question, croyez vous qu'il soit possible de générer une liste d'exception basée par exemple sur la référence du produit? En effet, à l'usage, nous allons réaliser que certains produits n'ont pas besoin d'avoir une étiquette (par exemple, les autocollants promotionnels qui sont ajoutés en produits gratuits sur les commandes clients.

Bonne journée à vous.
 

Catrice

XLDnaute Barbatruc
Re : Traitement liste- recopie multiple - export fichier - publipostage

Bonjour,

Pour le fichier ETQ_KO.xls, tu veux enregistrer un fichier à part avec les etiquettes ?

Pour l'exeception, il ne devrait pas y avoir de pb.
comment veux tu materialiser ceci ? un champ supplemenataire ? un autre onglet ?
 

hctad1

XLDnaute Junior
Re : Traitement liste- recopie multiple - export fichier - publipostage

Pour ce qui concerne les exceptions, je peux les mettre en dur dans la macro. Je viendrais ensuite ajouter les produits concernés au fur et à mesure que nous les découvrirons.
Il suffit juste qu'au final nous ne les imprimions pas.

Sinon, en effet enregistrement dans un autre fichier me permettra de fermer le fichier de base (avec les macros) sans enregistrer les modifs. Ainsi l'outil restera carré quoi qu'il arrive (lecture seule)
 

Catrice

XLDnaute Barbatruc
Re : Traitement liste- recopie multiple - export fichier - publipostage

Re,

Ci-joint une macro qui génère (dans le meme dossier) un fichier autonome contenant les étiquettes.
Si un fichier existe déjà, il est écrasé.
Dans la macro, il y a une liste d'exclusions.
 

Pièces jointes

  • PROTOTYPE4.xls
    44 KB · Affichages: 133

hctad1

XLDnaute Junior
Re : Traitement liste- recopie multiple - export fichier - publipostage

Bonjour,
J'ai un petit souci : si dans la liste je dois prendre 3 produits et que mon stock est a zero, cela veut dire que ce sont bien les 3 derniers qui ont été vendus donc, je devrais retrouver 3 ligne dans le fichier générés.
De meme si je dois en prendre 3 et que le stock est a -2 alors je ne peux en prendre qu'un seul dans le stock--> une etiquette.

J'ai beau lire le code dans tous les sens je ne vois pas bien comment cela est géré. Je ne peux que constater que dès que le stock est à zéro, la ligne est ignorée.
Any help welcomed...

Merci d'avance,
Nicolas
 

Catrice

XLDnaute Barbatruc
Re : Traitement liste- recopie multiple - export fichier - publipostage

Bonjour,

de mémoire, la macro qui avait été proposée créait des étiquettes en fonction de la colonne stock.
Si la demande est sup au stock on imprime le nob d'etiquettes egale à la difference, sinon on imprime le meme nb d'etiquettes que la demande.
Mais tu avais parlé d'un fichier OK et KO.
Ne faut il pas que OK conditionne ce qui se passe dans KO ?

Autrement dit, dans l'exemple que tu donnes, si on a 0 en stock et 3 à prendre et qu'on imprime 3 étiquettes. La macro va etre simple : on imprime le nb d'etiquettes de la colonne C ...

Ou encore autrement dit, comment la macro devine que ce son les "bien les 3 derniers qui ont été vendus" ?...

Il faudrait que tu redonnes un exemple avec les produits qui doivent ou non etre imprimés et les exceptions.

C'est cette ligne qui choisit les fiches à imprimer :

For i = 1 To IIf(X.Offset(0, 3) >= X.Offset(0, 2), X.Offset(0, 2), X.Offset(0, 3))

Elle boucle de 1 à soit "A prendre" ou "Stock".
Si le "stock" > à "A prendre" boucle de 1 à "A prendre"
Si le "stock" < à "A prendre" boucle de 1 à "Stock"
Parfois elle peut boucler de 1 à 0 => elle ne boucle pas.
 
Dernière édition:

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 867
dernier inscrit
XFPRO