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

Excel Discussion :

Insertion du n° de page dans cellule


Sujet :

Excel

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut Insertion du n° de page dans cellule
    Bonjour à tous,

    Je cherche un moyen pour insérer le numéro de page (p.ex. "page 2/5") dans une cellule de ma feuille excel. Je ne sais pas le faire autrement qu'avec l'en-tête/pied de page, que je ne trouve pas assez flexible pour mon "cartouche" de feuille.
    Existe-t-il une fonction Excel ou une méthode VBA???

    Merci d'avance pour votre aide!

    humbp

  2. #2
    Membre émérite
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Par défaut Numéros de page et zones d'impression
    Bonjour,

    La numérotation des pages dépend de l'imprimante utilisée et de l'ordre d'impression des pages (de haut en bas et de gauche à droite). C'est pourquoi la numérotation se fait via l'entête et le pied de page.

    Un moyen manuel de contourner est de prédéfinir des zones d'impressions.

    Il est possible de définir plusieurs zones d'impressions sur une même feuille en gardant la touche Ctrl enfoncée au fur et à mesure que l'on définit les zones. L'impression des pages se fait alors dans le même ordre que celui avec lequel ont été définie les zones.

    Une fois les zones définies il est alors possible manuellement de positionner les numéros de pages dans la feuille.

    Peut-être existe-t-il d'autres solutions mais je ne les connais pas

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    Tu peux insérer cette fonction dans un module standard de ton classeur:

    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
    Function NumeroPage() As Variant
        'Adapté d'une procédure de
        'Laurent Longre
        Dim VPC As Integer, HPC As Integer
        Dim VPB As VPageBreak, HPB As HPageBreak
        Dim Ws As Worksheet
        Dim Col As Integer, Ligne As Long
     
        Set Ws = Application.Caller.Worksheet
        Ligne = Application.Caller.Row
        Col = Application.Caller.Column
     
        If Ws.PageSetup.Order = xlDownThenOver Then
            HPC = Ws.HPageBreaks.Count + 1
            VPC = 1
            Else
            VPC = Ws.VPageBreaks.Count + 1
            HPC = 1
        End If
     
        NumeroPage = 1
        For Each VPB In Ws.VPageBreaks
            If VPB.Location.Column > Col Then Exit For
            NumeroPage = NumeroPage + HPC
        Next VPB
     
        For Each HPB In Ws.HPageBreaks
            If HPB.Location.Row > Ligne Then Exit For
            NumeroPage = NumeroPage + VPC
        Next HPB
     
        NumeroPage = "Page " & NumeroPage
    End Function

    et ajoute cette formule dans les cellules de ta feuille:
    =NumeroPage()



    michel

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    ouisansdoute: Je veux faire un formulaire automatique, comportant notamment le nombre de page et le numéro de page actuel (genre "page 1 de 3"). L'implémentation manuelle n'est pour moi pas une bonne solution, car l'utilisateur risque d'oublier d'implémenter ce nombre correctement!

    SilkyRoad: La fonction fournie fonctionne, mais elle ne correspond pas exactement à ce que je recherche .

    L'idée de mon formulaire est d'avoir un en-tête de plusieurs ligne et colonnes incluant le numéro de page et le nombre de page total, et étant répété en haut de chaque page imprimée. En principe, je souhaite avoir les fonctions excel "en-tête et pied de page", mais avec un formatage de l'en-tête plus complet.
    Pour donner une idée, je joins un fichier d'essais. J'espère avoir été suffisament clair . Dans la cellule N9, je cherche à placer le "Page: 1/2" visible dans le pied de page....
    Fichiers attachés Fichiers attachés

  5. #5
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    Bonjour,

    As tu essayé de mettre dans l'entête &[Page] / &[Pages], t'appliquer le format désiré à cet en-tête et de "jouer" avec Haut et en-tête de l'onglet Marge.

    Tu peux aussi ajouter des espaces insécables ( maintients la touche [alt] appuyée puis tape sur le pavé numerique 0160 ).

    Avec cette méthode, j'arrive à afficher le numéro de page presque n'importe où dans ton cartouche.
    Tu peux même descendre ton entête jusqu'au pied de page Ce qui permets de "jongler" lorsque tu as plus de 255 caractères.

    Cependant si tu dois imprimer sur plusieurs imprimantes différentes, les réglages ne seront pas les mêmes donc....

    EDIT sur Excel, le pas est de 0.5 cm, si tu veux être plus précis, fais le par macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.HeaderMargin = Application.InchesToPoints(1.2)
    ici 1.2 représente le nombre de pouces à convertir en point, sachant qu'un pouce 1" = 2.54 cm tu devrais t'en sortir. Si tu contrôles tes marges, tu auras 3 d'inscrit mais la mesure réelle sera de 3.048 cm. Si tu cliques sur Ok, ton en-tête remontes.
    cordialement

  6. #6
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut
    Merci pour cette réponse!

    Effectivement, je peux "jongler" avec cette méthode, le résultat est atteint, c'est l'important.

    Dommage tout de même que l'information du nombre de page de l'en-tête ne soit pas récupérable dans la macro...

    encore merci pour l'aide précieuse.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Expert VBA
    Inscrit en
    Juin 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 7
    Par défaut
    7 ans plus tard.....

    Je suis tombé sur ce forum très ancien mais qui peut sans doute servir encore aujourd'hui.
    Alors je propose une solution très simple que je viens d'utiliser.
    Ma solution n'est valable que si le nom des feuilles sont tous formatés de la même manière.

    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
    Function NbFeuilleCell(NomFeuilleActive As String) As String
    Dim Feuille As Worksheet
    Dim NbFeuille As Integer
    Dim NumFeuilleActive As Integer
    NbFeuille = 0
    NumFeuilleActive = 0
     
    For Each Feuille In ThisWorkbook.Worksheets
        If Feuille.Name Like "Cell*" And Feuille.Visible Then NbFeuille = NbFeuille + 1
        If Feuille.Name = NomFeuilleActive Then NumFeuilleActive = NbFeuille
    Next Feuille
     
    NbFeuilleCell = NumFeuilleActive & "/" & NbFeuille
     
    End Function
    A disposition si besoin

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

Discussions similaires

  1. Insertion/imposition Saut de page dans un état
    Par kedmard dans le forum IHM
    Réponses: 6
    Dernier message: 10/02/2012, 10h40
  2. Eviter saut de page dans cellules fusionnées
    Par guga24 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2010, 16h46
  3. VBA : Insertion d'un saut de page dans WORD
    Par Actarus69 dans le forum VBA Word
    Réponses: 1
    Dernier message: 25/04/2006, 13h05
  4. [HTML] Problème insertion d'une image de fond dans cellule
    Par LE NEINDRE dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 31/03/2006, 11h56
  5. [javascript]charger une page dans une cellule
    Par Destampy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/05/2005, 17h21

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