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

Gros Bug avec une fonction d'Excelabo

1 réponse
Avatar
Shewy80
Bonjour,

J'ai un gros problème. En effet que le site d'Excelabo j'ai trouvé une
fonction pour mes problèmes de plantage avec mes apreçu avant impression.

Mais là Excel est devenu completement Fou !!!!

Quand je clique sur l'icone "Aperçu Avt Impression" ou via le Menu dans le
fichier, cette andouille d'Excel m'ouvre mon classeur !!!!!

J'ai désinstaller Excel et réinstaller, mais tjrs pareil ...

Comment faire ?? Qui peux m'aider ??

MErci à tous.


Voici la fonction en question :

Distinguer entre aperçu avant impression et imprimer en VBA
Dans mon classeur j'ai une macro qui se lance avant l'impression. Quand je
clique sur
impression, ma macro s'exécute parfaitement. MAIS, quand je clique sur
aperçu avant impression,
au lieu d'imprimer, j'obtiens bien l'aperçu, mais Excel est planté . Une
possibilité serait d'essayer de distinguer si la procédure BeforePrint a été
appelée en cliquant sur Aperçu avant impression (dans ce cas ne rien faire)
ou
sur Impression (dans ce cas exécuter ton code actuel.

Il n'y a aucune possibilité "intégrée" de savoir laquelle des deux commandes
(ou
bouton) a été cliquée mais Léo Heuser a proposé en mai dernier sur le forum
anglophone une petite bidouille pour y arriver. Le code est ci-dessous, avec
la
traduction des explications et commentaires de l'auteur. Ça va peut-être te
décoincer.

'Pour autant que je sache, il n'est pas possible de distinguer,
'dans l'événement BeforePrint, s'il a été appelé par un clic sur
'le bouton Impression ou sur Aperçu avant impression.
'Mais il est possible d'empêcher le lancement du code si c'est
'un aperçu avant impresion qui a été demandé :

'=========dans le module ThisWorkbook du classeur
Private Sub Workbook_Open()
RedefinePrintPreview
End Sub

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Preview = False Then
MsgBox "Here is your code"
End If
End Sub
'===========================

'=========dans un module standard
Public Preview As Boolean

Sub RedefinePrintPreview()
'leo.heuser@get2net.dk, May 2001
Dim CBar As CommandBar
Dim Found As CommandBarControl

For Each CBar In CommandBars
Set Found = CBar.FindControl(ID:=109, recursive:=True)
If Not Found Is Nothing Then
Found.OnAction = "Pre" ' Set Found.OnAction = "" to return to
default.
End If
Next CBar

Preview = False 'Not necessary but informative :-)

End Sub

Sub Pre()
Preview = True
ActiveSheet.PrintPreview
Preview = False
End Sub
'===========================

'Explication :

'Preview est une variable globale
'
'Dans RedefinePrintPreview :
'
'1 l' ID 109 est celle du bouton Aperçu avant impression
'2 la procédure "Pre" est affectée à la propriété OnAction
' de chaque bouton dont l'ID est 109

'Dans la procédure "Pre"
'
'1 La variable Preview est fixée à Vrai
'2 Ce qui veut dire que le code de BeforePrint ne sera pas exécuté
' puisqu'il ne l'est que si Preview est à Faux
'3 La méthode PrintPreview est appelée puis Preview est refixé à False
'
'Maintenant on peut utiliser le bouton Imprimer et être assuré que
'le code dans BeforePrint sera bien exécuté.
'===============
traduction et explications de Frédéric Sigonneau

1 réponse

Avatar
Gaenonius
Si tu n'as toujours pas réussi à ramener Excel à la raison, deux choses à tenter :

- Outils -> Personnaliser sélectionne la barre d'outils Standard et clique sur
Réinitialiser. Idem pour Barre de menus Feuille de calcul

- Excel étant fermé, cherche sur ton disque dur un fichier d'extension.xlb,
détruis-le ou exile-le dans un dossier reculé puis relance Excel

--
Gaenonius

Bonjour,

J'ai un gros problème. En effet que le site d'Excelabo j'ai trouvé une
fonction pour mes problèmes de plantage avec mes apreçu avant impression.

Mais là Excel est devenu completement Fou !!!!

Quand je clique sur l'icone "Aperçu Avt Impression" ou via le Menu dans le
fichier, cette andouille d'Excel m'ouvre mon classeur !!!!!

J'ai désinstaller Excel et réinstaller, mais tjrs pareil ...

Comment faire ?? Qui peux m'aider ??

MErci à tous.


Voici la fonction en question :

Distinguer entre aperçu avant impression et imprimer en VBA
Dans mon classeur j'ai une macro qui se lance avant l'impression. Quand je
clique sur
impression, ma macro s'exécute parfaitement. MAIS, quand je clique sur
aperçu avant impression,
au lieu d'imprimer, j'obtiens bien l'aperçu, mais Excel est planté . Une
possibilité serait d'essayer de distinguer si la procédure BeforePrint a été
appelée en cliquant sur Aperçu avant impression (dans ce cas ne rien faire)
ou
sur Impression (dans ce cas exécuter ton code actuel.

Il n'y a aucune possibilité "intégrée" de savoir laquelle des deux commandes
(ou
bouton) a été cliquée mais Léo Heuser a proposé en mai dernier sur le forum
anglophone une petite bidouille pour y arriver. Le code est ci-dessous, avec
la
traduction des explications et commentaires de l'auteur. Ça va peut-être te
décoincer.

'Pour autant que je sache, il n'est pas possible de distinguer,
'dans l'événement BeforePrint, s'il a été appelé par un clic sur
'le bouton Impression ou sur Aperçu avant impression.
'Mais il est possible d'empêcher le lancement du code si c'est
'un aperçu avant impresion qui a été demandé :

'========Úns le module ThisWorkbook du classeur
Private Sub Workbook_Open()
RedefinePrintPreview
End Sub

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Preview = False Then
MsgBox "Here is your code"
End If
End Sub
'========================== >
'========Úns un module standard
Public Preview As Boolean

Sub RedefinePrintPreview()
', May 2001
Dim CBar As CommandBar
Dim Found As CommandBarControl

For Each CBar In CommandBars
Set Found = CBar.FindControl(ID:9, recursive:=True)
If Not Found Is Nothing Then
Found.OnAction = "Pre" ' Set Found.OnAction = "" to return to
default.
End If
Next CBar

Preview = False 'Not necessary but informative :-)

End Sub

Sub Pre()
Preview = True
ActiveSheet.PrintPreview
Preview = False
End Sub
'========================== >
'Explication :

'Preview est une variable globale
'
'Dans RedefinePrintPreview :
'
'1 l' ID 109 est celle du bouton Aperçu avant impression
'2 la procédure "Pre" est affectée à la propriété OnAction
' de chaque bouton dont l'ID est 109

'Dans la procédure "Pre"
'
'1 La variable Preview est fixée à Vrai
'2 Ce qui veut dire que le code de BeforePrint ne sera pas exécuté
' puisqu'il ne l'est que si Preview est à Faux
'3 La méthode PrintPreview est appelée puis Preview est refixé à False
'
'Maintenant on peut utiliser le bouton Imprimer et être assuré que
'le code dans BeforePrint sera bien exécuté.
'============== > traduction et explications de Frédéric Sigonneau