Macro - Remplissage et Impression Auto

Bonjour

Comme je n'ai plus de retour -->

Cordialement

Désolé Dan,

Je pensais que tu bossais sur la seconde partie de mon dernier message à savoir faire afficher en J3 le numéro de palette sur le nombre total de palettes, tu penses que tu pourrais jeter un œil, c'est vraiment le dernier élément qui me manque dans mon fichier

Je pense que je pourrai le faire manuellement mais si une macro peut le faire, alors ca réduirai les erreurs

Sinon, j'ai bien compris pour la colonne E qu'il fallait que j'adapte le code

Merci

Je pensais que tu bossais sur la seconde partie de mon dernier message à savoir faire afficher en J3 le numéro de palette sur le nombre total de palettes

Désolé mais j'attendais le retour de mon dernier message notamment au sujet de la colonne E et de J3. Il faut quoi au final ?

Ah je m'excuse dans ce cas, je pensais que tu me donnais une information et que je pouvais le faire sans trop t'embêter

Oui, alors si tu veux bien, tu peux supprimer la colonne E et passer au dernier point, ca serait parfait

Si je peux faire quoi que ce soit pour aider ou faciliter, je suis partant

Ok mais alors en J3 dans le fichier il faut y mettre quoi comme info. La valeur du code ? avec un indice

Par exemple dans le fichier on devra avoir quoi ?

En fait J3 doit calculer le nombre total de feuilles générés et puis les numéroter

