Bonjour,
Je cherche une manière simple (je viens de lotus 123!) d'incorporer la valeur d'une cellule dans l'en-tête.
(j'ai rien trouvé dans la très bonne aide d'Open Office, mais je suis loin d'être bon pour les recherches dans les aides)
Merci...
valeur d'une cellule dans l'en-tête (ou pied de page)
Modérateur : Vilains modOOs
Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
-
- Fraîchement OOthentifié
- Messages : 5
- Inscription : 02 oct. 2006 09:17
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Bonjour
Je n'ai pas trouvé non plus... et je crains que cela ne soit pas prévu...
Il faut donc se débrouiller avec les zones d'impression et le format de page.
Seul truc tellement mauvais que j'hésite même à le signaler : renommer la feuille ou le classeur du nom figurant dans la cellule qu'on voudrait mettre dans l'en-tête. Il devient alors possible d'insérer cela (encore faut-il que ce contenu soit un nom autorisé pour un classeur ou une feuille).
J'espère que d'autres seront plus inspirés...
Je n'ai pas trouvé non plus... et je crains que cela ne soit pas prévu...
Il faut donc se débrouiller avec les zones d'impression et le format de page.
Seul truc tellement mauvais que j'hésite même à le signaler : renommer la feuille ou le classeur du nom figurant dans la cellule qu'on voudrait mettre dans l'en-tête. Il devient alors possible d'insérer cela (encore faut-il que ce contenu soit un nom autorisé pour un classeur ou une feuille).
J'espère que d'autres seront plus inspirés...
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Ci-dessus un exemple simplifié par macro. Par simplifié, j'entends :
- Que le code ci-dessous ne traite que le style de page Standard
- Qu'il ne gère que l'en-tête (adaptation facile pour le pied)
- Qu'il suppose qu'on utilise le même contenu à gauche et à droite
- Que le texte à récupérer se trouve dans une cellule (et non une plage)
- Que seul le texte récupéré constitura la zone (gauche, centre, droite) de l'en-tête. Si on veut plusieurs données, il faut les concaténer dans la cellule en question
L'utilisation est je pense assez simple :
- Nommer CelluleTitre la plage à récupérer en en-tête (ou autre nom si on change la constante en début de code)
- Editer l'en-tête (Format Page ou modification du style Standard) et mettre dans la zone gauche et/ou, centre, et/ou droite le même texte CelluleTitre.
Après exécution de la procédure, le texte aura été remplacé par le contenu de la cellule.
- Que le code ci-dessous ne traite que le style de page Standard
- Qu'il ne gère que l'en-tête (adaptation facile pour le pied)
- Qu'il suppose qu'on utilise le même contenu à gauche et à droite
- Que le texte à récupérer se trouve dans une cellule (et non une plage)
- Que seul le texte récupéré constitura la zone (gauche, centre, droite) de l'en-tête. Si on veut plusieurs données, il faut les concaténer dans la cellule en question
L'utilisation est je pense assez simple :
- Nommer CelluleTitre la plage à récupérer en en-tête (ou autre nom si on change la constante en début de code)
- Editer l'en-tête (Format Page ou modification du style Standard) et mettre dans la zone gauche et/ou, centre, et/ou droite le même texte CelluleTitre.
Après exécution de la procédure, le texte aura été remplacé par le contenu de la cellule.
Code : Tout sélectionner
option explicit
sub PysMajEntete
const PysNomPlage = "CelluleTitre" 'Nom à donner à la cellule dont on veut récupérer le texte en en-tête
dim PysClass as object, PysEntete as object
dim PysCol as integer, PysRow as integer, PysFeuille as integer, PysText as string
PysClass = thisComponent 'Accès au classeur courant
if PysClass.NamedRanges.hasByName(PysNomPlage) then 'S'il contient un nom de plage "CelluleTitre"
with PysClass.NamedRanges.getByName(PysNomPlage).ReferencePosition 'Récupére les références de cette plage (feuille, ligne, colonne)
PysFeuille = .sheet
PysCol = .column
PysRow = .row
end with
PysText = PysClass.sheets(PysFeuille).getCellByPosition(PysCol, PysRow).string 'Récupère le texte de cette plage nommée
PysEntete = PysClass.StyleFamilies.getByName("PageStyles").getByName("Default").RightPageHeaderContent 'Accès à l'entête de droite du style de page standard
if PysEntete.LeftText.String = PysNomPlage then 'Si la zone de gauche contient le texte "CelluleTitre" (sans guillemets)
PysEntete.LeftText.String = PysText 'Remplace ce texte par le contenu de la cellule
end if
if PysEntete.CenterText.String = PysNomPlage then 'Ibid. pour la zone milieu
PysEntete.CenterText.String = PysText
end if
if PysEntete.RightText.String = PysNomPlage then 'Ibid. pour la zone de droite
PysEntete.RightText.String = PysText
end if
PysClass.StyleFamilies.getByName("PageStyles").getByName("Default").RightPageHeaderContent = PysEntete 'Met à jour l'en-tête
else
msgbox "Le classeur ne comprend pas le nom de plage " & PysNomPlage
end if
end sub
-
- Fraîchement OOthentifié
- Messages : 5
- Inscription : 02 oct. 2006 09:17