Comment puis-je insérer un numéro de page dans une cellule exel ?
2 réponses
CHARTIER NATHALIE
Je cherche à insérer les numéros de page d'une feuille excel dans le corps
même d'une cellule et non pas en entête ou pied de page.
Exemple : Page 1 de 6
Bien sûr, les numéros doivent pouvoir se calculer eux même.
Merci d'avance à tous.
Nathalie
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Dédé
Salut Nathalie !
Ben peut-être un début avec la fonction =info("nbfich") ...
Autrement, cela devrait se trouver dans l'en-tête ou le pied de page de ton classeur ...
Salutations Dédé
"CHARTIER NATHALIE" <CHARTIER a écrit dans le message de news:
Je cherche à insérer les numéros de page d'une feuille excel dans le corps même d'une cellule et non pas en entête ou pied de page. Exemple : Page 1 de 6 Bien sûr, les numéros doivent pouvoir se calculer eux même. Merci d'avance à tous. Nathalie
Salut Nathalie !
Ben peut-être un début avec la fonction =info("nbfich") ...
Autrement, cela devrait se trouver dans l'en-tête ou le pied de page de ton
classeur ...
Salutations
Dédé
"CHARTIER NATHALIE" <CHARTIER NATHALIE@discussions.microsoft.com> a écrit
dans le message de
news:08613C89-5333-42E2-960D-6E9DA56540DC@microsoft.com...
Je cherche à insérer les numéros de page d'une feuille excel dans le corps
même d'une cellule et non pas en entête ou pied de page.
Exemple : Page 1 de 6
Bien sûr, les numéros doivent pouvoir se calculer eux même.
Merci d'avance à tous.
Nathalie
Ben peut-être un début avec la fonction =info("nbfich") ...
Autrement, cela devrait se trouver dans l'en-tête ou le pied de page de ton classeur ...
Salutations Dédé
"CHARTIER NATHALIE" <CHARTIER a écrit dans le message de news:
Je cherche à insérer les numéros de page d'une feuille excel dans le corps même d'une cellule et non pas en entête ou pied de page. Exemple : Page 1 de 6 Bien sûr, les numéros doivent pouvoir se calculer eux même. Merci d'avance à tous. Nathalie
PMO
Bonjour,
Un code macro qui solutionnera votre problème en bonne partie. (malheureusement pas de manière exhaustive car il y a des cas où je n'ai pas voulu m'aventurer).
'*************************** Option Explicit Sub NumerotationPages() Dim reponse% Dim ecart& Dim MYCOL& Dim R As Range Dim NoDo As Boolean Dim i& Dim nbPage& Dim HPS As HPageBreaks Dim first& Dim totalHeight! Dim tempo! Dim nbLig& Dim cpt& Dim T&() On Error GoTo Erreur reponse% = MsgBox(prompt:="Pour l'exécution de ce programme " & _ "il est nécessaire d'effacer les sauts de " & _ "page définis par l'utilisateur" & vbCrLf & _ "et de les remplacer par les sauts de page par défaut." & _ vbCrLf & vbCrLf & "Voulez-vous continuer ?", _ Buttons:=vbYesNo + vbInformation) If reponse% = 7 Then Exit Sub '---- Demande la colonne où les N° de page s'afficheront ---- Set R = Application.InputBox _ (prompt:="Veuillez sélectionner une cellule qui déterminera" & _ " la colonne dans laquelle apparaîtront les numéros de page", _ Type:=8) MYCOL = R.Column '---- Validité de la colonne (si données on sort) ---- If Not IsEmpty(Range(Cells(1, MYCOL), Cells(1, MYCOL))) Or _ Not IsEmpty(Range(Cells(65536, MYCOL), Cells(65536, MYCOL))) Or _ Range(Cells(1, MYCOL), Cells(1, MYCOL)).End(xlDown).Row _ < 65536 Then NoDo = True If NoDo Then MsgBox prompt:="La colonne ''" & MYCOL & _ "'' contient des données." & vbCrLf & vbCrLf _ & "Veuillez choisir une autre colonne pour les numéros de page.", _ Title:="Programme stoppé", Buttons:=vbExclamation Exit Sub End If '---- Divers traitements et variables à renseigner ---- With ActiveSheet .ResetAllPageBreaks ecart& = .UsedRange.Row nbLig& = .UsedRange.Rows.Count Set HPS = .HPageBreaks End With first& = HPS(1).Location.Row - 1 nbPage& = HPS.Count + 1 ReDim T&(1 To nbPage&) T&(1) = first& T&(UBound(T&)) = nbLig& + ecart& - 1 totalHeight! = Range("a1:a" & first& & "").Height '---- Recherche des bordures basses ---- cpt& = 1 For i& = first& + 1 To nbLig& + ecart& - 1 If tempo! > totalHeight! Then cpt& = cpt& + 1 T&(cpt&) = i& - 2 i& = i& - 1 tempo! = 0 End If tempo! = tempo! + Rows(i&).Height Next i& '---- Inscription des N° de page ---- Application.ScreenUpdating = False For i& = 1 To UBound(T&) Range(Cells(T&(i&), MYCOL), Cells(T&(i&), MYCOL)) = _ "Page " & i& & "/" & nbPage& Next i& '------------------- Erreur: Application.ScreenUpdating = True End Sub '***************************
Meilleures salutations.
PMO Patrick Morange
Je cherche à insérer les numéros de page d'une feuille excel dans le corps même d'une cellule et non pas en entête ou pied de page. Exemple : Page 1 de 6 Bien sûr, les numéros doivent pouvoir se calculer eux même. Merci d'avance à tous. Nathalie
Bonjour,
Un code macro qui solutionnera votre problème en bonne partie.
(malheureusement pas de manière exhaustive car il y a des cas
où je n'ai pas voulu m'aventurer).
'***************************
Option Explicit
Sub NumerotationPages()
Dim reponse%
Dim ecart&
Dim MYCOL&
Dim R As Range
Dim NoDo As Boolean
Dim i&
Dim nbPage&
Dim HPS As HPageBreaks
Dim first&
Dim totalHeight!
Dim tempo!
Dim nbLig&
Dim cpt&
Dim T&()
On Error GoTo Erreur
reponse% = MsgBox(prompt:="Pour l'exécution de ce programme " & _
"il est nécessaire d'effacer les sauts de " & _
"page définis par l'utilisateur" & vbCrLf & _
"et de les remplacer par les sauts de page par défaut." & _
vbCrLf & vbCrLf & "Voulez-vous continuer ?", _
Buttons:=vbYesNo + vbInformation)
If reponse% = 7 Then Exit Sub
'---- Demande la colonne où les N° de page s'afficheront ----
Set R = Application.InputBox _
(prompt:="Veuillez sélectionner une cellule qui déterminera" & _
" la colonne dans laquelle apparaîtront les numéros de page", _
Type:=8)
MYCOL = R.Column
'---- Validité de la colonne (si données on sort) ----
If Not IsEmpty(Range(Cells(1, MYCOL), Cells(1, MYCOL))) Or _
Not IsEmpty(Range(Cells(65536, MYCOL), Cells(65536, MYCOL))) Or _
Range(Cells(1, MYCOL), Cells(1, MYCOL)).End(xlDown).Row _
< 65536 Then NoDo = True
If NoDo Then
MsgBox prompt:="La colonne ''" & MYCOL & _
"'' contient des données." & vbCrLf & vbCrLf _
& "Veuillez choisir une autre colonne pour les numéros de page.", _
Title:="Programme stoppé", Buttons:=vbExclamation
Exit Sub
End If
'---- Divers traitements et variables à renseigner ----
With ActiveSheet
.ResetAllPageBreaks
ecart& = .UsedRange.Row
nbLig& = .UsedRange.Rows.Count
Set HPS = .HPageBreaks
End With
first& = HPS(1).Location.Row - 1
nbPage& = HPS.Count + 1
ReDim T&(1 To nbPage&)
T&(1) = first&
T&(UBound(T&)) = nbLig& + ecart& - 1
totalHeight! = Range("a1:a" & first& & "").Height
'---- Recherche des bordures basses ----
cpt& = 1
For i& = first& + 1 To nbLig& + ecart& - 1
If tempo! > totalHeight! Then
cpt& = cpt& + 1
T&(cpt&) = i& - 2
i& = i& - 1
tempo! = 0
End If
tempo! = tempo! + Rows(i&).Height
Next i&
'---- Inscription des N° de page ----
Application.ScreenUpdating = False
For i& = 1 To UBound(T&)
Range(Cells(T&(i&), MYCOL), Cells(T&(i&), MYCOL)) = _
"Page " & i& & "/" & nbPage&
Next i&
'-------------------
Erreur:
Application.ScreenUpdating = True
End Sub
'***************************
Meilleures salutations.
PMO
Patrick Morange
Je cherche à insérer les numéros de page d'une feuille excel dans le corps
même d'une cellule et non pas en entête ou pied de page.
Exemple : Page 1 de 6
Bien sûr, les numéros doivent pouvoir se calculer eux même.
Merci d'avance à tous.
Nathalie
Un code macro qui solutionnera votre problème en bonne partie. (malheureusement pas de manière exhaustive car il y a des cas où je n'ai pas voulu m'aventurer).
'*************************** Option Explicit Sub NumerotationPages() Dim reponse% Dim ecart& Dim MYCOL& Dim R As Range Dim NoDo As Boolean Dim i& Dim nbPage& Dim HPS As HPageBreaks Dim first& Dim totalHeight! Dim tempo! Dim nbLig& Dim cpt& Dim T&() On Error GoTo Erreur reponse% = MsgBox(prompt:="Pour l'exécution de ce programme " & _ "il est nécessaire d'effacer les sauts de " & _ "page définis par l'utilisateur" & vbCrLf & _ "et de les remplacer par les sauts de page par défaut." & _ vbCrLf & vbCrLf & "Voulez-vous continuer ?", _ Buttons:=vbYesNo + vbInformation) If reponse% = 7 Then Exit Sub '---- Demande la colonne où les N° de page s'afficheront ---- Set R = Application.InputBox _ (prompt:="Veuillez sélectionner une cellule qui déterminera" & _ " la colonne dans laquelle apparaîtront les numéros de page", _ Type:=8) MYCOL = R.Column '---- Validité de la colonne (si données on sort) ---- If Not IsEmpty(Range(Cells(1, MYCOL), Cells(1, MYCOL))) Or _ Not IsEmpty(Range(Cells(65536, MYCOL), Cells(65536, MYCOL))) Or _ Range(Cells(1, MYCOL), Cells(1, MYCOL)).End(xlDown).Row _ < 65536 Then NoDo = True If NoDo Then MsgBox prompt:="La colonne ''" & MYCOL & _ "'' contient des données." & vbCrLf & vbCrLf _ & "Veuillez choisir une autre colonne pour les numéros de page.", _ Title:="Programme stoppé", Buttons:=vbExclamation Exit Sub End If '---- Divers traitements et variables à renseigner ---- With ActiveSheet .ResetAllPageBreaks ecart& = .UsedRange.Row nbLig& = .UsedRange.Rows.Count Set HPS = .HPageBreaks End With first& = HPS(1).Location.Row - 1 nbPage& = HPS.Count + 1 ReDim T&(1 To nbPage&) T&(1) = first& T&(UBound(T&)) = nbLig& + ecart& - 1 totalHeight! = Range("a1:a" & first& & "").Height '---- Recherche des bordures basses ---- cpt& = 1 For i& = first& + 1 To nbLig& + ecart& - 1 If tempo! > totalHeight! Then cpt& = cpt& + 1 T&(cpt&) = i& - 2 i& = i& - 1 tempo! = 0 End If tempo! = tempo! + Rows(i&).Height Next i& '---- Inscription des N° de page ---- Application.ScreenUpdating = False For i& = 1 To UBound(T&) Range(Cells(T&(i&), MYCOL), Cells(T&(i&), MYCOL)) = _ "Page " & i& & "/" & nbPage& Next i& '------------------- Erreur: Application.ScreenUpdating = True End Sub '***************************
Meilleures salutations.
PMO Patrick Morange
Je cherche à insérer les numéros de page d'une feuille excel dans le corps même d'une cellule et non pas en entête ou pied de page. Exemple : Page 1 de 6 Bien sûr, les numéros doivent pouvoir se calculer eux même. Merci d'avance à tous. Nathalie