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

Macros et VBA Excel Discussion :

Pied de page par macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 149
    Points : 63
    Points
    63
    Par défaut Pied de page par macro
    Salutations,

    J'ai beaucoup parcouru google et même l'excellentissime http://fring.developpez.com/vba/excel/entetepiedpage/
    Malheureusement, je n'arrive pas à obtenir ce que je veux sur mon EXCEL 2003, peut-être arriverez vous à m'éclairer. Voici ma problématique.

    Je dispose d'une 20ène d'onglets.

    Dans un de ces onglets, lorsque j'imprime, je souhaite faire apparaitre un pied de page (gauche) contenant la valeur des formules situées en :
    A1 ajouter un espace A2

    Il s'agit donc de placer le code macro pour pour qu'il agisse à l'aperçu avant impression seulement de l'onglet actif (sans le nommer).
    Comment le déclencher ? Comment recopier le contenu de ces cellules en bas de page ?

    Merci.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Dans ta macro, tu testes le nom des onglets à traiter, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro()
    Dim Feuilles As Variant
    Feuilles = Array("Feuil2", "Feuil3", "Feuil5")
    For Each Item In Feuilles
        'ici ton code
    Next Item
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 149
    Points : 63
    Points
    63
    Par défaut
    Je me suis mal exprimé.
    J'ai corrigé ma formulation dans le message initial.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Dans cet onglet, utilise deux cellules qui sont inutilisées dans le autres; tu mets (par exemple) :
    en IV1 :
    en IV2 :
    et pour tous onglets, tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub toutes_feuilles()
    Dim x As Byte
     
    For x = 1 To Sheets.Count
        With Sheets(x).PageSetup
            'pied de page
            .LeftFooter = Sheets(x).[IV1] & " " & Sheets(x).[IV2]
        End With
    Next x
     
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 149
    Points : 63
    Points
    63
    Par défaut
    Merci pour votre aide, mais je cherche vraiment un moyen "plus propre" et clair dans mon esprit de le faire pour une feuille et non pas toute les feuilles !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub declenchement-lorsque-apercu-de-la-page-active()
        With Sheets(x).PageSetup
            'pied de page
            .LeftFooter = Sheets(x).[A1] & " " & Sheets(x).[A2]
        End With
    End Sub
    Ma syntaxe doit être fausse, mais pourquoi ne pas le faire marcher comme ça ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.LeftFooter = [A1] & " " & [A2]
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 149
    Points : 63
    Points
    63
    Par défaut
    Ce code me déclenche une erreur lorsque je le mets tel quel dans le code macro de ma feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.LeftFooter = [A1] & " " & [A2]
    Erreur de compilation :
    Instruction incorrecte à l'extérieur d'une procédure

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Ca fonctionne ici. A moins que la feuille soit protégée.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  9. #9
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Dans l'événement Change de la feuille peut-être.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Or Target.Address = "$A$2" Then
      If PageSetup.LeftFooter <> Cells(1, 1) & " " & Cells(1, 2) Then
       PageSetup.LeftFooter = Cells(1, 1) & " " & Cells(1, 2)
     End If
    End If
    End Sub

    Docmarti.
    Cordialement

    Docmarti.

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 149
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Ca fonctionne ici. A moins que la feuille soit protégée.
    Effectivement, ma feuille est protégée et doit l'être.
    En revanche, le fait d'enlever la protection, ne change rien…
    Existe-t-il un moyen de résoudre mon problème ?

    Sinon, ce code là, au changement d'état, ne fonctionne pas du tout. D'ailleurs, réaliser un déclenchement au changement de valeur d'une cellule ne peut pas convenir à mon utilisation. J'aimerais vraiment que ce soit l'aperçu avant impression qui déclenche ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Or Target.Address = "$A$2" Then
      If PageSetup.LeftFooter <> Cells(1, 1) & " " & Cells(1, 2) Then
       PageSetup.LeftFooter = Cells(1, 1) & " " & Cells(1, 2)
     End If
    End If
    End Sub
    Or, même ce code là ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_BeforePrint(Cancel As Boolean)

  11. #11
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour,
    Module placer dans Thisworkbook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    'Test du nom de la feuille
    If ActiveSheet.Name = "Feuil1" Then
    'desactive la protection
    ActiveSheet.Unprotect Password:="0000"
    'effectue les modifications du pied de page
    ActiveSheet.PageSetup.LeftFooter = [A1] & " " & [A2]
    'réactive la protection de la feuille
    ActiveSheet.Protect Password:="0000", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End If
    End Sub

  12. #12
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Ce code me déclenche une erreur lorsque je le mets tel quel dans le code macro de ma feuille :
    Publie ce code.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  13. #13
    Invité
    Invité(e)
    Par défaut Bonjour,
    Citation Envoyé par iIncoming Voir le message
    Ce code me déclenche une erreur lorsque je le mets tel quel dans le code macro de ma feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.LeftFooter = [A1] & " " & [A2]
    Erreur de compilation :
    Instruction incorrecte à l'extérieur d'une procédure
    ce message d'erreur est cohérent car si tu copie colle le code en dehors d'une sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sub test()
     
    end sub
     
    msgbox "toto" 'debug pas contant
    petite précision:
    ça peut semblé invraisemblable, mais la mise en page est assujettie a l'imprimante sélectionnée au moment de l’affectation de la mise en page!

    ainsi une imprimante traceur, ne dispose pas d'entêtes et pieds de pages donc erreur!

    de plus si le contenu de l'entête ce trouve dans la cellule Feuil2!A1 tu as toutes l’attitude pour pour utiliser l’événement change pour modifier ta mise en page!
    Dernière modification par Invité ; 23/12/2013 à 14h24.

  14. #14
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    ce message d'erreur est cohérent car si tu copie colle le code en dehors d'une sub
    On ne me l'avais encore jamais faite, celle-la !
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

Discussions similaires

  1. Pied de page par macro
    Par operaq dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/03/2014, 13h49
  2. [XL-2007] impression des tableaux sur une seule page par macro
    Par free_dom dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/06/2011, 11h21
  3. Entete et pied de page par macro sur classeur entier
    Par ediurne dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/04/2011, 12h09
  4. [Toutes versions] Insérer Pied de page par vba sur dernière page uniquement
    Par vieuxmonsieur dans le forum VBA Word
    Réponses: 11
    Dernier message: 15/05/2010, 21h24
  5. completer entre détails et pied de page par des traits
    Par marcuscircus dans le forum IHM
    Réponses: 3
    Dernier message: 07/06/2008, 11h53

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