Insérer un tableau dans l'en-tête
Bonjour,
est-il possible d'avoir un tableau dans l'en-tête d'un document Excel ??
Pourquoi cette demande ? Voici la situation :
j'ai un fichier Excel, composé d'une dizaine d'onglets, pour lesquels je dois avoir exactement le même en-tête.
(En tête comportant 3 colonnes par exemple : Logo de l'entreprise, Nom du document, Révision du document)
Chaque onglet est un tableau, différent dans sa composition (nombre de colonnes, taille de chaque colonne).
Puisque ils sont différents, il m'est impossible d'intégrer ce "Tableau en-tête" dans chaque onglet,
car il y aurait interférence avec les largeurs de colonnes de chaque tableau.
J'ai vu qu'une personne avait déjà posé cette question il y a quelques années,
mais sans réponse (https://forum.excel-pratique.com/post45696.html).
Quelqu'un aurait-il une idée ?
Bonjour
Tu peux créer une image de ton logo et de ton tableau à mettre en Entête et insérer ensuite cette image dans ton Entête, soit avec la commande Mise en page, soit par VBA.
Un Code trouvé sur le Net et que j'ai testé (Excel 2003) avec un Bandeau. Il insère l'image dans l'Entête de la Feuille active.
Sub insertionImage_EntetePage()
With ActiveSheet.PageSetup.LeftHeaderPicture
.Filename = _
"D:\Mes documents\Mes images\Bandeau.jpg"
.Height = 1200 ' redéfinit la largeur de l'image
.Width = 200 ' redéfinit la hauteur de l'image
End With
'Remarque Il est nécessaire que « &G » fasse partie de la chaîne
'de la propriété LeftHeader afin que l'image s'affiche dans l'en-tête gauche.
'info issue de l'aide en ligne Excel.
ActiveSheet.PageSetup.LeftHeader = "&G"
End Sub
Cordialement
Merci pour la réponse, mais je ne peux pas avoir ce tableau (que je veux en en-tête) sous forme d'image car des infos de ce tableau vont évoluer pendant l'utilisation du fichier. (Ex : La révision du fichier).
Il serait trop "lourd" de devoir modifier une image à l’extérieur du fichier dès que quelqu'un fait une modif dessus.
N'est-il pas possible d'insérer un vrai tableau dans l'en-tête ?
Bonjour
Peut-être avec ce code :
Sub EntetePage()
Dim i As Integer
For i = 1 To Sheets.Count 'pour toutes les feuilles
With Sheets(i).PageSetup.LeftHeaderPicture
.Filename = "C:\Users\Nadine\Pictures\Logo.jpg" 'Chemin à modifier
.Height = 40 ' redéfinit la largeur de l'image
.Width = 80 ' redéfinit la hauteur de l'image
End With
Sheets(i).PageSetup.LeftHeader = "&G" & " - " & ActiveWorkbook.Name & " - " & Sheets("Feuil1").Range("C2")
'Sheets(i).PageSetup.LeftHeader = "&G" & " - " & Sheets("Feuil1").Range("A2") & " - " & Sheets("Feuil1").Range("C2")
Next i
End Sub
Donc tu dois avoir le logo dans un fichier.
Amicalement
Nad
Oui cela marche, mais mon problème n'est pas de remplir l'en-tête par macro,
c'est d'avoir un tableau.
Je souhaite avoir dans l'en-tête un tableau avec 3 colonnes et des traits de contour.
Mais ce n'est peut-être pas possible...
Re bonjour
Sur mon précédent message, je te disais de faire une photo de ton tableau...
Tu pourrais:
Sur une feuille Excel (autre que ton fichier) mettre ton logo et ton tableau et avec l'appareil photo excel créer une image de ce que tu souhaites mettre en entête et utiliser cette image pour cela.
Cordialement
bonjour
peut etre avec ce code que j'avais utilisé
'CODE POUR ALLER CHERCHER LA PLAGE DEFINIE EN A23 DE LA FEUILLE A
'
Application.ScreenUpdating = False
Sheets("BD").Select
Range(Sheets("BD").Range(Sheets("A").[a23]).Address).Copy
Sheets("A").Select
Range("A25").Select
ActiveSheet.Paste
Application.CutCopyMode = True
Range("A7").Select
a23 c'est ll'adresse du taleau
a25 c'est le coin sup droit ou tu colle
il faudra adapter
Amadéus a écrit :Tu pourrais:
Sur une feuille Excel (autre que ton fichier) mettre ton logo et ton tableau et avec l'appareil photo excel créer une image de ce que tu souhaites mettre en entête et utiliser cette image pour cela.
Cordialement
Bonjour,
Je viens d'essayer cette fonction "Photo" que je ne connaissais pas du tout,
et c'est plutôt pas mal !! Je vais utiliser ça pour avoir le même tableau sur chaque onglet.
J'ai été surpris de constater que cette photo se met à jour si la source est modifiée ! +++
@tulipe_4 : Merci pour ton aide, mais ce que tu as proposé ne solutionne pas mon problème,
un copier/coller d'un tableau d'un onglet vers un autre ne peut pas marcher car les tableaux dans chaque onglet n'ont pas les mêmes formats de colonne. Le copier/coller serait donc "fouareux".
Merci à vous pour l'aide.
Bonjour à vous,
Je ne sais pas si se poste est encore ouvert mais je tente quand même.
j'ai suivis exactement toute la procédure, mais une fois "la photo" faite, est il t'il possible de la mettre en en-tête.
Car si on l'enregistre en image, les liens avec la source ne bouge plus automatiquement.
D'avance merci
Bonjour bilaben,
non il n'est pas possible de mettre l'image en en-tête, malheureusement.
par contre, si tu modifies "l'original" qui a servi à faire l'image, alors les images se mettent à jour automatiquement.
Si tu n'y arrives pas, joins ton fichier pour que l'on t'aide.
piratman a écrit :Bonjour bilaben,
non il n'est pas possible de mettre l'image en en-tête, malheureusement.
par contre, si tu modifies "l'original" qui a servi à faire l'image, alors les images se mettent à jour automatiquement.
Si tu n'y arrives pas, joins ton fichier pour que l'on t'aide.
Merci de ta réponse, j'ai effectivement vu que l'image se mettait automatiquement à jours et cette solution est très bien malheureusement je voulais mettre cette image en en-tête car c'est un tableau qui devait me servir de cartouche.
Par contre, je me galère avec un code pour extraire automatiquement cette image et me la mettre en en-tête, cela fonctionne, par contre ne fonctionne que si une seul image se trouve dans mon fichier, je ne trouve pas la solution pour qu'il aille chercher l'image dans un onglet appelé par exemple "cartouche".
ci dessous mon code (je débute, donc il se peut que mon code soit brouillon)
Sub extraire_img()
Dim sh As Shape, img As Object
Dim ndf As String
For Each sh In ActiveSheet.Shapes
If Left(sh.Name, 1) <> "B" Then
ndf = Range(sh.TopLeftCell.Address).Offset(0, 1).Text
ndf = ActiveWorkbook.Path & "\" & ndf & "1.jpg"
sh.CopyPicture xlScreen, xlPicture
Set img = ActiveSheet.ChartObjects.Add(0, 0, sh.Width, sh.Height)
img.Chart.Paste
img.Chart.Export ndf, "JPG"
img.Delete
End If
Next sh
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
With ActiveSheet.PageSetup.CenterHeaderPicture
.Filename = "D:\Utilisateurs\BBER\Downloads\BB02\1.jpg"
.Height = 10000.25
.Width = 1500.5
End With
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.7)
.TopMargin = Application.InchesToPoints(1.8)
.BottomMargin = Application.InchesToPoints(0.75)
.HeaderMargin = Application.InchesToPoints(0.3)
.FooterMargin = Application.InchesToPoints(0.3)
End With
ActiveSheet.PageSetup.CenterHeader = "&G"
End Sub
Je suis désolé mais sur cette dernière question, je ne pourrai t'aider. Mais la solution m'intéresse !
J'espère qu'un maître d'Excel va te venir en aide !