OVH Cloud OVH Cloud

Comment utiliser Thisworkbook

11 réponses
Avatar
Pierre F.
Bonsoir;

Sur un autre fil, j'ai trouv=E9 (gr=E2ce =E0 JB :-) comment attribuer le =

contenu d'une cellule =E0 l'ent=EAte et ou au pied de page:

>>
Dans ThisworkBook (Alt+F11)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.PageSetup.CenterHeader =3D [A1]
End Sub
JB
>>

J'ai acc=E9d=E9 =E0 ThisworkBook ... mais une fois copi=E9 le code, je ne=
sais=20
pas quoi en faire !!

Si je regarde l'aper=E7u, =E7a ne marche pas.
Dois-je cr=E9er une macro ?

Cordialement,
Pierre F.

10 réponses

1 2
Avatar
LSteph
Bonsoir,

Si, si , cela marche fort bien,
après avoir collé le bout de code dans ThisWorkbook
Saisis qqchose en A1
puis
Fichier Imprimer
Aperçu

ce que tu as écris se trouve en entête central de page.

Cordialement.

lSteph

Bonsoir;

Sur un autre fil, j'ai trouvé (grâce à JB :-) comment attribuer le
contenu d'une cellule à l'entête et ou au pied de page:


Dans ThisworkBook (Alt+F11)


Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.PageSetup.CenterHeader = [A1]
End Sub
JB




J'ai accédé à ThisworkBook ... mais une fois copié le code, je ne sais
pas quoi en faire !!

Si je regarde l'aperçu, ça ne marche pas.
Dois-je créer une macro ?

Cordialement,
Pierre F.




Avatar
JB
On 8 fév, 22:53, "Pierre F." wrote:
Bonsoir;

Sur un autre fil, j'ai trouvé (grâce à JB :-) comment attribuer le
contenu d'une cellule à l'entête et ou au pied de page:


Dans ThisworkBook (Alt+F11)


Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.PageSetup.CenterHeader = [A1]
End Sub
JB




J'ai accédé à ThisworkBook ... mais une fois copié le code, je ne sais
pas quoi en faire !!

Si je regarde l'aperçu, ça ne marche pas.
Dois-je créer une macro ?

Cordialement,
Pierre F.


Bonsoir,

Dans le classeur joint, j'ai mis une copie d'écran:

http://cjoint.com/?cixb1kjYUW

-Alt+F11
-Double-clic sur ThisWorkBook
-Dans le premier menu (général), choisir workbook
-Dans le second menu (à droite), choisir BeforePrint

Il doit apparaître:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub

C'est là qu'il faut coller le code

Cordialement JB



Avatar
Pierre F.
Bonsoir,

Si, si , cela marche fort bien,


Oui, effectivement, je sais pas pourquoi j'y arrivais pas.
Merci.
Plus compliqué maintenant:

Le contenu de la cellule que je souhaite mettre dans l'entête se trouve
dans une colonne (H) gérée par un filtre automatique (3 contenus poss ibles).

Je souhaiterais donc que dans l'entête apparaisse le contenu de la
cellule H de la première ligne, obtenu suite au filtrage et ceci pour
chacun des 3 contenus possibles.

Cela peut être H6 (1ère ligne "normale" du tableau) mais selon le fil tre
utilisé, cela peut être H22, H154...

Merci d'avance.

Cordialement,
pierre F.

Avatar
LSteph
..ceci peut-être ce que tu souhaites

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim c As Range, myTxt As String
For Each c In [h2:h200].Cells
If c.EntireRow.Hidden = False Then myTxt = CStr(c): Exit For
Next
ActiveSheet.PageSetup.CenterHeader = myTxt
End Sub


Bonsoir,

Si, si , cela marche fort bien,


Oui, effectivement, je sais pas pourquoi j'y arrivais pas.
Merci.
Plus compliqué maintenant:

Le contenu de la cellule que je souhaite mettre dans l'entête se trouve
dans une colonne (H) gérée par un filtre automatique (3 contenus
possibles).

Je souhaiterais donc que dans l'entête apparaisse le contenu de la
cellule H de la première ligne, obtenu suite au filtrage et ceci pour
chacun des 3 contenus possibles.

Cela peut être H6 (1ère ligne "normale" du tableau) mais selon le filtre
utilisé, cela peut être H22, H154...

Merci d'avance.

Cordialement,
pierre F.




