Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction nb pages

12 réponses
Avatar
Fan
Bonjour,

Je souhaiterais faire apparaitre dans une cellule le nombre de page de la
feuille qui sera imprimé.

J'ai voulu utiliser la fonction suivante :
Function nbpages()
nbpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
End Function

Malheureusement la cellule renvoi "#valeur"

Pourriez vous m'aider merci.

10 réponses

1 2
Avatar
Daniel.C
Bonjour.
Bizarre, car la ligne, utilisée dans une macro fonctionne. J'ai trouvé ça
sur internet, qui dit que ExecuteExcel4Macro n'est peut-être permis dans les
fonctions perso :
(sic)
Re: ExecuteExcel4Macro Problem by Niek
Niek
Fri Jun 17 13:43:08 CDT 2005

It could well be that ExecuteExcel4Macro is forbidden in UDFs, like many
other functions are.

Cordialement.
Daniel

"Fan" a écrit dans le message de news:
eGUeJQ$
Bonjour,

Je souhaiterais faire apparaitre dans une cellule le nombre de page de la
feuille qui sera imprimé.

J'ai voulu utiliser la fonction suivante :
Function nbpages()
nbpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
End Function

Malheureusement la cellule renvoi "#valeur"

Pourriez vous m'aider merci.





Avatar
Modeste
Bonsour® Fan avec ferveur ;o))) vous nous disiez :

Je souhaiterais faire apparaitre dans une cellule le nombre de page
de la feuille qui sera imprimé.

J'ai voulu utiliser la fonction suivante :
Function nbpages()
nbpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
End Function

Malheureusement la cellule renvoi "#valeur"



il semblerait que pour cause de vulnérabilité, l'utilisation de certaines fonctions XL4 ne soit pas utilisable directement en VBA

mais l'utilisation de ces mêmes fonctions est toujours possible en feuille de calculs

le contournement :
utiliser la syntaxe XL4 en langue locale conjointement à la définition de noms

exemple :
pour EXCEL FR
ActiveWorkbook.Names.Add Name : = "nbpages", RefersToR1C1 : = "=LIRE.DOCUMENT(50)"
Pour EXCEL US
ActiveWorkbook.Names.Add Name : = "nbpages", RefersToR1C1 : = "=GET.DOCUMENT(50)"

l'utilisation dans la feuille de calcul
= nbpages

l'ultilisation en VBA
MsgBox "ce document comportera " & Chr(10) & [nbpages] & " page(s)"

Nb :
il faut avant utilisation, effectuer un recalcul (F9)


--
--
@+
;o)))
Avatar
JB
Bonjour,

Function NbPages()
NbPages = (ActiveSheet.HPageBreaks.Count + 1) *
(ActiveSheet.VPageBreaks.Count + 1)
End Function

JB
http://boisgontierjacques.free.fr

On 17 juil, 12:04, "Fan" wrote:
Bonjour,

Je souhaiterais faire apparaitre dans une cellule le nombre de page de la
feuille qui sera imprimé.

J'ai voulu utiliser la fonction suivante :
Function nbpages()
nbpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
End Function

Malheureusement la cellule renvoi "#valeur"

Pourriez vous m'aider merci.


Avatar
Fan
Merci beaucoup cette fonction marche parfaitement.
Merci aux autres réponses

Il serait trop demandé pourquoi la fonction que j'ai cherché à utiliser
fonctionne sous vba mais pas quand on cherche à l'utiliser dans la feuille
de calcul ?

Merci

"JB" a écrit dans le message de
news:
Bonjour,

Function NbPages()
NbPages = (ActiveSheet.HPageBreaks.Count + 1) *
(ActiveSheet.VPageBreaks.Count + 1)
End Function

JB
http://boisgontierjacques.free.fr

On 17 juil, 12:04, "Fan" wrote:
Bonjour,

Je souhaiterais faire apparaitre dans une cellule le nombre de page de la
feuille qui sera imprimé.

J'ai voulu utiliser la fonction suivante :
Function nbpages()
nbpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
End Function

Malheureusement la cellule renvoi "#valeur"

Pourriez vous m'aider merci.


Avatar
JB
http://cjoint.com/?hrsOVEAGMO

Function NbPages()
Application.Volatile
NbPages = (ActiveSheet.HPageBreaks.Count + 1) *
(ActiveSheet.VPageBreaks.Count + 1)
End Function

Appuyer sur F9 pour Maj

JB




On 17 juil, 17:32, "Fan" wrote:
Merci beaucoup cette fonction marche parfaitement.
Merci aux autres réponses

Il serait trop demandé pourquoi la fonction que j'ai cherché à util iser
fonctionne sous vba mais pas quand on cherche à l'utiliser dans la feui lle
de calcul ?

Merci

"JB" a écrit dans le message denews:7eab3b83-
Bonjour,

Function NbPages()
   NbPages = (ActiveSheet.HPageBreaks.Count + 1) *
(ActiveSheet.VPageBreaks.Count + 1)
End Function

JBhttp://boisgontierjacques.free.fr

On 17 juil, 12:04, "Fan" wrote:



> Bonjour,

> Je souhaiterais faire apparaitre dans une cellule le nombre de page de la
> feuille qui sera imprimé.

> J'ai voulu utiliser la fonction suivante :
> Function nbpages()
> nbpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
> End Function

> Malheureusement la cellule renvoi "#valeur"

> Pourriez vous m'aider merci.- Masquer le texte des messages précéde nts -

- Afficher le texte des messages précédents -


Avatar
michdenis
Pour ceux que la chose intéresse, un fichier exemple, tentant
d'illustrer la problématique et la limitation des solutions proposées.

http://cjoint.com/?hrtFCWyX0L



"Fan" a écrit dans le message de news: eGUeJQ$
Bonjour,

Je souhaiterais faire apparaitre dans une cellule le nombre de page de la
feuille qui sera imprimé.

J'ai voulu utiliser la fonction suivante :
Function nbpages()
nbpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
End Function

Malheureusement la cellule renvoi "#valeur"

Pourriez vous m'aider merci.
Avatar
Modeste
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

Pour ceux que la chose intéresse, un fichier exemple, tentant
d'illustrer la problématique et la limitation des solutions proposées.

http://cjoint.com/?hrtFCWyX0L



;o)))
cela est d'autant plus perturbant (sur cet exemple) si l'on change
ActiveSheet.PageSetup.Order = xlOverThenDown
par
ActiveSheet.PageSetup.Order = xlDownThenOver
les valeurs changent de 7 à 5 pour la macro XL4
chose que l'on vérifie également en activant l'apercu des sauts de page
et en faisant un zoom 50%

par ailleurs, il est à noter que la fonction définie par le nom "denis" n'est pas volatile
et doit etre recalculée avant prise en compte

contournement possible
fait référence à : =LIRE.DOCUMENT(50)+0*ALEA()

--
--
@+
;o)))
Avatar
Modeste
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

Conclusion : Pas aussi évident que la question laissait présager !
;-)

P.S- Pour déterminer l'ordre d'impression la commande en Excel4
est : Lire.Document(61,1)
61 -> Un numéro indiquant l'ordre de pagination :
1 = Bas/Droite
2 = Droite/Bas



l'instruction LIRE.DOCUMENT (61;nom_texte) est une fonction d'information et ne permet pas de forcer l'ordre d'impression
le deuxième parametre désigne le nom d'un document ouvert, s'il est omis il s'agit alors du document actif.

Pour forcer l'ordre d'impression cela peut etre effectué par l'instruction MISE.EN.PAGE
cette commande comporte 16 arguments qui correspondent aux cases à cocher et aux zones de texte de la boite de dialogue "Mise en page"

Il faudra passer par l'insertion d'une feuille de macro XL4
je ne sais si cela en vaut la chandelle !!!!

comme tout bon dinosaure ;o))) je n'ai pas le plaisir d'utiliser XL 2007
mais j'ai encore la doc XL4 ( un pavé de plus de 700 pages !!)



