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

[VBA] Selection d'une zone d'impression

9 réponses
Avatar
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

9 réponses

Avatar
MichDenis
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" a écrit dans le message de groupe de 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
Avatar
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" a écrit dans le message de groupe de 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
Avatar
MichDenis
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" a écrit dans le message de groupe de discussion :
#
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" a écrit dans le message de groupe de 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
Avatar
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" a écrit dans le message de groupe de discussion :
#
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" a écrit dans le message de groupe de 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



Avatar
MichDenis
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" a écrit dans le message de groupe de discussion :

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" a écrit dans le message de groupe de discussion
:
#
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" a écrit dans le message de groupe de 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



Avatar
Thierry 46
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" a écrit dans le message de groupe de discussion :

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" a écrit dans le message de groupe de discussion
:
#
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" a écrit dans le message de groupe de 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





Avatar
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" a écrit dans le message de groupe de discussion :

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" a écrit dans le message de groupe de discussion
:
#
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" a écrit dans le message de groupe de 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





Avatar
MichDenis
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" a écrit dans le message de groupe de discussion :

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" a écrit dans le message de groupe de discussion
:

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" a écrit dans le message de groupe de discussion
:
#
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" a écrit dans le message de groupe de
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





Avatar
Thierry 46
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" a écrit dans le message de groupe de discussion :

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" a écrit dans le message de groupe de discussion
:

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" a écrit dans le message de groupe de discussion
:
#
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" a écrit dans le message de groupe de
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