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 :

Imposible de spécifier que je veux le numéro de la page et le nombre de total de page ? [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut Imposible de spécifier que je veux le numéro de la page et le nombre de total de page ?
    Bonjour à tous et merci de votre temps et de votre aide.

    J'ai un truc étrange avec le pied de page d'une feuille que je défini par VBA.
    bien que mon code spécifie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .CenterFooter = "Page &P de &N" 'ce code vient directement de l'enregistreur de macro
    Ce que j'obtiens à l'impression c'est "Page 1 de".
    Je suis allez voir le pied page via l'interface et en effet il n'est défini que comme "Page &P de".
    Le VBA ne fait donc fait qu'une assignation partielle de la propriété.

    J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .CenterFooter = "Page &P"
    Et là il ne reste que le mot "Page" sans même l'espace.

    Si on passe par l'interface on est capable d'assigner "Page &P de &N" et d'avoir le nombre total de page.

    À date j'assigne "Page &P &N" ce qui me permet au moins d'avoir le numéro de la page courante mais ce n'est pas très propre.

    Je ne sais pas si cela à de l'importance mais la feuille n'est pas dans le même classeur que le code de mise en forme.
    C'est une copie de la page du classeur courant dans un nouveau classeur qui ne contient plus que ce qui est actuellement affiché sans les macros et les autres fonctionnalités du classeur courant.

    Si quelqu'un a une idée, je suis preneur.

    P.S.

    J'ai essayé "Page &P de &N &F" et il s'arrête toujours au &N.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    tu devrais préciser la version excel.
    Sur 2010 aucun problème.
    eric

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Comme mentionné dans le titre je suis dans Excel 2010 et cela ne fonctionne ni sur mon poste, ni sur celui de mon collègue.
    Et pour info le numéro de version est 14.0.7227.5000 (32 bits).

    De plus je viens de refaire le test :
    J'enregistre dans le classeur une macro qui modifie le pied de page en incluant Page de &N de &P.
    J'efface le pied de page.
    Je lance la macro ... et pas de nombre total, juste Page 1 de.

    Plus étrange, je relance cette macro et j'obtiens Page 1 d.

    J'a ajouté au code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Application.PrintCommunication = False
        With ActiveSheet.PageSetup
            .CenterFooter = ""
        End With
        Application.PrintCommunication = True
    Et là. cela stabilise le bug à Page 1 de.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Tout cela est assez étrange, en effet.
    Question : n'y aurait-il pas un conflit avec les marges du document concerné ?
    As-tu essayé (ne mange pas de pain) d'aider VBA à "aligner sur les marges" ? -->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.AlignMarginsHeaderFooter = True
    Essaye, à tout hasard.
    Je ne vois personnellement vraiment rien d'autre à te proposer. Etrange, tout cela ...

    EDIT : deux autres questions quand même :

    1) que se passe-t-il avec ce texte : "blablablablabla blibliblibli" en lieu et place -->> est-il imprimé totalement ou tronqué ?
    2) que se passe-t-il en utilisant leftfooter en lieu et place de centerfooter ? -->> toujours le même phénomène ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    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
    Bonjour.

    Le probleme est explique ici. Il existe depuis Excel 2010 et est cause par la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.PrintCommunication = False
    Et une solution y est proposee : Supprimer toutes les commandes "PrintCommunication = "
    Cordialement

    Docmarti.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Merci Docmarti.
    Hé bé !
    Voilà donc une propriété créée dans un but d'amélioration (de la vitesse), mais qui s'avère être finalement un boulet dans certains cas .
    Bon .. Je suis heureux d'être resté avec ma version 2007.

    As-tu observé, Docmarti, que l'un des intervenants dans la discussion de ton lien a un pseudo (DocMarten) presque identique au tien ?
    Ce qui m'a "frappé", c'est la solution dont il dit qu'elle marche chez lui, à savoir l'utilisation d'une variable toto pour "construire" à sa guise le texte à mettre dans l'entête, puis l'instruction genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.LeftHeader = toto
    plutôt que de se laisser "bercer" par la facilité de la notation proposée.
    Je ne peux essayer, n'ayant que 2007
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Merci Docmarti, cela fonctionne en effet.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. Qu'est ce que cela veux dire un "code propre" selon-vous ?
    Par kagura dans le forum Général Conception Web
    Réponses: 45
    Dernier message: 09/02/2016, 14h22
  2. Réponses: 11
    Dernier message: 13/07/2006, 10h08
  3. [hibernate][test unitaire]j'arrive pas à inserer ce que je veux
    Par mehdi_swatch dans le forum Hibernate
    Réponses: 1
    Dernier message: 02/06/2006, 16h31
  4. La molette ne fait plus ce que je veux avec Firefox
    Par ggnore dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 21/02/2006, 16h33
  5. Spécifier que le contenu d'un Memo est du type Integer
    Par nico0007 dans le forum Langage
    Réponses: 2
    Dernier message: 25/10/2005, 16h08

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