[VBA] Selection d'une zone d'impression

Le
Thierry 46
Bonjour,

Je souhaiterai faire en VBA:
- selection: une zone d'impression de tout le contenu (de la première
ligne utilisée à la dernière ligne, idem colonne)
- de pouvoir imprimer sur une page en largeur, la longueur implicite
- de pouvoir mettre un en_tête, etc..

ActiveSheet.PageSetup.PrintArea = tout le texte selectionné

Pourrais-je avoir un début de piste pour pouvoir faire cette selection ?
Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #19885401
Bonjour Thierry,

La procédure suivante imprime "TOUT" le contenu de
la "Feuil1" sur une "MÊME" feuille.

'---------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'---------------------------------------



"Thierry 46" #
Bonjour,

Je souhaiterai faire en VBA:
- selection: une zone d'impression de tout le contenu (de la première
ligne utilisée à la dernière ligne, idem colonne)
- de pouvoir imprimer sur une page en largeur, la longueur implicite
- de pouvoir mettre un en_tête, etc..

ActiveSheet.PageSetup.PrintArea = tout le texte selectionné

Pourrais-je avoir un début de piste pour pouvoir faire cette selection ?
Merci
Thierry 46
Le #19885891
MichDenis a écrit :
Bonjour Thierry,

La procédure suivante imprime "TOUT" le contenu de
la "Feuil1" sur une "MÊME" feuille.

'---------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'---------------------------------------



"Thierry 46" #
Bonjour,

Je souhaiterai faire en VBA:
- selection: une zone d'impression de tout le contenu (de la première
ligne utilisée à la dernière ligne, idem colonne)
- de pouvoir imprimer sur une page en largeur, la longueur implicite
- de pouvoir mettre un en_tête, etc..

ActiveSheet.PageSetup.PrintArea = tout le texte selectionné

Pourrais-je avoir un début de piste pour pouvoir faire cette selection ?
Merci



Re bonjour,

Merci
En effet je n'étais pas près d'y arriver.
What:="*" : ? pointe sur la dernière ligne et colonne ?

J'ai parfois un fichier qui ne commence pas en A1, par exemple en C3. Le
mieux est-il de supprimer les lignes et colonnes vides ou bien
rechercher la PremiereColonne et la PremiereLigne ? et Comment ?
Cdt
MichDenis
Le #19886281
Essaie ceci :

'--------------------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim PremLig As Long, PremCol As Integer
Dim Rg As Range, Depart As String

With Worksheets("Feuil2")
With .UsedRange
Depart = .Cells(.Rows.Count, .Columns.Count).Address
If Depart = .Range("A1").Address Then Exit Sub
End With
PremLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext).Row

DerLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
PremCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext).Column
DerCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range(.Cells(PremLig, PremCol), .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'--------------------------------------------------






"Thierry 46" #
MichDenis a écrit :
Bonjour Thierry,

La procédure suivante imprime "TOUT" le contenu de
la "Feuil1" sur une "MÊME" feuille.

'---------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'---------------------------------------



"Thierry 46" :
#
Bonjour,

Je souhaiterai faire en VBA:
- selection: une zone d'impression de tout le contenu (de la première
ligne utilisée à la dernière ligne, idem colonne)
- de pouvoir imprimer sur une page en largeur, la longueur implicite
- de pouvoir mettre un en_tête, etc..

ActiveSheet.PageSetup.PrintArea = tout le texte selectionné

Pourrais-je avoir un début de piste pour pouvoir faire cette selection ?
Merci



Re bonjour,

Merci
En effet je n'étais pas près d'y arriver.
What:="*" : ? pointe sur la dernière ligne et colonne ?

J'ai parfois un fichier qui ne commence pas en A1, par exemple en C3. Le
mieux est-il de supprimer les lignes et colonnes vides ou bien
rechercher la PremiereColonne et la PremiereLigne ? et Comment ?
Cdt
Thierry 46
Le #19886461
Re,

Si tu as le temps j'ai joint le fichier.
Il y a un cas où les coordonnées bas-droit ne sont pas prises en compte.
J'ai fait Rg.select pour le vérifier de visu.

http://cjoint.com/?ifq4oYU4m0

Cdt


MichDenis a écrit :
Essaie ceci :

'--------------------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim PremLig As Long, PremCol As Integer
Dim Rg As Range, Depart As String

With Worksheets("Feuil2")
With .UsedRange
Depart = .Cells(.Rows.Count, .Columns.Count).Address
If Depart = .Range("A1").Address Then Exit Sub
End With
PremLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext).Row

DerLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
PremCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext).Column
DerCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range(.Cells(PremLig, PremCol), .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'--------------------------------------------------






"Thierry 46" #
MichDenis a écrit :
Bonjour Thierry,

La procédure suivante imprime "TOUT" le contenu de
la "Feuil1" sur une "MÊME" feuille.

'---------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'---------------------------------------



"Thierry 46" :
#
Bonjour,

Je souhaiterai faire en VBA:
- selection: une zone d'impression de tout le contenu (de la première
ligne utilisée à la dernière ligne, idem colonne)
- de pouvoir imprimer sur une page en largeur, la longueur implicite
- de pouvoir mettre un en_tête, etc..

ActiveSheet.PageSetup.PrintArea = tout le texte selectionné

Pourrais-je avoir un début de piste pour pouvoir faire cette selection ?
Merci



Re bonjour,

Merci
En effet je n'étais pas près d'y arriver.
What:="*" : ? pointe sur la dernière ligne et colonne ?

J'ai parfois un fichier qui ne commence pas en A1, par exemple en C3. Le
mieux est-il de supprimer les lignes et colonnes vides ou bien
rechercher la PremiereColonne et la PremiereLigne ? et Comment ?
Cdt



MichDenis
Le #19886621
Ben tu voulais éliminer les lignes vides et les colonnes vides
de la plage d'impression. La colonne A:A est vide et ne fait pas
parti de la zone d'impression.

Ceci était mon dernier message sur ce fil. Tu as suffisamment
d'informations sur le sujet pour modifier la procédure si besoin il y a !



"Thierry 46"
Re,

Si tu as le temps j'ai joint le fichier.
Il y a un cas où les coordonnées bas-droit ne sont pas prises en compte.
J'ai fait Rg.select pour le vérifier de visu.

http://cjoint.com/?ifq4oYU4m0

Cdt


MichDenis a écrit :
Essaie ceci :

'--------------------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim PremLig As Long, PremCol As Integer
Dim Rg As Range, Depart As String

With Worksheets("Feuil2")
With .UsedRange
Depart = .Cells(.Rows.Count, .Columns.Count).Address
If Depart = .Range("A1").Address Then Exit Sub
End With
PremLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext).Row

DerLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
PremCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext).Column
DerCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range(.Cells(PremLig, PremCol), .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'--------------------------------------------------






"Thierry 46" :
#
MichDenis a écrit :
Bonjour Thierry,

La procédure suivante imprime "TOUT" le contenu de
la "Feuil1" sur une "MÊME" feuille.

'---------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'---------------------------------------



"Thierry 46" :
#
Bonjour,

Je souhaiterai faire en VBA:
- selection: une zone d'impression de tout le contenu (de la première
ligne utilisée à la dernière ligne, idem colonne)
- de pouvoir imprimer sur une page en largeur, la longueur implicite
- de pouvoir mettre un en_tête, etc..

ActiveSheet.PageSetup.PrintArea = tout le texte selectionné

Pourrais-je avoir un début de piste pour pouvoir faire cette selection ?
Merci



Re bonjour,

Merci
En effet je n'étais pas près d'y arriver.
What:="*" : ? pointe sur la dernière ligne et colonne ?

J'ai parfois un fichier qui ne commence pas en A1, par exemple en C3. Le
mieux est-il de supprimer les lignes et colonnes vides ou bien
rechercher la PremiereColonne et la PremiereLigne ? et Comment ?
Cdt



Thierry 46
Le #19887081
Bonsoir,

C'est complexe et j'aimerais comprendre. Dans l'exemple il n'y a pas de
ligne ou colonne vide: il semble y avoir un souci dans Derligne et/ou
Dercol !

http://cjoint.com/?ifsHA56Iao


MichDenis a écrit :
Ben tu voulais éliminer les lignes vides et les colonnes vides
de la plage d'impression. La colonne A:A est vide et ne fait pas
parti de la zone d'impression.

Ceci était mon dernier message sur ce fil. Tu as suffisamment
d'informations sur le sujet pour modifier la procédure si besoin il y a !



"Thierry 46"
Re,

Si tu as le temps j'ai joint le fichier.
Il y a un cas où les coordonnées bas-droit ne sont pas prises en compte.
J'ai fait Rg.select pour le vérifier de visu.

http://cjoint.com/?ifq4oYU4m0

Cdt


MichDenis a écrit :
Essaie ceci :

'--------------------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim PremLig As Long, PremCol As Integer
Dim Rg As Range, Depart As String

With Worksheets("Feuil2")
With .UsedRange
Depart = .Cells(.Rows.Count, .Columns.Count).Address
If Depart = .Range("A1").Address Then Exit Sub
End With
PremLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext).Row

DerLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
PremCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext).Column
DerCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range(.Cells(PremLig, PremCol), .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'--------------------------------------------------






"Thierry 46" :
#
MichDenis a écrit :
Bonjour Thierry,

La procédure suivante imprime "TOUT" le contenu de
la "Feuil1" sur une "MÊME" feuille.

'---------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'---------------------------------------



"Thierry 46" :
#
Bonjour,

Je souhaiterai faire en VBA:
- selection: une zone d'impression de tout le contenu (de la première
ligne utilisée à la dernière ligne, idem colonne)
- de pouvoir imprimer sur une page en largeur, la longueur implicite
- de pouvoir mettre un en_tête, etc..

ActiveSheet.PageSetup.PrintArea = tout le texte selectionné

Pourrais-je avoir un début de piste pour pouvoir faire cette selection ?
Merci



Re bonjour,

Merci
En effet je n'étais pas près d'y arriver.
What:="*" : ? pointe sur la dernière ligne et colonne ?

J'ai parfois un fichier qui ne commence pas en A1, par exemple en C3. Le
mieux est-il de supprimer les lignes et colonnes vides ou bien
rechercher la PremiereColonne et la PremiereLigne ? et Comment ?
Cdt





Thierry 46
Le #19887261
Bonsoir,

J'ai modifié, et c'est ok:
DerLig = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
DerCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column

Pour PremLigne et PremCol c'est la solution de MichDenis

Cdt

MichDenis a écrit :
Ben tu voulais éliminer les lignes vides et les colonnes vides
de la plage d'impression. La colonne A:A est vide et ne fait pas
parti de la zone d'impression.

Ceci était mon dernier message sur ce fil. Tu as suffisamment
d'informations sur le sujet pour modifier la procédure si besoin il y a !



"Thierry 46"
Re,

Si tu as le temps j'ai joint le fichier.
Il y a un cas où les coordonnées bas-droit ne sont pas prises en compte.
J'ai fait Rg.select pour le vérifier de visu.

http://cjoint.com/?ifq4oYU4m0

Cdt


MichDenis a écrit :
Essaie ceci :

'--------------------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim PremLig As Long, PremCol As Integer
Dim Rg As Range, Depart As String

With Worksheets("Feuil2")
With .UsedRange
Depart = .Cells(.Rows.Count, .Columns.Count).Address
If Depart = .Range("A1").Address Then Exit Sub
End With
PremLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext).Row

DerLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
PremCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext).Column
DerCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range(.Cells(PremLig, PremCol), .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'--------------------------------------------------






"Thierry 46" :
#
MichDenis a écrit :
Bonjour Thierry,

La procédure suivante imprime "TOUT" le contenu de
la "Feuil1" sur une "MÊME" feuille.

'---------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'---------------------------------------



"Thierry 46" :
#
Bonjour,

Je souhaiterai faire en VBA:
- selection: une zone d'impression de tout le contenu (de la première
ligne utilisée à la dernière ligne, idem colonne)
- de pouvoir imprimer sur une page en largeur, la longueur implicite
- de pouvoir mettre un en_tête, etc..

ActiveSheet.PageSetup.PrintArea = tout le texte selectionné

Pourrais-je avoir un début de piste pour pouvoir faire cette selection ?
Merci



Re bonjour,

Merci
En effet je n'étais pas près d'y arriver.
What:="*" : ? pointe sur la dernière ligne et colonne ?

J'ai parfois un fichier qui ne commence pas en A1, par exemple en C3. Le
mieux est-il de supprimer les lignes et colonnes vides ou bien
rechercher la PremiereColonne et la PremiereLigne ? et Comment ?
Cdt





MichDenis
Le #19887541
Merci Thierry,
(je n'avais pas vraiment testé la dernière procédure)
;-)

Tu devrais conserver la paramètre "LookIn:=xlValues"
Si dans ta feuille, tu as une cellule contenant une formule
retournant "" , c'est sur elle que sera déterminé la dernière
colonne et dernière ligne. Et comme tu ne veux pas imprimer
des lignes ou colonnes vides ...

Pour déterminer l'étendue de la plage de cellules d'une feuille
en évitant d'inclure les lignes ou colonnes vides qu'elles soient
situées en début ou à la fin de la plage.
'-----------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim PremLig As Long, PremCol As Integer
Dim Rg As Range, Depart As String

With Worksheets("Test")
With .UsedRange
Depart = .Cells(.Rows.Count, .Columns.Count).Address
If Depart = .Range("A1").Address Then Exit Sub
End With
PremLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext).Row
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

PremCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext).Column

Set Rg = .Range(.Cells(PremLig, PremCol), .Cells(DerLig, DerCol))
Rg.Activate
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
' .PrintPreview
' .PageSetup.PrintArea = ""
End With
End Sub
'-----------------------------------------





"Thierry 46"
Bonsoir,

J'ai modifié, et c'est ok:
DerLig = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
DerCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column

Pour PremLigne et PremCol c'est la solution de MichDenis

Cdt

MichDenis a écrit :
Ben tu voulais éliminer les lignes vides et les colonnes vides
de la plage d'impression. La colonne A:A est vide et ne fait pas
parti de la zone d'impression.

Ceci était mon dernier message sur ce fil. Tu as suffisamment
d'informations sur le sujet pour modifier la procédure si besoin il y a !



"Thierry 46" :

Re,

Si tu as le temps j'ai joint le fichier.
Il y a un cas où les coordonnées bas-droit ne sont pas prises en compte.
J'ai fait Rg.select pour le vérifier de visu.

http://cjoint.com/?ifq4oYU4m0

Cdt


MichDenis a écrit :
Essaie ceci :

'--------------------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim PremLig As Long, PremCol As Integer
Dim Rg As Range, Depart As String

With Worksheets("Feuil2")
With .UsedRange
Depart = .Cells(.Rows.Count, .Columns.Count).Address
If Depart = .Range("A1").Address Then Exit Sub
End With
PremLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext).Row

DerLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
PremCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext).Column
DerCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range(.Cells(PremLig, PremCol), .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'--------------------------------------------------






"Thierry 46" :
#
MichDenis a écrit :
Bonjour Thierry,

La procédure suivante imprime "TOUT" le contenu de
la "Feuil1" sur une "MÊME" feuille.

'---------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'---------------------------------------



"Thierry 46" discussion
:
#
Bonjour,

Je souhaiterai faire en VBA:
- selection: une zone d'impression de tout le contenu (de la première
ligne utilisée à la dernière ligne, idem colonne)
- de pouvoir imprimer sur une page en largeur, la longueur implicite
- de pouvoir mettre un en_tête, etc..

ActiveSheet.PageSetup.PrintArea = tout le texte selectionné

Pourrais-je avoir un début de piste pour pouvoir faire cette selection ?
Merci



Re bonjour,

Merci
En effet je n'étais pas près d'y arriver.
What:="*" : ? pointe sur la dernière ligne et colonne ?

J'ai parfois un fichier qui ne commence pas en A1, par exemple en C3. Le
mieux est-il de supprimer les lignes et colonnes vides ou bien
rechercher la PremiereColonne et la PremiereLigne ? et Comment ?
Cdt





Thierry 46
Le #19887901
Bonsoir,

C'est parfait.
Merci de ta disponibilité

Cdt

MichDenis a écrit :
Merci Thierry,
(je n'avais pas vraiment testé la dernière procédure)
;-)

Tu devrais conserver la paramètre "LookIn:=xlValues"
Si dans ta feuille, tu as une cellule contenant une formule
retournant "" , c'est sur elle que sera déterminé la dernière
colonne et dernière ligne. Et comme tu ne veux pas imprimer
des lignes ou colonnes vides ...

Pour déterminer l'étendue de la plage de cellules d'une feuille
en évitant d'inclure les lignes ou colonnes vides qu'elles soient
situées en début ou à la fin de la plage.
'-----------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim PremLig As Long, PremCol As Integer
Dim Rg As Range, Depart As String

With Worksheets("Test")
With .UsedRange
Depart = .Cells(.Rows.Count, .Columns.Count).Address
If Depart = .Range("A1").Address Then Exit Sub
End With
PremLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext).Row
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

PremCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext).Column

Set Rg = .Range(.Cells(PremLig, PremCol), .Cells(DerLig, DerCol))
Rg.Activate
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
' .PrintPreview
' .PageSetup.PrintArea = ""
End With
End Sub
'-----------------------------------------





"Thierry 46"
Bonsoir,

J'ai modifié, et c'est ok:
DerLig = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
DerCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column

Pour PremLigne et PremCol c'est la solution de MichDenis

Cdt

MichDenis a écrit :
Ben tu voulais éliminer les lignes vides et les colonnes vides
de la plage d'impression. La colonne A:A est vide et ne fait pas
parti de la zone d'impression.

Ceci était mon dernier message sur ce fil. Tu as suffisamment
d'informations sur le sujet pour modifier la procédure si besoin il y a !



"Thierry 46" :

Re,

Si tu as le temps j'ai joint le fichier.
Il y a un cas où les coordonnées bas-droit ne sont pas prises en compte.
J'ai fait Rg.select pour le vérifier de visu.

http://cjoint.com/?ifq4oYU4m0

Cdt


MichDenis a écrit :
Essaie ceci :

'--------------------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim PremLig As Long, PremCol As Integer
Dim Rg As Range, Depart As String

With Worksheets("Feuil2")
With .UsedRange
Depart = .Cells(.Rows.Count, .Columns.Count).Address
If Depart = .Range("A1").Address Then Exit Sub
End With
PremLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext).Row

DerLig = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
PremCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext).Column
DerCol = .Cells.Find(What:="*", _
After:=.Range(Depart), _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range(.Cells(PremLig, PremCol), .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'--------------------------------------------------






"Thierry 46" :
#
MichDenis a écrit :
Bonjour Thierry,

La procédure suivante imprime "TOUT" le contenu de
la "Feuil1" sur une "MÊME" feuille.

'---------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
With .PageSetup
.PrintArea = Rg.Address
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.PrintOut
.PageSetup.PrintArea = ""
End With
End Sub
'---------------------------------------



"Thierry 46" discussion
:
#
Bonjour,

Je souhaiterai faire en VBA:
- selection: une zone d'impression de tout le contenu (de la première
ligne utilisée à la dernière ligne, idem colonne)
- de pouvoir imprimer sur une page en largeur, la longueur implicite
- de pouvoir mettre un en_tête, etc..

ActiveSheet.PageSetup.PrintArea = tout le texte selectionné

Pourrais-je avoir un début de piste pour pouvoir faire cette selection ?
Merci



Re bonjour,

Merci
En effet je n'étais pas près d'y arriver.
What:="*" : ? pointe sur la dernière ligne et colonne ?

J'ai parfois un fichier qui ne commence pas en A1, par exemple en C3. Le
mieux est-il de supprimer les lignes et colonnes vides ou bien
rechercher la PremiereColonne et la PremiereLigne ? et Comment ?
Cdt







Publicité
Poster une réponse
Anonyme