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

Problème avec une macro

5 réponses
Avatar
Georges Ecko
Bonjour

J'ai un fichier contenant plusieurs macro gérant l'impression d'une partie
d'une page. Ces macros fonctionnaient parfaitement bien il y a encore 4 mois
et depuis le mois de septembre plus rien ne fonctionne, cela plante Excel à
chaque fois !!.

Quelqu'un a-t-il une idée ?

Voici le code incriminé !

Sub ImpComP2()
'
' ImpComP2 Macro
' Macro créée le 28.8.2005 par Georges Ecko
'
Dim NombreLigne As Integer
On Error Resume Next
'
Do
ActiveSheet.Unprotect Password:="zorro"
NombreLigne = InputBox("Donne moi le nombre d'élève de la classe") * 2 + 4
Loop While Not ((Val(NombreLigne)) > 0)
On Error GoTo 0
Columns("C:AL").Select
Range("C2").Activate
Selection.EntireColumn.Hidden = True
ActiveSheet.PageSetup.PrintArea = "$A$1:$BV$" & CStr(NombreLigne)
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Columns("B:AM").Select
Range("B33").Activate
Selection.EntireColumn.Hidden = False
Application.Goto Reference:="FinP1"
Application.Goto Reference:="DebP2"
ActiveSheet.Protect Password:="zorro", DrawingObjects:=True,
Contents:=True, Scenarios:=True
End Sub

Le plus incroyable c'est que mode débogage pas à pas cela fonctionne sans
aucun soucis

D'avance un grand merci pour vos lumières

--
Georges Ecko

Windows XP sp 2
Office 2003

5 réponses

Avatar
Papyjac
Bonjour Ecko,

Si cà marche en mode déboggage, cela m'inspire, car en mode déboggagetu
effectue les opérations lentement.

Il faudrait mettre un "timer", par exemple l'instruction DOEVENTS, derrière
PRINTOUT, ou derrière GOTO REFERENCE
--
Papyjac


"Georges Ecko" a écrit :

Bonjour

J'ai un fichier contenant plusieurs macro gérant l'impression d'une partie
d'une page. Ces macros fonctionnaient parfaitement bien il y a encore 4 mois
et depuis le mois de septembre plus rien ne fonctionne, cela plante Excel à
chaque fois !!.

Quelqu'un a-t-il une idée ?

Voici le code incriminé !

Sub ImpComP2()
'
' ImpComP2 Macro
' Macro créée le 28.8.2005 par Georges Ecko
'
Dim NombreLigne As Integer
On Error Resume Next
'
Do
ActiveSheet.Unprotect Password:="zorro"
NombreLigne = InputBox("Donne moi le nombre d'élève de la classe") * 2 + 4
Loop While Not ((Val(NombreLigne)) > 0)
On Error GoTo 0
Columns("C:AL").Select
Range("C2").Activate
Selection.EntireColumn.Hidden = True
ActiveSheet.PageSetup.PrintArea = "$A$1:$BV$" & CStr(NombreLigne)
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Columns("B:AM").Select
Range("B33").Activate
Selection.EntireColumn.Hidden = False
Application.Goto Reference:="FinP1"
Application.Goto Reference:="DebP2"
ActiveSheet.Protect Password:="zorro", DrawingObjects:=True,
Contents:=True, Scenarios:=True
End Sub

Le plus incroyable c'est que mode débogage pas à pas cela fonctionne sans
aucun soucis

D'avance un grand merci pour vos lumières

--
Georges Ecko

Windows XP sp 2
Office 2003


Avatar
Georges Ecko
Bonjour,

Merci de votre réponse qui malheureusement ne m'aide pas puisque le problème
reste entier.

Bien plus Excel plante et sans redémarrage de la machine impossible de
rouvrir le fichier.

Avez-vous une autre idée ?

Merci d'avance

--
Georges Ecko

Windows XP sp 2
Office 2003


"Papyjac" wrote:

Bonjour Ecko,

Si cà marche en mode déboggage, cela m'inspire, car en mode déboggagetu
effectue les opérations lentement.

Il faudrait mettre un "timer", par exemple l'instruction DOEVENTS, derrière
PRINTOUT, ou derrière GOTO REFERENCE
--
Papyjac


"Georges Ecko" a écrit :

> Bonjour
>
> J'ai un fichier contenant plusieurs macro gérant l'impression d'une partie
> d'une page. Ces macros fonctionnaient parfaitement bien il y a encore 4 mois
> et depuis le mois de septembre plus rien ne fonctionne, cela plante Excel à
> chaque fois !!.
>
> Quelqu'un a-t-il une idée ?
>
> Voici le code incriminé !
>
> Sub ImpComP2()
> '
> ' ImpComP2 Macro
> ' Macro créée le 28.8.2005 par Georges Ecko
> '
> Dim NombreLigne As Integer
> On Error Resume Next
> '
> Do
> ActiveSheet.Unprotect Password:="zorro"
> NombreLigne = InputBox("Donne moi le nombre d'élève de la classe") * 2 + 4
> Loop While Not ((Val(NombreLigne)) > 0)
> On Error GoTo 0
> Columns("C:AL").Select
> Range("C2").Activate
> Selection.EntireColumn.Hidden = True
> ActiveSheet.PageSetup.PrintArea = "$A$1:$BV$" & CStr(NombreLigne)
> With ActiveSheet.PageSetup
> .Orientation = xlLandscape
> .FitToPagesWide = 1
> .FitToPagesTall = 1
> End With
> ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
> Columns("B:AM").Select
> Range("B33").Activate
> Selection.EntireColumn.Hidden = False
> Application.Goto Reference:="FinP1"
> Application.Goto Reference:="DebP2"
> ActiveSheet.Protect Password:="zorro", DrawingObjects:=True,
> Contents:=True, Scenarios:=True
> End Sub
>
> Le plus incroyable c'est que mode débogage pas à pas cela fonctionne sans
> aucun soucis
>
> D'avance un grand merci pour vos lumières
>
> --
> Georges Ecko
>
> Windows XP sp 2
> Office 2003


Avatar
michdenis
Essaie ceci en prenant soin d'indiquer le nom de
la feuille dans ton application, pour l'exemple j'ai
pris "Feuil1" qui est la propriété "Name" visible
dans l'interface de l'éditeur de code et non le nom
de l'onglet de la feuille.

'-------------------------------------------
Sub ImpComP()
Dim NombreLigne As Variant
On Error Resume Next
Application.ScreenUpdating = False
Do
NombreLigne = Application.InputBox(Prompt:= _
"Donne moi le nombre d'élève de la classe", Type:=1)
If Format(NombreLigne) = False Then
If MsgBox("Désirez-vous annuler l'impression?", _
vbCritical + vbYesNo, "Impression") = vbYes Then
Exit Sub
End If
End If
Loop While Not NombreLigne > 0
NombreLigne = NombreLigne * 2 + 4

With Feuil1
.Unprotect Password:="zorro"
.Columns("C:AL").EntireColumn.Hidden = True
With .PageSetup
.PrintArea = "$A$1:$BV$" & CStr(NombreLigne)
.PageSetup.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
.PrintOut Copies:=1, Collate:=True
.PageSetup.PrintArea = ""
.Columns("B:AM").EntireColumn.Hidden = False
.Protect Password:="zorro", DrawingObjects:=True, _
Contents:=True, Scenarios:=True
End With
Application.Goto Reference:="FinP1"
Application.Goto Reference:="DebP2"

End Sub
'-------------------------------------------



"Georges Ecko" a écrit dans le
message de news:
Bonjour

J'ai un fichier contenant plusieurs macro gérant l'impression d'une partie
d'une page. Ces macros fonctionnaient parfaitement bien il y a encore 4 mois
et depuis le mois de septembre plus rien ne fonctionne, cela plante Excel à
chaque fois !!.

Quelqu'un a-t-il une idée ?

Voici le code incriminé !

Sub ImpComP2()
'
' ImpComP2 Macro
' Macro créée le 28.8.2005 par Georges Ecko
'
Dim NombreLigne As Integer
On Error Resume Next
'
Do
ActiveSheet.Unprotect Password:="zorro"
NombreLigne = InputBox("Donne moi le nombre d'élève de la classe") * 2 + 4
Loop While Not ((Val(NombreLigne)) > 0)
On Error GoTo 0
Columns("C:AL").Select
Range("C2").Activate
Selection.EntireColumn.Hidden = True
ActiveSheet.PageSetup.PrintArea = "$A$1:$BV$" & CStr(NombreLigne)
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Columns("B:AM").Select
Range("B33").Activate
Selection.EntireColumn.Hidden = False
Application.Goto Reference:="FinP1"
Application.Goto Reference:="DebP2"
ActiveSheet.Protect Password:="zorro", DrawingObjects:=True,
Contents:=True, Scenarios:=True
End Sub

