XL 2010 Champ d'impression L1C1 selon contenu de cellules

vadelacaisse

XLDnaute Junior
Bonjour

Je cherche à imprimer un champ variable de la feuille "Plan" de 500 lignes, 400 colonnes à terme
Je sais déterminer les N° de lignes et colonnes extrêmes (feuille "Données", sur fond jaune)

J'ai tâtonné pour écrire la macro de ce fichier
L'adresse du champ doit être au format L1C1, en récupérant les quatre N° calculés

Le débogage m'indique une erreur 13 au deuxième ou troisième "Dim"...

Je me perfectionne avec ce que j'ai appris ci mais là, je sèche...

merci de votre aide !
 

Pièces jointes

  • Test.xlsm
    33.8 KB · Affichages: 43

kingfadhel

XLDnaute Impliqué
Bonsoir, Tu remplace ton code par celui-ci.
Code:
Sub Impression_Selective()
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$6"
        .PrintTitleColumns = "$A:$O"
    End With
    Application.PrintCommunication = True
    C1 = Range("LigneH").Value
    C2 = Range("LigneB").Value
    C3 = Range("ColoG").Value
    C4 = Range("ColoD").Value
Range(Cells(C1, C4), Cells(C2, C3)).Select
Selection.PrintOut Copies:=1, Collate:=True
End Sub
 

Pièces jointes

  • Test.xlsm
    32.4 KB · Affichages: 34

job75

XLDnaute Barbatruc
Bonsoir vadelacaisse, salut kingfadhel,

Votre macro annotée à placer dans un module standard (Module1), pas dans une feuille :
Code:
Sub Macro1()
    Sheets("Données").Activate
    'Application.ReferenceStyle = xlA1 'ça ne sert à rien
  
    Dim collG As Long
    collG = Range("R4")
    Dim collD As Long
    collD = Range("R5")
    Dim lignH As Long
    lignH = Range("P4")
    Dim lignB As Long
    lignB = Range("P5")
  
    Sheets("Plan").Activate
    'Application.ReferenceStyle = xlR1C1 'ça ne sert à rien
    'Range(1, 1).Select 'ça ne sert à rien et la syntaxe est erronée
    'Range(lignH, collG).Select 'ça ne sert à rien et la syntaxe est erronée
     
    With ActiveSheet.PageSetup
    .PrintTitleRows = "$1:$6"
    '.PrintTitleColumns = "$8:$15" 'erroné
    .PrintTitleColumns = "$H:$O" 'ça c'est bon
    .Orientation = xlLandscape
    End With
    ActiveSheet.PageSetup.PrintArea = Range(Cells(lignH, collG), Cells(lignB, collD)).Address
    ActiveWindow.SelectedSheets.PrintOut
    'Application.ReferenceStyle = xlA1 'ça ne sert à rien
End Sub
A+
 

vadelacaisse

XLDnaute Junior
Merci à tous deux et à votre réponse rapide
Vos deux codes fonctionnent (évidemment :))

J'ai fait un mix des deux - et ça marche d'enfer
Un grand merci !

Sans prétention mais juste pour donner des idées, j'ai bâti un planning Excel qui ressemble à du Project
qq astuces :
les WE sont calés à partir de la position du premier dimanche, les jours fériés étant indiqués sur une ligne à part : des bandes verticales apparaissent en gris
la barre de chaque tâche se colore où il faut en fonction de ses dates de début et fin
tout cela avec qq formules simples et des MFC, le plus intéressant étant que l'ordre des MFC permet de masquer la barre de tache sous les bandes WE par ex ou sous d'autres couleurs (CP, formation)
toute la mise en couleur se fait quasi automatiquement
je récupère ensuite les infos pour le suivi, des statistiques

cerise sur le cageot, votre macro permet d'imprimer la zone active du planning sans se poser de questions
encore merci
 

kingfadhel

XLDnaute Impliqué
Bonjour, le fil, vadelcaisse
MAJ code
Code:
Sub Impression_Selective()
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$6"
        .PrintTitleColumns = "$A:$O"
    End With
    Application.PrintCommunication = True
    C1 = Range("LigneH").Value
    C2 = Range("LigneB").Value
    C3 = Range("ColoG").Value
    C4 = Range("ColoD").Value
Range(Cells(C1, C4), Cells(C2, C3)).Select
Application.Dialogs(xlDialogPrint).Show
End Sub

N'oublie pas de pointer sur "Sélection" dans la zone bas gauche du popup "impression"
 

Pièces jointes

  • CC11.PNG
    CC11.PNG
    42.9 KB · Affichages: 31

vadelacaisse

XLDnaute Junior
ça fonctionne !
c'est dommage qu'il faille taper sur sélection puisque l'instruction "imprimer la sélection" ne peut pas être en début de macro, j'imagine, avant même d'avoir fait la sélection...

j'ai trouvé une parade, selon que l'utilisateur à une imprimante couleur par défaut ou pas
- un bouton "impression directe"
- un bouton "choix de l'imprimante" puis sélection, avec ce dernier code

merci :)
 

kingfadhel

XLDnaute Impliqué
Re,
Une solution peut être.
Impression de la sélection déjà faite même si tu ne pointe pas "Sélection" dans la boite de dialogue.
Code:
Sub Impression_Selective()

    Application.PrintCommunication = False
With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$6"
        .PrintTitleColumns = "$A:$O"
End With
    Application.PrintCommunication = True
    C1 = Range("LigneH").Value
    C2 = Range("LigneB").Value
    C3 = Range("ColoG").Value
    C4 = Range("ColoD").Value
Range(Cells(C1, C4), Cells(C2, C3)).Select
ActiveWorkbook.Names.Add Name:="Zone_imp", RefersToR1C1:= _
        "=Plan!R" & C1 & "C" & C3 & ":R" & C2 & "C" & C4 & ""
Application.Dialogs(xlDialogPrint).Show
End Sub

@+
Me tenir au courant
 

Pièces jointes

  • Test.xlsm
    33.9 KB · Affichages: 35

vadelacaisse

XLDnaute Junior
presque ça !
l'impression ne tenait pas compte du nom de champ que tu avais créé
j'ai eu l'idée d'ajouter ce code, avant "Application..."

ActiveSheet.PageSetup.PrintArea = "Zone_imp"
et là ça fonctionne :p

ce coup-là, ça devrait aller
merci pour le temps passé, ta réactivité et les solutions !

j'entrevois parfois le pourquoi, mais la syntaxe de VBA et moi...
 

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou