Imprimer une sélection

Résolu/Fermé
aminesc Messages postés 70 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 3 juillet 2017 - Modifié par crapoulou le 16/05/2016 à 11:39
 Utilisateur anonyme - 26 mai 2016 à 19:59
Bonjour ,
j'aimerai bien imprimer un tableau sur excel , le nombre de ligne change .
voici se que j'ai essaye mais sa marche pas

Sub IMPR()

Sheets("Brouillarde_Caisse").Select

ligne = Worksheets("Brouillarde_Caisse").Range("B" & Rows.Count).End(xlUp).Row 'deteriner fin de ligne

   
    Range("B2":"B" &ligne).Select
    
    ExecuteExcel4Macro "PRINT(1,,,1,,TRUE,,,,,,1,,,TRUE,,FALSE)"
End Sub


il y a t'il une possibilité de mentionner de copie d'impression
merci
A voir également:

1 réponse

Utilisateur anonyme
16 mai 2016 à 12:07
Bonjour aminesc,

Pourquoi donc utiliser les anciennes macros XL4 ?

C'est mieux d'utiliser le VBA, qui a été créé et mis en place par
Microsoft afin de les remplacer plus efficacement !

----------------------------------------

D'autre part, la façon dont la dernière ligne est déterminée
indique qu'il n'y a rien d'autre sous le tableau ; et donc
on peut imprimer la feuille entière :


Sub IMPR()
  WorkSheets("Brouillarde_Caisse").PrintOut
End Sub


En français comptable, on écrit : « Brouillard de Caisse » ;
donc le nom de la feuille à indiquer est peut-être plutôt :
WorkSheets("Brouillard_de_Caisse").PrintOut

Et si on nomme cette feuille "Brouillard de Caisse", ce sera :
WorkSheets("Brouillard de Caisse").PrintOut
avec 2 " " (espaces) au lieu de 2 "_" (soulignés).

Mais vous pouvez aussi appeler cette feuille "Caisse", donc :
WorkSheets("Caisse").PrintOut

Cordialement.  😊
 
0
aminesc Messages postés 70 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 3 juillet 2017
26 mai 2016 à 17:26
Bonjour albkan ,
Pour se qui concerne ta solution :
Sub IMPR()
WorkSheets("Brouillarde_Caisse").PrintOut
End Sub

elle n'est pas utile pour mois car j' besoin d'imprimer une sélection et non pas la page entière .
voici se que j'ai trouve comme solution :
Sub IMPR()

Sheets("Brouillarde_Caisse").Select

ligne = Worksheets("Brouillarde_Caisse").Range("B" & Rows.Count).End(xlUp).Row 'deteriner fin de ligne



Range("B2:H" & ligne).Select
ExecuteExcel4Macro "PRINT(1,,,2,,TRUE,,,,,,1,,,TRUE,,FALSE)"

End Sub

quesque vous en dit .
0
Utilisateur anonyme > aminesc Messages postés 70 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 3 juillet 2017
26 mai 2016 à 18:28
Bonjour aminesc,

================================

A) Choix de la feuille

Pour sélectionner la feuille, mettez plutôt :
Worksheets("Brouillarde_Caisse").Select

Car Sheets est pour tout type de feuille (y compris graphique),
alors que Worksheets est pour feuille de calcul (c'est-à-dire
avec toutes les cellules), ce qui est le cas. De plus, la feuille
sera trouvée plus rapidement par Excel, car au lieu de la
chercher dans toutes les feuilles de tout type, il la cherchera
seulement dans les feuilles de calcul (soit un seul type).

--------------------------------------------------------

Sélectionner la feuille indiquée est une bonne solution, mais comme
en général on préfère voir d'abord ce qu'on va imprimer, je pense
que c'est mieux que la macro refuse de se lancer si on n'est pas
sur la bonne feuille, et ce sera à l'utilisateur d'aller sur la feuille
"Brouillarde_Caisse" pour voir les données (et vérifier si besoin),
puis de lancer la macro. Pour cela, en 1ère ligne de la macro :

If AcriveSheet.Name <> "Brouillarde_Caisse" Then Exit Sub

================================

B) Impression de la plage, sans sélection de cette plage

Pour la suite, après avoir utilisé une des 2 méthodes ci-dessus,
on est donc forcément sur la bonne feuille : "Brouillarde_Caisse",
donc il sera alors inutile de spécifier cette feuille, et le code VBA
sera plus court. Ainsi :

ligne = Worksheets("Brouillarde_Caisse").Range("B" & Rows.Count).End(xlUp).Row ' déterminer fin de ligne

peut devenir plus simplement :

ligne = Range("B" & Rows.Count).End(xlUp).Row ' déterminer fin de ligne

Vous pouvez imprimer votre plage sans avoir à faire de sélection.

Option Explicit

Sub IMPR()
  If AcriveSheet.Name <> "Brouillarde_Caisse" Then Exit Sub
  Dim ligne As Long
  ligne = Range("B" & Rows.Count).End(xlUp).Row ' déterminer fin de ligne
  Range("B2:H" & ligne).PrintOut
End Sub

Solution sans macro XL4 (obsolète) et avec VBA seulement.

================================

C) Complément

Comme on imprime la plage sans faire de sélection, on peut l'imprimer depuis
n'importe quelle feuille, sans même aller sur la feuille "Brouillarde_Caisse".

Mais cette fois, bien sûr, on est obligé d'indiquer le nom de la feuille :

Option Explicit

Sub IMPR()
  Dim ligne As Long
  ligne = Range("B" & Rows.Count).End(xlUp).Row ' déterminer fin de ligne
  Worksheets(Brouillarde_Caisse).Range("B2:H" & ligne).PrintOut
End Sub


================================

Bien sûr, si vraiment vous y tenez (par habitude ou autre), vous pouvez
continuer à utiliser les macros XL4 ; à vous de choisir !  😉

Pouvez-vous me dire ce que vous pensez de ce long article ?

Cordialement.  😊
 
0
 
Rectificatif
Il y a 2 erreurs dans mon code VBA qui figure en partie C) Complément.

1) Pour la ligne 5 :
La feuille doit aussi être indiquée pour le Range correspondant à « ligne ».

2) Pour la ligne 6 :
Le nom de la feuille Brouillarde_Caisse doit être entre guillemets.

D'où ce nouveau code VBA :

Option Explicit

Sub IMPR()
  Dim ligne As Long
  With Worksheets("Brouillarde_Caisse")
    ligne = .Range("B" & Rows.Count).End(xlUp).Row ' déterminer fin de ligne
    .Range("B2:H" & ligne).PrintOut
  End With
End Sub

Attention : il faut un point ( . ) devant le R des 2 Range !
 
0