IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Excel, problème d'utilisation en-tête et le pied de page


Sujet :

Delphi

  1. #1
    Inactif  
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut Excel, problème d'utilisation en-tête et le pied de page
    Bonjour à tous;
    J'apprends à utiliser les en-têtes et le pied de pages de mon classeur Excel, j'utilise Excel 2003 sur mon poste.
    j'ai trouvé comme tuto le lien suivant:
    https://fring.developpez.com/vba/excel/entetepiedpage/

    Mais ce n'est pas tout à fait ce que je dois utiliser comme code.
    Exemple: le nom du fichier, pour moi, c'est: '&N'; pour l'heure, c'est '&H';
    Je n'ai pas réussi à affichier ni la Date , ni une image
    ça fonctionne bien directement avec Excel, lorsque je utilise l'éditeur de pied de page le codeest bien &[Date], ou &[image],
    Mais, avec delphi, ça ne fonctionne pas, car, ça ne doit pas être ce code à rappeler
    l'heure c'est '&H'. et pourtant, ça m'affiche bien dans l'éditeur Excel &[Heure]
    J'ai pas réussi à mettre une image en en-tête non plus, l'exemple d'insertion de logo ne fonctione pas.
    Tous les exemples que j'ai lu, sont tous identiques, mais, ils ne fonctionnent pas.

    pour la date, j'ai seulement contourné le problème :
    OleApplication.ActiveSheet.PageSetup.LeftHeader:= FormatDateTime('dd/mm/yyyy',Now); mais j'aimerais bien apprendre à utiliser &[Date]

    c'est surtout le logo que j'aimerais réussi à afficher: &[image]

    Pourriez-vous m'aider, car, visiblement, d'après la version utilisée, le code à rappeler doit pas être le même.

    En vous remercient pour votre aide,
    Sincères salutations à tous

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour,

    je sais afficher des entêtes dans Excel, mais je n'ai que Excel 2000 et les images ne peuvent pas être incluses dans les entêtes.

    Pour Excel 2003, je pense que tu as essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Sheet.PageSetup.LeftHeaderImage.FileName := filename ;
    A+
    Charly

  3. #3
    Inactif  
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    bonjour merci de m'avoir répondu
    oui, j'ai essayé, cç marche pas
    par contre, j'ai trouvé pour la date '&J'; //date du jour
    Pour l'image , je continu à chercher
    Merci beaucoup pour la réponse
    cordialement

  4. #4
    Inactif  
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    j'ai essaué les code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OleApplication.ActiveSheet.PageSetup.LeftHeader := '&[Image]';
    OleApplication.ActiveSheet.PageSetup.LeftHeaderPicture.Filename:= 'C:\image.bmp';
    OleApplication.ActiveSheet.PageSetup.LeftHeaderPicture.Height := 10;
    OleApplication.ActiveSheet.PageSetup.LeftHeaderPicture.Width := 20;
    OleApplication.ActiveSheet.PageSetup.LeftHeader := '"&G"';
    c'est l'exemple que j'ai vu , mais, ça marche pas

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    j'ai essayé toutes les lettres pour voir :

    &A Nom de la feuille
    &B Rien
    &C Rien
    &D Rien
    &E Rien
    &F Rien
    &G Rien
    &H Heure actuelle
    &I Rien
    &J Date du jour
    &K Rien
    &L Rien
    &M Rien
    &N Nom de la feuille
    &O Rien
    &P Numéro de page
    &Q Rien
    &R Rien
    &S Rien
    &T Numéro de page ou nombre de pages ??
    &U Rien
    &V Rien
    &W Rien
    &X Rien
    &Y Rien
    &Z Rien
    &a Nom de la feuille (les minuscules fonctionnent de la même façon)

  6. #6
    Inactif  
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    oui, moi aussi &U = souligné

  7. #7
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Chez moi, &U ne fonctionne pas mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheet.PageSetup.CenterFooter := '&B&"Cooper Black,Regular"&24Texte à imprimer';
    Fonctionne bien (texte police Cooper Black, taille 24 barrée)

  8. #8
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Je dois avoir un excel Français, car chez moi :
    &S = Souligné
    &G = Gras

  9. #9
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Finalement, il semble impossible de mettre une image dans l'entête d'un fichier Excel 2000.
    Pour contourner le problème, il faut coller une image dans la cellule A1, puis répéter la première ligne sur chaque page par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           Sheet.PageSetup.PrintTitleRows := '$1:$1'  ;
    Ainsi on a l'image en haut de chaque page comme dans un entête.

    il faut aussi régler la hauteur de la première ligne sur la hauteur de l'image et enfin si l'on veut on peut aussi réduire la hauteur de l'entête.

    Je pense que cela peut s'appliquer à toutes les versions d'Excel.

    A+
    Charly

  10. #10
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour,

    voici un exemple complet avec image en haut de chaque page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    procedure TForm2.Button3Click(Sender: TObject);
    Const
      xlPageBreakAutomatic =	-4105  ; //	Excel will automatically add page breaks.
      xlPageBreakManual =	-4135 ; //	Page breaks are manually inserted.
      xlPageBreakNone =	-4142  ; //	Page breaks are not inserted in the worksheet.
      xlWBATWorksheet =	-4167  ; // Nouvelle feuille de calcul
    var
      Bitmap: TBitmap ;
      Picture: TPicture ;
      H : Integer ;
      Excel: Variant ;
      Sheet: OleVariant ;
      Filename: String ;
      aRange  : AnsiString ;
      vCell : variant ;
     
    begin
      filename:=ExtractFilePath(Application.ExeName)+'\logo.bmp';
      // Chargement du Jpeg dans le presse papier
      Bitmap:= TBitmap.Create ;
      try
        Picture := TPicture.Create ;
        try
    //      Picture.LoadFromFile('D:\DESSIN\Charly.jpg') ;      // Test avec un Jpeg
          Picture.LoadFromFile(FileName) ;
          Bitmap.Width := Picture.Width ;
          Bitmap.Height := Picture.Height ;
          H := Round(0.77 * BitMap.Height) ;
          Bitmap.Canvas.Draw(0, 0, Picture.Graphic) ;
          Clipboard.Assign(Bitmap);
        finally
          Picture.Free ;
        End ;
      finally
        Bitmap.Free ;
      end;
      // Ouverture d'Excel
      Excel:=CreateOleObject('Excel.application');
      Excel.Visible:=False;
      Excel.WorkBooks.Add(xlWBATWorksheet);
      Sheet:=Excel.ActiveSheet;
      Sheet.Name := 'Ma feuille';
      // Pied de page
      Sheet.PageSetup.CenterFooter := '&"Cooper Black,Regular"&14Date : '+'&J';
      Sheet.PageSetup.RightFooter := 'Page &P / &T';
      // marge haute : 1 cm
      Excel.ActiveSheet.PageSetup.TopMargin := 1/0.035;
      // Orientation
      Sheet.PageSetup.Orientation :=1 ;     // Portrait   2 = Landscape
      Sheet.PageSetup.PrintGridLines := True;    // pour voir la taille des cellules
      // Hauteur de la ligne 1 pour accueillir l'image
      Excel.ActiveSheet.Rows[1].RowHeight := H ;
      // Copie de l'image en A1
      Sheet.Range['a1','a1'].Select;
      Sheet.Paste;
      // Police Ligne 3
      Excel.ActiveSheet.Rows[3].Font.Name := 'Arial';
      Excel.ActiveSheet.Rows[3].Font.Size := 12;
      Excel.ActiveSheet.Rows[3].Font.Color := clBlue;
      Excel.ActiveSheet.Rows[3].Font.Bold := True;
      // Ecriture en page 1
      Sheet.Cells[3,3].Value:='Exemple de fichier Excel pied de page';
      aRange := 'D8';
      vCell := Sheet.Range[aRange];
      vCell.Value := 'Texte en page 1' ;
      aRange := 'A10';
      vCell := Sheet.Range[aRange];
      vCell.Select ;
      vCell.Value := 'Ligne 10' ;
      // Ajout d'un saut de page en ligne 12
      Sheet.Rows[12].PageBreak := xlPageBreakManual ;
      // Ecriture page 2
      aRange := 'D16';
      vCell := Sheet.Range[aRange];
      vCell.Value := 'Nouvelle page' ;
      // Répétition de la ligne 1 dans chaque page
      Sheet.PageSetup.PrintTitleRows := '$1:$1'  ;
      Excel.Visible:=True;
      Excel.ActiveSheet.PrintPreview;
      ShowMessage('Fermeture d''Excel') ;
      Excel.Quit ;
      Excel := unassigned;
    end;
    A+
    Charly

  11. #11
    Inactif  
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Bonjour Charly;
    Merci pour tes réponse; Un grand merci pour ton aide
    ainsi que pour ton site, que j'irais voir .
    J'essayerais ton code, d'ici quelques jours et je te tiendrais informé,
    J'avais réussi à mettre une image en en-tête, mais je ne sais plus comment, je crois que j'avais prédéfini le code dans l'éditeur d'en-tête, puis défini le FileName dans mon code.
    j'utilise Microsoft 2003, apparemment en français aussi, (??), OS win7 pro... avec du code VBA en référence comme tuto, j'ai vu que certaines valeurs changeaient également et aussi, quelques constantes (???)
    C'est pour mon contrôle de glycémie que je fais dans Excel, pour mon toubib, et elle aimerais que je rajoute mon nom et N° SS, en haut à gauche, alors plutôt que de le faire manuellement sur la feuille après impression, je voudrais le faire en utilisant l'en-tête d'Excel avec Delphi... si j'utilise la première ligne ça me décale tout mon tableau et de ce fait, tout mon code Delphi.
    Merci,
    très cordialement

  12. #12
    Inactif  
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Bonjour Charly,
    Je reviens vers ce post suite à ton aide ;
    J'ai trouvé voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OleApplication.ActiveSheet.PageSetup.LeftHeader := '&F';    
    OleApplication.ActiveSheet.PageSetup.LeftHeaderPicture.Filename:= 'C:\image.bmp';
    Pourtant, dans Excel en-tête pied de page c'est bien ce texte qu'il y à : '&[Image]'; (????);
    J'ai réussi à trouver ('&F'), en mettant une image directement depuis Excel, puis, j'ai mis un Edit dans ma forme, puis j'ai rappeler le code.
    Edit1.text:= OleApplication.ActiveSheet.PageSetup.LeftHeader; et j'ai eu comme résultat dans l'édit. '&F' Pourquoi '&F' ???,
    J'utilise Excel 2003.
    J'ai également tester ton code, il met une image dans la feuille en passant par le presse-papier, mais, ça j'avais réussi en sélectionnant la cellule Excel, et avec un Opendialogue.FileName ,
    j'insert l'image.
    Je la redimensionne aussi. Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Image_logo_pageClick(Sender: TObject);
    begin
    OleApplication.WorkSheets.Item['Feuil1'].PageSetup.LeftHeader := '&F';
    OleApplication.WorkSheets.Item['Feuil1'].PageSetup.LeftHeaderPicture.Filename:= ExtractFilePath(Application.ExeName)+'Dossier Images\rose.png';   Ou bien, (OpenDialog1.FileName);
    OleApplication.ActiveSheet.PageSetup.LeftHeaderPicture.Height := 30;
    OleApplication.ActiveSheet.PageSetup.LeftHeaderPicture.Width := 50;
    OleApplication.ActiveWorkBook.Save;
    end;
    ou bien dans une cellule Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If (OpenDialog1.Execute) Then
    begin
    Try
    OleApplication.WorkSheets.Item['Feuil1'].Range[Adresse_Cellule.Text].Select;
    OleApplication.WorkSheets.Item['Feuil1'].Pictures.Insert(OpenDialog1.FileName);
    OleApplication.ActiveWorkBook.Save;
    end;
    Pour certaines formules aussi, ce n'est pas les mêmes formules que je dois mettre dans mon code il est différent, pourtant, ça m'affiche la bonne formule dans la barre de formule d'Excel, (???)
    Un grand merci pour ton aide,
    Bien cordialement

  13. #13
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour Eric,

    bravo d'avoir persévéré et trouvé ! je vais tester de mon coté sur Excel 2000 par curiosité et te ferai part du résultat. Je pense que ton post pourra aussi servir à d'autres !

    A+
    Charly

  14. #14
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bon, en Excel 2000 cela ne fonctionne pas :

    LeftHeaderPicture non supportée par l'objet automation
    je m'en doutais, car j'avais lu qu'on ne pouvait par mettre d'image dans les entêtes d'Excel 2000. Mais 2000, c'était il y a 19 ans déjà !!

    donc la seule solution c'est de mettre l'image en cellule A1 et de répéter la première ligne dans chaque page ...

    A+
    Charly

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2007] Orientation de l'en-tête et du pied de page
    Par TheGzD dans le forum Word
    Réponses: 5
    Dernier message: 13/01/2012, 19h32
  2. [WD-2007] verrouiller l'en tête et le pied de page
    Par rokirakat dans le forum Word
    Réponses: 2
    Dernier message: 20/06/2011, 15h54
  3. Réponses: 6
    Dernier message: 21/05/2007, 20h45
  4. [VBA Excel] problème d'utilisation fct xlSheetVeryHidden
    Par snip_ernet dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 26/07/2006, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo