Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Création automatique fichier pui simpression

8 réponses
Avatar
Frank
Bonjour à toutes et tous.
Voici ma problématique.
Depuis un fichier de travail assez volumineux, je désirerais faire la chose
suivante :

- En cliquant sur un bouton (ça je sais le créer et affecter le code derrière)

- Sélectionner les plages A1 - H60 et L1 - H60 des onglets 1 et 2 (leurs
petits noms est stats dossiers et stats incidents). Ce qui fait 2 plages par
onglets soit en tout 4 plages.

- Créer un nouveau fichier avec ces 4 plages pour en faire 4 pages pour
pouvoir imprimer le tout dans un fichier PDF.
Ou alors si pas besoin de créer un nouveau fichier mais de faire en sorte
que l'on puisse puisse tout simplement imprimer ces 4 plages en 4 pages.

J'espère avoir été assez clair.
Merci par avance.
Frank.

8 réponses

Avatar
Frank
Je me réponds seul dans un premier temps.
J'ai apporté des modifs en nommant les 4 plages d'impression.
zone-imp_dde_info
zone_imp_dde_tel
zone_imp_inc_info
zone_imp_inc_tel

Le but étant le même, à savoir lancer une impression de chaque zone sur une
page vers un seul fichier pdf.

"Frank" a écrit :

Bonjour à toutes et tous.
Voici ma problématique.
Depuis un fichier de travail assez volumineux, je désirerais faire la chose
suivante :

- En cliquant sur un bouton (ça je sais le créer et affecter le code derrière)

- Sélectionner les plages A1 - H60 et L1 - H60 des onglets 1 et 2 (leurs
petits noms est stats dossiers et stats incidents). Ce qui fait 2 plages par
onglets soit en tout 4 plages.

- Créer un nouveau fichier avec ces 4 plages pour en faire 4 pages pour
pouvoir imprimer le tout dans un fichier PDF.
Ou alors si pas besoin de créer un nouveau fichier mais de faire en sorte
que l'on puisse puisse tout simplement imprimer ces 4 plages en 4 pages.

J'espère avoir été assez clair.
Merci par avance.
Frank.


Avatar
MichDenis
Bonjour Frank,


'------------------------------------
Sub test()
Dim A As Integer
Dim Arr(), Arr1(), Wk As Workbook, Sh As Worksheet
'Nom des feuilles
Arr = Array("stats dossiers", "stats incidents")
'Plage de cellules pour chaque feuille
Arr1 = Array("A1:H60", "L1:H60")
Application.ScreenUpdating = False
'Nouveau classeur avec une feuille
Set Wk = Workbooks.Add(-4167)
'Ajout de 3 feuilles(besoin de 4 feuilles au total
For A = 1 To 3
Wk.Worksheets.Add
Next
A = 0

'Choix de l'imprimante : PDF
Application.Dialogs(xlDialogPrinterSetup).Show
'Copie des 4 plages dans une feuille séparée
'du nouveau classeur
For Each elt In Arr
For Each plg In Arr1
A = A + 1
ThisWorkbook.Worksheets(elt).Range(plg).Copy _
Wk.Worksheets(A).Range("A1")
'Lorsque la macro sera testée,
'Change PrintPreview pour Printout
'Regarde dans l'aide pour définir les paramètres
'de printout si nécessaire.
Wk.Worksheets(A).PrintPreview
Next
Next
'Suppression du Classeur sans sauvegarde si nécessaire
Wk.Close False
Application.ScreenUpdating = True
End Sub
'------------------------------------


"Frank" a écrit dans le message de groupe de discussion
:
Bonjour à toutes et tous.
Voici ma problématique.
Depuis un fichier de travail assez volumineux, je désirerais faire la chose
suivante :

- En cliquant sur un bouton (ça je sais le créer et affecter le code derrière)

- Sélectionner les plages A1 - H60 et L1 - H60 des onglets 1 et 2 (leurs
petits noms est stats dossiers et stats incidents). Ce qui fait 2 plages par
onglets soit en tout 4 plages.

- Créer un nouveau fichier avec ces 4 plages pour en faire 4 pages pour
pouvoir imprimer le tout dans un fichier PDF.
Ou alors si pas besoin de créer un nouveau fichier mais de faire en sorte
que l'on puisse puisse tout simplement imprimer ces 4 plages en 4 pages.