Si la macro BON_LIVRASION a généré 5 feuilles (car il y a 5 palettes à envoyer) alors J3 affichera successivement 1/5 2/5 ... 5/5 (ce sera l'ordre des lignes)

----

En écrivant ces lignes, une idée m'est venue. Peut-être que pour simplifier le travail et la macro, on pourrait imaginer une nouvelle colonne dans laquelle se trouvera l'info que je veux et J3 ira récupérer cette valeur comme pour les autres infos. Je m'explique

en colonne G on peut avoir comme titre # Palettes / Nbr Total de palettes

et en G5 1/3, en G6 2/3 et en G7 3/3

Une question qui va en découler, existe-il une formule pour automatiser cette colonne, c'est-a-dire pour que que Excel puisse m'afficher lui même le 1/3, 2/3 et 3/3 ou bien je rêve en couleur ?

Ben s'il s'agit de mettre 1/5, 2/5 c'est très facile à faire dans le code

Puis la colonne G ? non puisque l'on supprime la colonne E

Pour la formule cela pourrait se faire oui mais si le code le fait bien ... Dis moi quoi faire car le code est prêt

Puis la colonne G ? non puisque l'on supprime la colonne E

Dac, c'était pour l'exemple

Ben s'il s'agit de mettre 1/5, 2/5 c'est très facile à faire dans le code

Dac, va pour le code, mais rappelons nous que cette numérotation doit être fonction du numéro du BL, c'est-a-dire

si le 15/12 (matin) j'envoie deux palettes j'aurai 1/2 et 2/2

et qu'après toujours le 15/12 (aprem) j'envoie encore trois palettes, j'aurai 1/3 2/3 et 3/3

Est-on sur la même longueur d'onde ?

Quand je pense comment c'est plus simple de communiquer par téléphone

Est-on sur la même longueur d'onde ?

Dès qu'il y a un X le code ne génère plus de bon sur ces lignes. Donc si tu relances il repart à 1.

Le code :

Sub Bon_livraison()
Dim i As Integer
Dim cel As Range
Dim Nbl As Byte

For i = Sheets.Count To 1 Step -1
    If Sheets(i).Name <> "Stock_In" And Sheets(i).Name <> "BL" Then
        Application.DisplayAlerts = False
        Sheets(i).Delete
    End If
Next i
Application.DisplayAlerts = True

Call Trier

Nbl = Sheets("Stock_In").ListObjects("StockIn").DataBodyRange.Rows.Count
i = 1

For Each cel In Sheets("Stock_In").ListObjects("StockIn").ListColumns(2).DataBodyRange
    If UCase(cel.Offset(0, 3)) <> "X" Then
        Sheets("BL").Copy after:=Sheets(Sheets.Count)
        With ActiveSheet
            .Name = "BL" & Sheets.Count - 2
            .Range("J1") = cel.Offset(0, -1) 'Date
            .Range("J2") = cel.Value 'BL#
            .Range("J3") = i & " de " & Nbl: i = i + 1 'palette
            .Range("A6") = cel.Offset(0, 1) 'Code
            .Range("A8") = cel.Offset(0, 2) 'Description
        End With
        cel.Offset(0, 3) = "X" 'bon emis
    End If

Next cel

End Sub

Attention à supprimer la colonne E et ne pas supprimer Option Base 1 dans ton fichier

Quand je pense comment c'est plus simple de communiquer par téléphone

Des fois oui mais faut aussi voir où on habite...

Attention à supprimer la colonne E et ne pas supprimer Option Base 1 dans ton fichier

J'ai supprimé la colonne E, en revanche, je n'ai pas compris ce que veut dire "Option Base 1" mais en tout cas ça fonctionne

Léger hic, en J3 j'ai 1 sur le nombre total de lignes même si le bon a été émis déjà. donc j'ai actuellement 5 lignes, j'en ai rajouté une pour voir ce que ça donne, la feuille BL m'affiche 1 de 6 - alors qu'il y a qu'une palette

une idée ?

Léger hic, en J3 j'ai 1 sur le nombre total de lignes....

remplace dans le code la ligne

Nbl = Sheets("Stock_In").ListObjects("StockIn").DataBodyRange.Rows.Count

par ceci

Nbl = Sheets("Stock_In").ListObjects("StockIn").ListColumns(5).DataBodyRange.SpecialCells(xlCellTypeBlanks).Count

J'ai testé, il me semble que ça ne change pas grand chose, j'ai modifié ce que tu m'as demandé, j'ai enregistré, quitté et rouvert le fichier

Aurais-je oublié quelque chose ?

Vois le fichier en pièce jointe

Top Dan,

Tout fonctionne, j'essaye vraiment d'apprendre et d'étudier le code que tu m'as gentiment écrit...mais j'avoue que ce n'est pas simple

J'ai voulu déplacer le X, initialement en colonne E, en colonne J j'ai donc remplacer ça

If UCase(cel.Offset(0, 3)) <> "X" Then

par

If UCase(cel.Offset(0, 8)) <> "X" Then

et ça

cel.Offset(0, 3) = "X" 'bon emis

par

cel.Offset(0, 8) = "X" 'bon emis

Cela fonctionne, mais après pour la numérotation des palettes, ça bug du coup je le laisse en colonne E

Un autre 'problème' plus gênant c'est l'ajout de feuilles, j'ai besoin d'ajouter deux feuilles, et j'avoue que je suis un peu perdu, je suis désolé je ne pensais pas que ca pouvait avoir une incidence sur le code...enfin bref, on en apprend tous les jours littéralement

Sorry et merci

Si tu veux bien m'aider pour ces deux feuilles, je marquerai le sujet comme résolu et encore une fois je te remercie pour ton travail et ton temps

Je pense avoir trouvé, mais comme tu es le concepteur du code, je voudrais ta confirmation, j'ai ajouté deux feuilles que j'ai placé avant la feuille Stock_In

et j'ai adapté deux lignes de codes

If Sheets(i).Name <> "Stock_In" And Sheets(i).Name <> "DN"

J'ai rajouté ici

And Sheets(i).Name <> "Pricing 21" And Sheets(i).Name <> "Dashboard" Then

en suivant ton exemple et la logique

puis j'ai modifié une autre ligne en mettant -4 à la place de -2 puisque j'ai ajouté deux feuilles

.Name = "DN" & Sheets.Count - 4

Y-aurait-il selon toi d'autres lignes de code à modifier ?

PS : tu noteras que j'ai changé le nom de la feuille BL en DN et appliqué le changement partout

J'ai modifié d'autres lignes de codes, ça à l'air de fonctionner, je reviendrai vers toi le cas échéant

Merci

Bonjour

Un autre 'problème' plus gênant c'est l'ajout de feuilles, j'ai besoin d'ajouter deux feuilles, et j'avoue que je suis un peu perdu, je suis désolé je ne pensais pas que ca pouvait avoir une incidence sur le code...enfin bref, on en apprend tous les jours littéralement

Ben oui. Si on veut utiliser la programmation il faut toujours savoir exactement ce que l'on veut au final. Si on change souvent on risque de devoir tout refaire

Si tu veux mettre la colonne E en J, il te suffit de changer la ligne NBL = .... Là listcolumn(5) devient Listcolumns(10). 5 pour colonne E et 10 pour colonne J

OK. Pour les deux feuilles ajoutées. Tu voulais les mettre avant la feuille Stock_in ?

Edit : Attention aux deux codes imprimer et Sauvegarde que, je pense, il faudra changer

Top merci pour la colonne J, je vais voir ça

Oui j'ai bien modifié dans les macros Imprimer et Sauvegarde les lignes par rapport aux feuilles

Merci

Rechercher des sujets similaires à "macro remplissage impression auto"