Le plus incroyable c'est que mode débogage pas à pas cela fonctionne sans
aucun soucis

D'avance un grand merci pour vos lumières

--
Georges Ecko

Windows XP sp 2
Office 2003
Avatar
Georges Ecko
Un grand merci

cette solution fonctionne, je vais donc l'adopter avec mes remerciements
réitérés.

Cela ne m'explique cependant pas pourquoi une macro qui a rendu de bons et
loyaux services pendant trois ans tout d'un coup ne fonctionne plus !!

Moi qui aime bien comprendre le pourquoi des choses, me voilà un peu démuni

Bien amicalement

--
Georges Ecko

Windows XP sp 2
Office 2003


"michdenis" wrote:

Essaie ceci en prenant soin d'indiquer le nom de
la feuille dans ton application, pour l'exemple j'ai
pris "Feuil1" qui est la propriété "Name" visible
dans l'interface de l'éditeur de code et non le nom
de l'onglet de la feuille.

'-------------------------------------------
Sub ImpComP()
Dim NombreLigne As Variant
On Error Resume Next
Application.ScreenUpdating = False
Do
NombreLigne = Application.InputBox(Prompt:= _
"Donne moi le nombre d'élève de la classe", Type:=1)
If Format(NombreLigne) = False Then
If MsgBox("Désirez-vous annuler l'impression?", _
vbCritical + vbYesNo, "Impression") = vbYes Then
Exit Sub
End If
End If
Loop While Not NombreLigne > 0
NombreLigne = NombreLigne * 2 + 4

With Feuil1
.Unprotect Password:="zorro"
.Columns("C:AL").EntireColumn.Hidden = True
With .PageSetup
.PrintArea = "$A$1:$BV$" & CStr(NombreLigne)
.PageSetup.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
.PrintOut Copies:=1, Collate:=True
.PageSetup.PrintArea = ""
.Columns("B:AM").EntireColumn.Hidden = False
.Protect Password:="zorro", DrawingObjects:=True, _
Contents:=True, Scenarios:=True
End With
Application.Goto Reference:="FinP1"
Application.Goto Reference:="DebP2"

End Sub
'-------------------------------------------



"Georges Ecko" a écrit dans le
message de news:
Bonjour

J'ai un fichier contenant plusieurs macro gérant l'impression d'une partie
d'une page. Ces macros fonctionnaient parfaitement bien il y a encore 4 mois
et depuis le mois de septembre plus rien ne fonctionne, cela plante Excel à
chaque fois !!.

Quelqu'un a-t-il une idée ?

Voici le code incriminé !

Sub ImpComP2()
'
' ImpComP2 Macro
' Macro créée le 28.8.2005 par Georges Ecko
'
Dim NombreLigne As Integer
On Error Resume Next
'
Do
ActiveSheet.Unprotect Password:="zorro"
NombreLigne = InputBox("Donne moi le nombre d'élève de la classe") * 2 + 4
Loop While Not ((Val(NombreLigne)) > 0)
On Error GoTo 0
Columns("C:AL").Select
Range("C2").Activate
Selection.EntireColumn.Hidden = True
ActiveSheet.PageSetup.PrintArea = "$A$1:$BV$" & CStr(NombreLigne)
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Columns("B:AM").Select
Range("B33").Activate
Selection.EntireColumn.Hidden = False
Application.Goto Reference:="FinP1"
Application.Goto Reference:="DebP2"
ActiveSheet.Protect Password:="zorro", DrawingObjects:=True,
Contents:=True, Scenarios:=True
End Sub

Le plus incroyable c'est que mode débogage pas à pas cela fonctionne sans
aucun soucis

D'avance un grand merci pour vos lumières

--
Georges Ecko

Windows XP sp 2
Office 2003




Avatar
michdenis
| Moi qui aime bien comprendre le pourquoi des choses, me voilà un peu
démuni

Techniquement parlant, ta macro n'est pas la plus mieux écrite et elle
devrait s'exécuter sans anicroches...et pour t'en convaincre, essaie-là dans
un fichier tout neuf avec quelques données
à imprimer.

Pour débugger ce type de procédure, il n'est pas suffisant de voir la
procédure, il faut aussi avoir l'application (feuille) que tu tentes
d'imprimer lorsque tu lances l'application.

Tu peux toujours la publier sur Cjoint.com en prenant soin de faire
disparaître des données sensibles.