[Résolu] Entête "dynamique" ??

Kiriko

XLDnaute Occasionnel
Bonjour,
Existe-t'il une méthode pour avoir dans l'entête d'un document excel une donnée "dynamique" (autre que le N° de page)?

Je précise : Ce que je souhaiterais, sur un document de plusieurs pages, avoir en entête de chacune des pages la valeur de la 2nde ligne de la 1ère colonne de la page, mais ce pour chacune des pages !!
A toute fin utile, je précise que chaque page contient un nombre différent de ligne, et que la raison pour laquelle je souhaite en entête la 2nde ligne (et non la 1ère) de la colonne A est que la 1ère ligne "répête" à chaque page les titres de tableau.

J'espère avoir été clair, merci par avance à tous ceux qui se pencheront sur mon problème.
Merci de m'informer également si cela n'est pas possible,

Cordialement,
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Entête "dynamique" ??

Bonjour le fil :rolleyes:,
Si tu dis que tu as des pages et des nombres de lignes différents, c'est que tu utilises des Saut de page
Code:
Sub test()
Dim MonSaut As HPageBreak
For Each MonSaut In ActiveSheet.HPageBreaks
MsgBox MonSaut.Location.Address
Next MonSaut
End Sub
te donneras les adresses des sauts de page.
Après, ben j'ai rien compris, parce que logiquement, la 2ème ligne de ta page figure forcément sur ta page :confused: ???
Bonne suite :cool:
 

tototiti2008

XLDnaute Barbatruc
Re : Entête "dynamique" ??

Bonjour Kiriko, Bonjour Balot, bonjour Jean-Noël :),

ça dépend aussi ce que tu appelles "page"
s'il s'agit des feuilles de calcul du classeur, on peut envisager une donnée liée par exemple au nom de la feuille comme l'a proposé Balot, s'il s'agit de feuille imprimée, je ne crois pas qu'il y ait autre chose de dynamique que le numéro de page qui change à chaque page imprimée et que l'on puisse mettre dans l'en-tête...s'il faut absolument que ce soit dans l'en-tête
 

Kiriko

XLDnaute Occasionnel
Re : Entête "dynamique" ??

Bonjour à tous et merci pour votre aide !
Effectivement, il s'agit de pages "imprimées" et nom de feuilles.
Le code de JNP semble aller dans la direction de ma demande (que j'ai visiblement mal formulée,désolé).

Ensuite, en partant du code de JNP, est-il possible une fois l'adresse "récupérée", d'assigner le contenu de chaque cellule trouvée (pour moi, cela doit être la 2nde ligne de la 1ère colonne après chaque saut de page) à l'entête ? (avec écrit devant "Planning N° " ) ?
A la lecture du post de tototiti2008, j'ai peur que non, mais maintenant que j'ai un peu mieux formulé, pouvez-vous me confirmer la possibilité/ impossibilité de la chose ?
Pour précision, le document (la feuille de calcul) peut comporter de 4 à 200 pages (imprimées). Je ne sais pas si cela peut être utile, mais les sauts de pages sont eux même générés par une macro (justement, à chaque changement de donnée en colonne A).....
Ce doc est en fait des plannings, avec le N° de planning en A. Le tout classé par N° de planning, puis date puis Heure Départ. Et saut de page à chaque changement de N° de planning (A). La 1ère ligne du tableau est "répétée" sur chaque page ("imprimée").
Je bidouillais avant en mettant en entête le N° de page, mais cela ne fonctionne bien sûr que si les N° de plannings débutent à 1, sont contigus (sans trou) et que chacun ne comporte qu'une seule page ("imprimée")... Ce qui est très restrictif, d'où ma demande...

En tous les cas, merci beaucoup de l'attention portée !
Cordialement,
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Entête "dynamique" ??

Re,

Seule possibilité, peut-être :
Boucler sur les pages (sauts de pages), modifier l'en-tête et n'imprimer qu'une seule page correspondant à la modification réalisée
Excel n'est pas aussi souple que Word sur les en-têtes
 

Kiriko

XLDnaute Occasionnel
Re : Entête "dynamique" ??

Merci tototiti2008,
Si c'est la seule possibilité, peut-on ensuite prévoir une macro qui en 1 seul click, imprime l'ensemble des pages (une par une si j'ai bien compris) en automatisant ces changements d'entête ? La zone d'impression et les sauts de pages sont clairement définis par une macro auparavant...
Je suis grand débutant (depuis longtemps...), et n'ai aucune idée de comment faire (l'enregistreur de macro ne semble pas adapté pour le coup).

Merci encore !
 

Kiriko

XLDnaute Occasionnel
Re : Entête "dynamique" ??

Bien, sûr, voici.
Les cellules où récupérer les données sont donc respectivement ici A2, A10 et A18.
Je reprécise (si c'est utile?) que les titres sont répétés sur chaque page.

J'ai déjà renseigner en entête "Planning N°" centré.
Il faudrait donc y adjoindre ces contenus de cellules :
"Planning N° 25
Planning N° 36
Planning N° 41 "
dans ce cas...
Quelquefois, il peut arriver qu'un même planning soit sur plusieurs pages (est-ce important?)

Le fin du fin serait un bouton Vba qui proposerait soit d'imprimer l'ensemble de la feuille de calcul, soit un seul des plannings (Combobox?) avec les "bonnes entêtes"

Merci !
 

Pièces jointes

  • Exemple pour entêtes.xlsx
    15.7 KB · Affichages: 101
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Entête "dynamique" ??

Bonjour à tous,

Déjà voir si ça fonctionne avec toutes les pages, après on pourra toujours chercher pour faire une sélection

Essaye ça sur le fichier exemple que tu nous a fourni et dis-nous ce que ça donne

Code:
Sub test()
Dim MonSaut As HPageBreak, Ligne As Long
    For i = 1 To ActiveSheet.HPageBreaks.Count + 1
        If i > 1 Then
            Ligne = ActiveSheet.HPageBreaks(i - 1).Location.Row
        Else
            Ligne = 1
        End If
        With ActiveSheet.PageSetup
            .CenterHeader = "&""-,Gras""&24Plannings N° " & Range("A" & Ligne + 1).Value
        End With
        ExecuteExcel4Macro "PRINT(2," & i & "," & i & ",1,,,,,,,,2,,,TRUE,,FALSE)"
    Next i
End Sub
 
Dernière édition:

Kiriko

XLDnaute Occasionnel
Re : Entête "dynamique" ??

Bonjour tototiti2008, bonjour le fil !
Cela fonctionne impeccablement, merci beaucoup !!
Pouvoir choisir l'imprimante (la même pour toute les pages bien sûr) serait un plus...

Reste l'option de "sélection" si tu as encore un peu de temps à m'accorder...

Merci encore !

P.S.: J'ai également testé en rajoutant des sauts de pages au milieu d'un même N° de planning, ça marche aussi, aucun soucis
 

tototiti2008

XLDnaute Barbatruc
Re : Entête "dynamique" ??

Re,

Pouvoir choisir l'imprimante (la même pour toute les pages bien sûr) serait un plus...

Je ne sais pas faire, mais il me semble que des fils du forum en parlaient, notamment sur le thème imprimer en PDF, je te laisse chercher

Reste l'option de "sélection" si tu as encore un peu de temps à m'accorder...

ça risque d'être un peu chaud, sur le principe si tu change les bornes de la boucle que je t'ai fournie, ça correspond aux numéros de pages

par exemple

Code:
Sub test()
Dim MonSaut As HPageBreak, Ligne As Long
    For i = 5 To 7
        If i > 1 Then
            Ligne = ActiveSheet.HPageBreaks(i - 1).Location.Row
        Else
            Ligne = 1
        End If
        With ActiveSheet.PageSetup
            .CenterHeader = "&""-,Gras""&24Plannings N° " & Range("A" & Ligne + 1).Value
        End With
        ExecuteExcel4Macro "PRINT(2," & i & "," & i & ",1,,,,,,,,2,,,TRUE,,FALSE)"
    Next i
End Sub

Devrait imprimer les pages de 5 à 7

Essaye d'adapter et reviens-nous mais moi je risque de manquer de temps aujourd'hui
 

Kiriko

XLDnaute Occasionnel
Re : Entête "dynamique" ??

Merci encore à toi !
Je pense comprendre le problème. De ce que j’interprète de ton code, il imprime des "pages données" mais sans lien avec le numéro de "Planning" noté dans les cellules. Effectivement, ça a l'air d'être chaud...
Idée de non connaisseur : Serait-il possible (et surtout utile?) de générer un onglet à partir de cette feuille, avec une simple table de correspondance entre N° de page et "N° de Planning" associé (1ère colonne, 2ème ligne de chaque page), pour aider à récupérer les infos pour les impressions "sélectives" ?

Sinon, aucun soucis tototiti2008, ce n'est pas très pressé et je suis déjà bien content et reconnaissant de ton aide...

Cordialement,
 

JNP

XLDnaute Barbatruc
Re : Entête "dynamique" ??

Re :),
Concernant l'imprimante, s'il s'agit d'une imprimante réseau, le code d'activation peut ressembler à ça :
Code:
Sub ChoixImprimante(NomImprimante As String)
' Active l'imprimante
    Dim I As Integer, Imprimante As String
    On Error Resume Next
    For I = 0 To 20
        Imprimante = "\\ServeurImpression\" & NomImprimante & " sur Ne" & Format(I, "00") & ":"
        Application.ActivePrinter = Imprimante
    Next I
    On Error GoTo 0
End Sub
Pourquoi une boucle ? Parce ce que le N° après Ne dépend de l'ordre d'installation des imprimantes sur la machine :rolleyes:...
Bon courage :cool:
 

JNP

XLDnaute Barbatruc
Re : Entête "dynamique" ??

Re :),
Quand à la sélection, ceci (adapté du code de Marc :)) devrait marcher :p...
Code:
Sub test()
Dim MonSaut As HPageBreak, Ligne As Long, I As Integer, Planning As Integer
Planning = Application.InputBox("N° de planning ?", "Selection", , , , , , 1)
I = 1
If Range("A2") = Planning Then
    With ActiveSheet.PageSetup
        .CenterHeader = "&""-,Gras""&24Plannings N° " & Range("A2").Value
    End With
    ExecuteExcel4Macro "PRINT(2," & I & "," & I & ",1,,,,,,,,2,,,TRUE,,FALSE)"
End If
For Each MonSaut In ActiveSheet.HPageBreaks
    I = I + 1
    Ligne = MonSaut.Location.Row
    If Range("A" & Ligne + 1) = Planning Then
        With ActiveSheet.PageSetup
            .CenterHeader = "&""-,Gras""&24Plannings N° " & Range("A" & Ligne + 1).Value
        End With
        ExecuteExcel4Macro "PRINT(2," & I & "," & I & ",1,,,,,,,,2,,,TRUE,,FALSE)"
    End If
Next MonSaut
End Sub
Bonne suite :cool:
 

Discussions similaires

Réponses
1
Affichages
223

Statistiques des forums

Discussions
312 501
Messages
2 089 014
Membres
104 005
dernier inscrit
Maxence