Avatar
Pierre F.
..ceci peut-être ce que tu souhaites

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim c As Range, myTxt As String
For Each c In [h2:h200].Cells
If c.EntireRow.Hidden = False Then myTxt = CStr(c): Exit For
Next
ActiveSheet.PageSetup.CenterHeader = myTxt
End Sub


C'est exactement ça. Mille merci!

Cordialement,
Pierre F.

Avatar
Pierre F.
..ceci peut-être ce que tu souhaites

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim c As Range, myTxt As String
For Each c In [h2:h200].Cells
If c.EntireRow.Hidden = False Then myTxt = CStr(c): Exit For
Next
ActiveSheet.PageSetup.CenterHeader = myTxt
End Sub


C'est ça
Encore plus compliqué :-)

Le texte que je souhaite voir figurer dans l'entête est en fait
constitué de deux parties.
- Une partie "fixe" constituée du mot "Salle : "
- Une partie variable selon la sélection (en fait, le numéro de la
salle) comme extrait par la procédure ci-dessous.

donc une concaténation de deux éléments.

De plus, je souhaiterais que le texte soit "aligné à droite" et non
centré (RightHeader ??)

Comment puis-je décrire à la ligne 2 de la procédure...
Dim c As Range, "Salle: "& myTxt As String ??


ou est-ce plus compliqué ? :-)

Ça l'est car quand j'essaie, le VBA me signale une erreur de syntaxe et
de compilation!!

Cordialement,
Pierre F.

Avatar
lSteph
Bonjour,

(C'est curieux 3ème fois en deux jours que même dans google des
messages dits "publiés" disparaissent).

Je reprends ce que déjà envoyé il y a deux heures,
c'est ici que cela se passe:
'...
If c.EntireRow.Hidden = False Then myTxt = "Salle " & CStr(c): Exit
For
'...

'Cdlt.

lSteph
Avatar
LSteph
Il y a vraiment un truc bizarre, avec toutes sortes d'outils à
différentes heures et depuis des endroits différents, si celui-ci ne
passe toujourts pas tant pis!

C'est plutôt par ici:

If c.EntireRow.Hidden = False Then myTxt = "Salle " & CStr(c): Exit For

'lSteph


..ceci peut-être ce que tu souhaites

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim c As Range, myTxt As String
For Each c In [h2:h200].Cells
If c.EntireRow.Hidden = False Then myTxt = CStr(c): Exit For
Next
ActiveSheet.PageSetup.CenterHeader = myTxt
End Sub


C'est ça
Encore plus compliqué :-)

Le texte que je souhaite voir figurer dans l'entête est en fait
constitué de deux parties.
- Une partie "fixe" constituée du mot "Salle : "
- Une partie variable selon la sélection (en fait, le numéro de la
salle) comme extrait par la procédure ci-dessous.

donc une concaténation de deux éléments.

De plus, je souhaiterais que le texte soit "aligné à droite" et non
centré (RightHeader ??)

Comment puis-je décrire à la ligne 2 de la procédure...
Dim c As Range, "Salle: "& myTxt As String ??


ou est-ce plus compliqué ? :-)

Ça l'est car quand j'essaie, le VBA me signale une erreur de syntaxe et
de compilation!!

Cordialement,
Pierre F.




Avatar
Pierre F.

Il y a vraiment un truc bizarre, avec toutes sortes d'outils à
différentes heures et depuis des endroits différents, si celui-ci n e
passe toujourts pas tant pis!

C'est plutôt par ici:


Merci; je vois, maintenant tes deux contributions; il y a 50 min, je
n'en voyais aucune.

Cordialement,
Pierre F.

Avatar
Pierre F.

Il y a vraiment un truc bizarre, avec toutes sortes d'outils à
différentes heures et depuis des endroits différents, si celui-ci n e
passe toujourts pas tant pis!

C'est plutôt par ici:

If c.EntireRow.Hidden = False Then myTxt = "Salle " & CStr(c): Exit For



Ça marche super !!!! Merci.

Suite des questions :-)

Si j'ai bien compris, cette procédure s'applique à toutes les feuille s
(15) de mon classeur...

...mais il y a 3 feuilles (la première et les 2 dernières) pour
lesquelles je souhaiterais une entête différente ("normale") faite
simplement avec l'outil classique "entête et pied de page".

Comment faire ??

Cordialement,
Pierre F.

1 2