J'espère avoir été assez clair.
Merci par avance.
Frank.
Avatar
Frank
Bonjour "MichDenis"
Effectivement, cela fonctionne sauf que 4 fichiers sont créés. J'aurais
aimés qu'il n'y en ai qu'un seul qui regroupe le tout.

"MichDenis" a écrit :

Bonjour Frank,


'------------------------------------
Sub test()
Dim A As Integer
Dim Arr(), Arr1(), Wk As Workbook, Sh As Worksheet
'Nom des feuilles
Arr = Array("stats dossiers", "stats incidents")
'Plage de cellules pour chaque feuille
Arr1 = Array("A1:H60", "L1:H60")
Application.ScreenUpdating = False
'Nouveau classeur avec une feuille
Set Wk = Workbooks.Add(-4167)
'Ajout de 3 feuilles(besoin de 4 feuilles au total
For A = 1 To 3
Wk.Worksheets.Add
Next
A = 0

'Choix de l'imprimante : PDF
Application.Dialogs(xlDialogPrinterSetup).Show
'Copie des 4 plages dans une feuille séparée
'du nouveau classeur
For Each elt In Arr
For Each plg In Arr1
A = A + 1
ThisWorkbook.Worksheets(elt).Range(plg).Copy _
Wk.Worksheets(A).Range("A1")
'Lorsque la macro sera testée,
'Change PrintPreview pour Printout
'Regarde dans l'aide pour définir les paramètres
'de printout si nécessaire.
Wk.Worksheets(A).PrintPreview
Next
Next
'Suppression du Classeur sans sauvegarde si nécessaire
Wk.Close False
Application.ScreenUpdating = True
End Sub
'------------------------------------


"Frank" a écrit dans le message de groupe de discussion
:
Bonjour à toutes et tous.
Voici ma problématique.
Depuis un fichier de travail assez volumineux, je désirerais faire la chose
suivante :

- En cliquant sur un bouton (ça je sais le créer et affecter le code derrière)

- Sélectionner les plages A1 - H60 et L1 - H60 des onglets 1 et 2 (leurs
petits noms est stats dossiers et stats incidents). Ce qui fait 2 plages par
onglets soit en tout 4 plages.

- Créer un nouveau fichier avec ces 4 plages pour en faire 4 pages pour
pouvoir imprimer le tout dans un fichier PDF.
Ou alors si pas besoin de créer un nouveau fichier mais de faire en sorte
que l'on puisse puisse tout simplement imprimer ces 4 plages en 4 pages.

J'espère avoir été assez clair.
Merci par avance.
Frank.




Avatar
MichDenis
| Effectivement, cela fonctionne sauf que 4 fichiers sont créés. J'aurais
| aimés qu'il n'y en ai qu'un seul qui regroupe le tout.

Seulement 1 nouveau classeur est créé avec 4 feuilles
chaque feuille contient la copie d'une plage de cellules que tu
as désignéé.
Si tu obtiens 4 classeurs différents, prière de m'indiquer
à quel endroit dans la procédure cela se produit !
Avatar
Frank
Désolé, je me suis mal fait comprendre.
Il y a bien un seul classeur avec 4 feuilles.
Mon seul problème étant que si je veux imprimer en pdf, cela me créé 4
fichiers pdf différent et non pas un seul avec mes 4 feuilles à la suite.
Je me rends compte en écrivant qu'il faudrait alors que j'utilise Impression
"Classeur entier" pour tout avoir dedans.

Merci beaucoup.

"MichDenis" a écrit :

| Effectivement, cela fonctionne sauf que 4 fichiers sont créés. J'aurais
| aimés qu'il n'y en ai qu'un seul qui regroupe le tout.

Seulement 1 nouveau classeur est créé avec 4 feuilles
chaque feuille contient la copie d'une plage de cellules que tu
as désignéé.
Si tu obtiens 4 classeurs différents, prière de m'indiquer
à quel endroit dans la procédure cela se produit !






Avatar
MichDenis
Et si tu modifies comme ceci :


Sub test()
Dim A As Integer
Dim Arr(), Arr1(), Wk As Workbook, Sh As Worksheet
'Nom des feuilles
Arr = Array(1, 2)
'Plage de cellules pour chaque feuille
Arr1 = Array("A1:H60", "L1:H60")
Application.ScreenUpdating = False
'Nouveau classeur avec une feuille
Set Wk = Workbooks.Add(-4167)
'Ajout de 3 feuilles(besoin de 4 feuilles au total
For A = 1 To 3
Wk.Worksheets.Add
Next
A = 0

'Copie des 4 plages dans une feuille séparée
'du nouveau classeur
For Each elt In Arr
For Each plg In Arr1
A = A + 1
ThisWorkbook.Worksheets(elt).Range(plg).Copy _
Wk.Worksheets(A).Range("A1")
Next
Next
'Choix de l'imprimante : PDF
Application.Dialogs(xlDialogPrinterSetup).Show
'Impression du fichier
Wk.PrintOut
'Suppression du Classeur sans sauvegarde si nécessaire
Wk.Close False
Application.ScreenUpdating = True
End Sub




"Frank" a écrit dans le message de groupe de discussion
:
Désolé, je me suis mal fait comprendre.
Il y a bien un seul classeur avec 4 feuilles.
Mon seul problème étant que si je veux imprimer en pdf, cela me créé 4
fichiers pdf différent et non pas un seul avec mes 4 feuilles à la suite.
Je me rends compte en écrivant qu'il faudrait alors que j'utilise Impression
"Classeur entier" pour tout avoir dedans.

Merci beaucoup.

"MichDenis" a écrit :

| Effectivement, cela fonctionne sauf que 4 fichiers sont créés. J'aurais
| aimés qu'il n'y en ai qu'un seul qui regroupe le tout.

Seulement 1 nouveau classeur est créé avec 4 feuilles
chaque feuille contient la copie d'une plage de cellules que tu
as désignéé.
Si tu obtiens 4 classeurs différents, prière de m'indiquer
à quel endroit dans la procédure cela se produit !






Avatar
Frank
Et bien, j'en aurai appris aujourd'hui.
Cela fonctionne bien sur. Plus qu'à mettre en page mais ça, je devrais y
arriver.

Par contre, désolé mais je ne suis pas doué en vba. Je suis étonné de ne pas
voir de fonction de type Paste dans le code. J'aurais aimé y mettre un
PasteSpecial pour lui spécifier de coller les valeurs et mises en formes des
champs.
Il y a des subtilités que je ne comprends pas toujours.

En tout cas, merci beaucoup pour votre aide.

"MichDenis" a écrit :

Et si tu modifies comme ceci :


Sub test()
Dim A As Integer
Dim Arr(), Arr1(), Wk As Workbook, Sh As Worksheet
'Nom des feuilles
Arr = Array(1, 2)
'Plage de cellules pour chaque feuille
Arr1 = Array("A1:H60", "L1:H60")
Application.ScreenUpdating = False
'Nouveau classeur avec une feuille
Set Wk = Workbooks.Add(-4167)
'Ajout de 3 feuilles(besoin de 4 feuilles au total
For A = 1 To 3
Wk.Worksheets.Add
Next
A = 0

'Copie des 4 plages dans une feuille séparée
'du nouveau classeur
For Each elt In Arr
For Each plg In Arr1
A = A + 1
ThisWorkbook.Worksheets(elt).Range(plg).Copy _
Wk.Worksheets(A).Range("A1")
Next
Next
'Choix de l'imprimante : PDF
Application.Dialogs(xlDialogPrinterSetup).Show
'Impression du fichier
Wk.PrintOut
'Suppression du Classeur sans sauvegarde si nécessaire
Wk.Close False
Application.ScreenUpdating = True
End Sub




"Frank" a écrit dans le message de groupe de discussion
:
Désolé, je me suis mal fait comprendre.
Il y a bien un seul classeur avec 4 feuilles.
Mon seul problème étant que si je veux imprimer en pdf, cela me créé 4
fichiers pdf différent et non pas un seul avec mes 4 feuilles à la suite.
Je me rends compte en écrivant qu'il faudrait alors que j'utilise Impression
"Classeur entier" pour tout avoir dedans.

Merci beaucoup.

"MichDenis" a écrit :

> | Effectivement, cela fonctionne sauf que 4 fichiers sont créés. J'aurais
> | aimés qu'il n'y en ai qu'un seul qui regroupe le tout.
>
> Seulement 1 nouveau classeur est créé avec 4 feuilles
> chaque feuille contient la copie d'une plage de cellules que tu
> as désignéé.
> Si tu obtiens 4 classeurs différents, prière de m'indiquer
> à quel endroit dans la procédure cela se produit !
>
>
>
>



Avatar
MichDenis
Pour reproduire le format :

Modifie cette section
For Each elt In Arr
For Each plg In Arr1
A = A + 1
ThisWorkbook.Worksheets(elt).Range(plg).Copy _
Wk.Worksheets(A).Range("A1")
Next
Next

Pour :
Le 8 dans la procédure est la valeur numérique de
la constante "xlPasteColumnWidths"
au besoin, tu peux ajouter la même ligne de code
.Range("A1").PasteSpecial 8
avec une nouvelle constante au besoin, elles sont
dans l'aide d'Excel lorsque tu places le curseur sur
PasteSpecial et que tu appuies sur F1
****************************************
For Each elt In Arr
For Each plg In Arr1
A = A + 1
ThisWorkbook.Worksheets(elt).Range(plg).Copy
With Wk.Worksheets(A)
.Range("A1").PasteSpecial xlPasteAll
.Range("A1").PasteSpecial 8
End With
Next
Next
****************************************




"Frank" a écrit dans le message de groupe de discussion
:
Et bien, j'en aurai appris aujourd'hui.
Cela fonctionne bien sur. Plus qu'à mettre en page mais ça, je devrais y
arriver.

Par contre, désolé mais je ne suis pas doué en vba. Je suis étonné de ne pas
voir de fonction de type Paste dans le code. J'aurais aimé y mettre un
PasteSpecial pour lui spécifier de coller les valeurs et mises en formes des
champs.
Il y a des subtilités que je ne comprends pas toujours.

En tout cas, merci beaucoup pour votre aide.

"MichDenis" a écrit :

Et si tu modifies comme ceci :


Sub test()
Dim A As Integer
Dim Arr(), Arr1(), Wk As Workbook, Sh As Worksheet
'Nom des feuilles
Arr = Array(1, 2)
'Plage de cellules pour chaque feuille
Arr1 = Array("A1:H60", "L1:H60")
Application.ScreenUpdating = False
'Nouveau classeur avec une feuille
Set Wk = Workbooks.Add(-4167)
'Ajout de 3 feuilles(besoin de 4 feuilles au total
For A = 1 To 3
Wk.Worksheets.Add
Next
A = 0

'Copie des 4 plages dans une feuille séparée
'du nouveau classeur
For Each elt In Arr
For Each plg In Arr1
A = A + 1
ThisWorkbook.Worksheets(elt).Range(plg).Copy _
Wk.Worksheets(A).Range("A1")
Next
Next
'Choix de l'imprimante : PDF
Application.Dialogs(xlDialogPrinterSetup).Show
'Impression du fichier
Wk.PrintOut
'Suppression du Classeur sans sauvegarde si nécessaire
Wk.Close False
Application.ScreenUpdating = True
End Sub




"Frank" a écrit dans le message de groupe de
discussion
:
Désolé, je me suis mal fait comprendre.
Il y a bien un seul classeur avec 4 feuilles.
Mon seul problème étant que si je veux imprimer en pdf, cela me créé 4
fichiers pdf différent et non pas un seul avec mes 4 feuilles à la suite.
Je me rends compte en écrivant qu'il faudrait alors que j'utilise Impression
"Classeur entier" pour tout avoir dedans.

Merci beaucoup.

"MichDenis" a écrit :

> | Effectivement, cela fonctionne sauf que 4 fichiers sont créés. J'aurais
> | aimés qu'il n'y en ai qu'un seul qui regroupe le tout.
>
> Seulement 1 nouveau classeur est créé avec 4 feuilles
> chaque feuille contient la copie d'une plage de cellules que tu
> as désignéé.
> Si tu obtiens 4 classeurs différents, prière de m'indiquer
> à quel endroit dans la procédure cela se produit !
>
>
>
>