Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Apercu avant impression

  • Initiateur de la discussion Edouard
  • Date de début
E

Edouard

Guest
Bonsoir le forum

A l’aide !!

La macro qui se trouve dans le Workbook à pour but de recopier dans l’entête de page le titre qui se trouve en H12 de la feuille date et de faire un aperçu avant impression uniquement des lignes écrites de la feuille « Zone O » ce qui fonctionne bien.
Mais lorsque je rajoute des feuilles cela ne fonctionne plus, et je ne comprend pas pourquoi !
Bienvenue a celui qui pourra me dépanner.
 

Pièces jointes

  • CCCdetection.zip
    49.8 KB · Affichages: 37
R

Robert

Guest
Salut Edouard, salut le forum,

ci-dessous la macro modifiée. J'espère que ça t'ira.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Valeur As String
'Dim Nom As Variant
Dim x As Byte
' recopie le titre Coupe formation Niv 4 et sa date de la feuille date
' pour une autre feuille ajouter ;zone so ..etc
Valeur = " Coupe formation Niv 4 " & ThisWorkbook.Sheets("Date").Range("H12")
'For Each Nom In Array("Zone O", "Zone SO")
'ça ne marchera que si tu rajoutes des feuilles après la feuille "Dates"
For x = 2 To ThisWorkbook.Sheets.Count
With ThisWorkbook.Sheets(x) '(Nom)
.PageSetup.CenterHeader = Valeur
.Unprotect
.PageSetup.PrintArea = .Range("A5").Address & ":" & .Range("AZ" & .Range("A5:A154").SpecialCells(xlCellTypeConstants, 23).Rows.Count + 4).Address
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
Next x 'Nom
End Sub


À plus,

Robert
 
E

Edouard

Guest
Merci de m’avoir répondu

Surtout à une aussi tardive ; malheureusement ça ne marche pas.
Si cela peux t’aider j’ai comme message d’erreur : erreur d’exécution « 1004 » Pas de cellules correspondantes.
Oublié de te dire toutes les feuilles que je vais rajouter seront identiques (au niveau colonne) et comportent 150 lignes de saisie, elles sont toutes protégées (j’ai oublié de protéger la feuille « Zone SO »

À+.
 
R

Robert

Guest
Re salut Edouard, salut le forum

Le code que je t'ai donné fonctionne mais ton problème est ailleurs :
.PageSetup.PrintArea = .Range("A5").Address & ":" & .Range("AZ" & .Range("A5:A154"). SpecialCells(xlCellTypeConstants, 23) .Rows.Count + 4).Address

Il provient de l'utilisation de cellules contenant une constante. Si le fichier n'en comporte pas il y a un bug. J'ai essayé de trouver à quoi cela correspond mais dans la copie que tu a mise tu as dû remplacer les valeurs de A5:A154. En fait la zone affichée devrait être : A5:AZ(X?) . le X est définie par le nombre de cellules en A5:A154 contenant une constante.

Tu peux supprimer cela em renplaçant par une valeur quelconque mais tu n'obtiendra pas le même résultat. par exemple :

.PageSetup.PrintArea = .Range("A5").Address & ":" & .Range("AZ50").Address

Tu n'auras plus de message d'erreur.

À plus,

Robert
 
E

Edouard

Guest
Salut Robert

Je connais mal le fonctionnement des macros, mais je suis effectivement intervenu sur la colonne A5 ;A154. La feuille Zone SO est la copie de la Zone O sur laquelle j’ai changé le o en so et la validation . Les feuilles que je vais rajouter vont s’appeler Zone E (comme Est) ; Zone S(comme Sud) et Zone IF(comme ile de France).
Faudrait-il que cette colonne, quelque soit la feuille est toujours la même indication.
Ci-joint le fichier correctement modifier ;
Bonne soirée
 

Pièces jointes

  • CCC2.zip
    41.3 KB · Affichages: 42
R

Robert

Guest
Re Edouard, salut le Forum,

Edouard, je suis désolé mais je suis incapable de t'en dire plus. Je suis allé dans l'aide VBA mais je n'ai rien trouvé qui m'indique ce que signifie "23" dans SpecialCells(xlCellTypeConstants, 23 ). Je ne savais même pas qu'il s'aggissait de cellules contenant une validation. C'est toi qui me l'a indiqué. J'ai essayé de changer cette valeur mais sans résultat.

Bonne Chance.

À plus,

Robert
 
E

Edouard

Guest
Merci bien en tout cas d'avoir chercher .Je vais terminer mon tableau et je retenterai ma chance plus tard avec une autre présentation

Bonne soirée devant ton clavier
 
E

Edouard

Guest
Salut Robert

Pour ta gouverne je viens de "dégoter" une macro qui fonctionne ; mais ne me demande pas pourquoi ?

Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Valeur$, Ws As Worksheet, Plage As Range
With ThisWorkbook
Valeur = " Coupe formation Niv 4 " & .Worksheets("Date").Range("H12")
For Each Ws In .Worksheets
If Ws.Name <> "Date" Then
With Ws
If .Range("A5") = "" Then Set Plage = .Range("A5:AZ5") Else _
Set Plage = .Range("A5", .Range("A65536").End(xlUp)).Resize(, 52)

.Unprotect
.PageSetup.CenterHeader = Valeur
.PageSetup.PrintArea = Plage.Address
.Protect
End With
End If
Next Ws
End With
End Sub

à +
 

Discussions similaires

Réponses
8
Affichages
633
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…