Impression et Archivage a partir d'un bon de commande

Bonjour, voilà j'espere que quelqu'un pourra m'aider. Cela fait déjà 3 jours que j'esssaie de trouver la solution à mon problème.

Je travaille sous excel avec un bon de commande qui se calcul automatiquement. je dois faire une chaine d'action et je suis incapable de trouver la solution.

Une fois le bon de commande fini, j'aimerais :

- appuyer sur un bouton Imprimer (et d'ailleurs est ce possible de désactiver la fonction imprimer classique pour forcer le passage par le bouton?)

Des que le bouton est selectionné,

  • Création d'un numéro de bon de commande automatique qui s'incrémentera de un à chaque impression (chaque création d'un nouveau bon de commande)
  • Impression du 1er et 2nd onglet de mon fichier avec l'imprimante par défaut.
  • Archivage dans une troisième feuille excel nommée "Archives" du numéro de bon de commande cellule A10, de cout de la commande cellule J42, de la date de la commande, cellule A11.

Lorque qu'une nouvelle impression se fait, il ne faut pas réécrire sur les anciennes cellules. J'aimerais avoir un archivage de toute mes impressions de Bon de commande.

Les feuilles sont protégées.

Ce projet est assez urgent, je pensais pouvoir trouver la solution seul, en vain. Cela m'aiderait fortement si qqn pouvait m'apporter de l'aide ou me donner des liens sur des forums que je n'aurais pas vu traitant de ce type de problèmes.

PS: j'arrive à faire certaines choses déja comme l'impression a laide de l'enregistreur de macro, mais j'ai des soucis pour le reste.

Merci d'avance!

Bonsoir

Une proposition de fichier, avec les code VBA, qui permettent :

  • de rendre inopérant la ligne du menu imprimer... du menu fichier, et du bouton standard d'impression.
  • un code d'archivage des données du bon de commande, le bouton permet aussi de lancer l'impression.

Regarde si cela te convient.

https://www.excel-pratique.com/~files/doc/Impression.xls

Petit truc, sur l'archivage, dans la feuille d'archivage, la deuxième ligne contient la référence de la cellule qui contient la valeur à récupérer. Cela permet de ne pas alourdir le code VBA, et permet à l'utilisateur d'adapter la base d'archive sans devoir jongler le code VBA.

Petit truc, Activation/Désactivation, à l'ouverture du fichier, le code WorkBook_Open va orienter l'utilisateur sur la feuille du bon de commande, le fait et désactive les boutons, en sélectionnant la feuille d'archive, les boutons sont de nouveau accessible, ce qui est normal en soit, c'est la gestion des événements Activate et désactivate de la feuille archive qui le permet.

Si tu as besoin d'aides n'hésite pas.

@+Jean-Marie

Merci pour ton aide, je vais voir ce que je peux faire. C'est gentil de m'avoir répondu. JE te tiens au courant. Et si mon code fonctionne je le mettrai directmeent sur le forum

Bonjour jean Marie.... voila j'ai du mal à comprendre ton code :

With Sheets("Feuil5")

'nombre de champs à archiver

vColumn = .Range("IV1").End(xlToLeft).Column

'N° de la ligne à écrire

vRow = .Range("A65536").End(xlUp).Row + 1

For I = 1 To vColumn

'on écrit dans la base d'archive le contenu des cellules

'.Cells(2, I) contient la référence de la cellule de la valeur à basculer

.Cells(vRow, I) = Range(.Cells(2, I))

Next I

'Impression du 1er onglet

Sheets("feuil1").PrintOut

'Impression du 2ème onglet

Sheets("feuil2").PrintOut

For I = 1 To vColumn

Select Case I

Case 1

'on incrémente le contenu de la cellule

Range(.Cells(2, I)) = Range(.Cells(2, I)) + 1

Case 2 To 3

'on efface pas le contenu des cellules du bon de commande

Case Else

'on efface le contenu de la cellule

Range(.Cells(2, I)) = ""

End Select

Next I

vColumn = .Range("IV1").End(xlToLeft).Column , ca veut dire quoi ca? je ne comprend pas le IV1 c'est un groupement de cellule que tu as nommé de cette manière?

J'ai bien saisi par contre le programme sur l'impression ct exactement ce que je cherchais merci!

en fait merci tout marche comme je veux ... ca fait plaisir!!! merci pour tout! c'était vraiment rapide et efficace! merci à toi jeanMarie

Bonsoir

.Range("IV1").End(xlToLeft).Column, cette instruction permet de connaître la dernière colonne (la plus à droite) qui est utilisée dans la feuille d'archivage, après je boucle sur tous les champs que tu veux archiver, cela me permet de ne pas toucher au code, et toi de rajouter autant de champs que tu le désires, il suffit de mettre le lien vers la cellule du bon de commande.

@+Jean-Marie

Rechercher des sujets similaires à "impression archivage partir bon commande"