VBA EXCEL créer bouton d'impression

Fermé
beachboy84 Messages postés 2 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 4 février 2008 - 1 févr. 2008 à 17:15
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 4 févr. 2008 à 17:42
Bonjour,

J'ai une base de donnée sous excel comprenant deux onglets: un onglet 1 avec une base de donnée de client et les champs de celles-ci (Nom, prénoms...).
Un deuxième onglet 2 me servant à faire l'impression.

En effet, pour pouvoir imprimer une personne de ma base de donnée sur une feuille A4 et qu'elle apparaisse en colonne, je sélectionne actuellement la ligne voulue dans l'onglet 1, et fait un copy-Paste transposé sur l'onglet 2. (J'ai 30 champs par client)

Ma question est la suivante: Plutôt que de faire cette manipulation à chaque fois et pour gagner du temps, serait-il possible de créer dans l'onglet 1 un bouton impression qui m'imprime automatiquement la ligne que je souhaite(soit parce que je la sélectionne, soit car j'indique son numéro...) via un code VBA sur une feuille A4 classiquement avec les infos en colonnes?
Ou bien serait-il possible d'imprimer simplement le formulaire se référant au tableau?(CF données -formulaire)

Par avance, merci de votre réponse.
N'hésitez pas à me poser des questions si je me suis mal exprimé ou bien si je n'ai pas décrit assez clairement mon problème.

Cordialement.
A voir également:

3 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
1 févr. 2008 à 18:40
bonjour

As-tu essayé d'enregistrer une macro lorsque tu fais cela manuellement ?

Cela serait une bonne base de départ et ensuite tu nous postes la macro obtenue et on l'adapte à une utilisation banalisée sur le client sélectionné.
1
beachboy84 Messages postés 2 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 4 février 2008
4 févr. 2008 à 16:52
Merci beaucoup gbinforme et excuse-moi de te répondre si tardivement.

Voilà ma macro

Sub imprimer_entree()
'Atteindre le formulaire et mémoriser les données
Sheets("Base de données").Select
ActiveCell.EntireRow.Select
Selection.Copy
'Test pour déterminer ou coller ds tableau
Sheets("Impression-Enregistrement").Select
Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=True
'Imprimer
Sheets("Impression-Enregistrement").Select
ActiveSheet.PageSetup.PrintArea = Zone_Imp("A1", "B", 32)
End Sub

J'ai deux problèmes: Tout d'abord la macro ne marche pas car il me semble que je me suis trompé quelque part dans la zone d'impression.Je pense que j'ai fait une faute dans l'écriture de la séléction de la zone.

Mon deuxième problème est le suivant: Est-il possible de ne pas copier entièrement la ligne que je sélectionne dans le feuiille dite "base de données", mais plutot cette ligne sur 32 colonnes. En réalité je pense que mon principal soucis est un problème de sélection de zones que ce soit d'impression ou de sélection.
NB: J'ai pensé à une autre solution: peut-on séléctionner via une macro, après un tri automatique, la ligne qui s'affiche?

Je suis désolé j'ai juste comencé à manipuler VBA depuis 3 jours dans le cadre de mon job, et ce que je fais n'est ni plus ni moins que du copier-coller appliqué à mon cas de ce que j'ai trouvé sur différents sites!pas très pro j'avoue.

Merci encore de votre aide.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
4 févr. 2008 à 17:42
bonjour

Est-il possible de ne pas copier entièrement la ligne : tout à fait il suffit de donner le nombre.

peut-on séléctionner via une macro, après un tri automatique, la ligne qui s'affiche?

C'est possible aussi et je t'ai mis la sélection : il suffit de cliquer sur la bonne ligne et de valider.
Sub imprimer_entree()
'Atteindre le formulaire et mémoriser les données
Dim sel As Variant
Sheets("Base de données").Activate
Set sel = Application.InputBox("Choisissez le client à imprimer", "Choix client", "Base de données!A1", 160, 50, , , 8)
Sheets("Base de données").Cells(sel.Row, 1).Resize(1, 32).Copy
'Test pour déterminer ou coller ds tableau
Sheets("Impression-Enregistrement").Range("B1").PasteSpecial _
    Paste:=xlPasteAllExceptBorders, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=True
'Imprimer
Sheets("Impression-Enregistrement").PageSetup.PrintArea = [A1:B32]
Sheets("Impression-Enregistrement").PrintOut Copies:=1, Collate:=True
End Sub
0