--
--
@+
;o)))
Avatar
fan
Que ce soit celle de JB avec la méthode volatile ou celle de Modeste qui
utilise la fonction =LIRE.DOCUMENT(50) dans un "NOM" + la fonction volatile,
c'est parfait et c'est ce que j'espérais.

Merci donc beaucoup à vous tous (michdenis, Modeste, JB) pour votre aide

.

"michdenis" a écrit dans le message de news:

Sur ce, je prends ta parole et je laisse tomber !
Disons qu'avec ce fil, nous venons de faire un pas dans la bonne direction

;-))

Salutations.


"Modeste" a écrit dans le message de news:

Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

Conclusion : Pas aussi évident que la question laissait présager !
;-)

P.S- Pour déterminer l'ordre d'impression la commande en Excel4
est : Lire.Document(61,1)
61 -> Un numéro indiquant l'ordre de pagination :
1 = Bas/Droite
2 = Droite/Bas



l'instruction LIRE.DOCUMENT (61;nom_texte) est une fonction d'information
et ne permet pas de forcer l'ordre d'impression
le deuxième parametre désigne le nom d'un document ouvert, s'il est omis
il s'agit alors du document actif.

Pour forcer l'ordre d'impression cela peut etre effectué par l'instruction
MISE.EN.PAGE
cette commande comporte 16 arguments qui correspondent aux cases à cocher
et aux zones de texte de la boite de dialogue "Mise en page"

Il faudra passer par l'insertion d'une feuille de macro XL4
je ne sais si cela en vaut la chandelle !!!!

comme tout bon dinosaure ;o))) je n'ai pas le plaisir d'utiliser XL 2007
mais j'ai encore la doc XL4 ( un pavé de plus de 700 pages !!)



--
--
@+
;o)))



Avatar
fan
Je reviens pour une dernière question

Si j'ouvre le ficher avec l'une comme l'autre solution il me demande si je
veux l'enregistrer lors de sa fermeture et cela même si je n'ai fais aucune
modification .

Comment faire pour que si je ne fais qu'ouvrir le fichier ou naviguer entre
les onglets ou même faire défiler les pages, en gros rien qui ne modifirait
une cellule quelconque, on ne me demande rien.

Merci


"fan" a écrit dans le message de news:
%
Que ce soit celle de JB avec la méthode volatile ou celle de Modeste qui
utilise la fonction =LIRE.DOCUMENT(50) dans un "NOM" + la fonction
volatile, c'est parfait et c'est ce que j'espérais.

Merci donc beaucoup à vous tous (michdenis, Modeste, JB) pour votre aide

.

"michdenis" a écrit dans le message de news:

Sur ce, je prends ta parole et je laisse tomber !
Disons qu'avec ce fil, nous venons de faire un pas dans la bonne
direction

;-))

Salutations.


"Modeste" a écrit dans le message de news:

Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

Conclusion : Pas aussi évident que la question laissait présager !
;-)

P.S- Pour déterminer l'ordre d'impression la commande en Excel4
est : Lire.Document(61,1)
61 -> Un numéro indiquant l'ordre de pagination :
1 = Bas/Droite
2 = Droite/Bas



l'instruction LIRE.DOCUMENT (61;nom_texte) est une fonction d'information
et ne permet pas de forcer l'ordre d'impression
le deuxième parametre désigne le nom d'un document ouvert, s'il est omis
il s'agit alors du document actif.

Pour forcer l'ordre d'impression cela peut etre effectué par
l'instruction MISE.EN.PAGE
cette commande comporte 16 arguments qui correspondent aux cases à cocher
et aux zones de texte de la boite de dialogue "Mise en page"

Il faudra passer par l'insertion d'une feuille de macro XL4
je ne sais si cela en vaut la chandelle !!!!

comme tout bon dinosaure ;o))) je n'ai pas le plaisir d'utiliser XL 2007
mais j'ai encore la doc XL4 ( un pavé de plus de 700 pages !!)



--
--
@+
;o)))







1 2