impression d'un multipage

  • Initiateur de la discussion nicole
  • Date de début
N

nicole

Guest
Auteur: nicole (195.6.59.---)
Date: 18-06-04 14:03

Bonjour le forum,

j'avais sollicité cotre aide pour concevoir un formulaire multipage et ai reçu des réponses avisées de plusieurs personnes notamment de @+Thierry.

J'ai donc un multipage qui fonctionne correctement ( affichage des données des différents onglets et possibilité de visualiser, modifier ou enregistrer).

Mon pb est le suivant, j'ai un bouton impression et suivant que le checkbox est coché ou pas il prend le caption:en un seul formulaire ou des onglets séparés. J'ai donc la possibilité d'imprimer le multipage sur une feuille ou d'avaoir le nb de feuilles correspondant aux nb d'onglets. J'arrive à imprimer dans ce 2ème cas mais pas à imprimer 1 seule feuille récapitulative. Peut-être pourriez-vous m'aider.
Mon code

Private Sub buttonImprimer_Click()

Dim CTRL As Control
Dim X As Byte
If Me.CheckBoxImprimer = False Then
For X = 0 To 6
With UserForm5
.MultiPage1.Value = X
.PrintForm
End With
Next
Else
For Each CTRL In Me.Controls
If TypeOf CTRL Is MSForms.TextBox Or TypeOf CTRL Is MSForms.ComboBox Then
Range(CTRL.Name) = CTRL.Value
End If
Next CTRL
With Sheets("Form")
.Visible = True
.PrintOut
.Visible = False
End With
End If

end sub

Merci et pardon d'avoir été aussi longue.
 
@

@+Thierry

Guest
Bonjour Nicole, le Forum

Je ne comprends jamais pourquoi les gens s'éparpillent dans differents posts pour disséminer un bout de code que l'on a donné dans un cas bien particulier, et surtout en ayant pris le soin de donner des explication techniques et même carrément une démo complète et opérationnelle :

=> Démo Lien supprimé

=> Fil d'Origine Lien supprimé

Car là est la réponse à ta question, donc il n'est pas utile de faire des copy/paste de ton Post à répétition (Lien supprimé)....

Enfin, dans la démo que je t'ai faite donc l'option "Impression Formulaire" fonctionne bien pour retourner les données des différents onglets en une seule et unique feuille récapitulative.... Pour autant que tu aies bien pris soins de nommer tes plages avec les noms des contrôles respectifs qui doivent y être reportés... (regarde les champs nommés en feuille "Form" dans la démo)

Bon Courage et bonne soirée
@+Thierry
 
N

nicole

Guest
Salut thierry, le forum,

je sais que ça peut paraitre un peu lourd de revenir sur des problèmes qui semblent avoir été traités mais bon que veux-tu ça coince. Pourtant tout le reste du programme fonctionne parfaitement, j'ai réussi à adapter ta démo en faisant quelques petits changements notamment sur le spin button.

Je crois que mon pb vient de ce que tu appelles "Form" j'arrive pas à déterminer ce que c'est: une des feuilles? le formulaire?

Bref, je suis tjs dessus en espérant terminer cela au plus vite pour pouvoir le présenter .

Voila donc si vous avez une idée je suis preneuse.

Merci et bonne journée.

Nicole
 
S

Sebb

Guest
Salut !
Form = USF = UserForm
c'est ta petite fenêtre créee à partir de l'éditeur Visual Basic

Quand Form est entre guillemets c'est qu'il s'agit d'un nom donc reporte toi à l'argument précédent pour voir de quoi il s'agit.
ex :
Sheet("form") <=== il s'agit de la feuille excel appellée "Form"
Workbook("form")<=== le classeur "form"
range("form") <==== la cellule nommée "form"
etc.



As tu relu les liens que t'a donné @+Thierry ?

a+
 
@

@+Thierry

Guest
Bonjour Nicole, Sebb, le Forum

J'ai pourtant écrit ci-dessus "regarde les champs nommés en feuille "Form" dans la démo" et sinon Sebb a tout à fait raison si tu lis le code :
=> With Sheets("Form") <= détermine définitivement qu'il s'agit d'une feuille...

Enfin je pense que là où tu te perds c'est sur deux choses :

1) La feuille "Form" est Masquée et est Rendu Visible avec cette Ligne :
.Visible = True (Menu Format => Feuille => Démasquer)

2) Chaque cellule de cette feuille "Form" qui doivent recevoir des données sont nommées... (Menu Insertion => Nom => Définir) par exemple :
Range("D2") => nommée "CbxNum"
Range("D6") => nommée "TxbB"
Range("D8") => nommée "Txb"
Etc Etc...

Donc je récapitule le code :
For Each CTRL In Me.Controls
If TypeOf CTRL Is MSforms.TextBox Or TypeOf CTRL Is MSforms.ComboBox Then
Range(CTRL.Name) = CTRL.Value
End If
Next CTRL

En bon françois, celà donne :
Pour chacun des Contrôles dans le UserForm, si le type du Contrôle est une "TextBox", ou bien une "ComboBox", et bien la Cellule nommée avec le même nom que le Contrôle en question prend la valeur du dit Contrôle...

Capito ? (arf faut pas parler Italien aujourd'hui !! lol)

Voilà, Nicole je pense qu'avec tous les morceaux de solutions que tu as trouvés sur ce Forum, tu pourras faire ceci dans le Initialise de ton UserForm :
Private Sub UserForm_Initialize()
Me.Caption = "Programme de Nicole avex XLD"
Mais plus sérieusement j'espère pour toi que ton travail sera pris en considération pour ton avancement.

Bonne Matinée
@+Thierry
 
N

nicole

Guest
Bonjour le forum, sebb, Thierry

merci beaucoup pour les différents conseils. Je n'avais en effet pas percuté qu'il yavait une page de plus et qu'elle était masquée.Je suis entrain de refaire cette écriture de code. Pour l'instant ça a l'air de matcher.

En tout cas mon boss est très content de ce que j'ai déja fait, le reste apparait comme une cerise sur le gateau. Je sais que je ne serais pas où j'en suis aujourd'hui sans votre aide à tous.

Merci encore.

Nicole
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal