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

zone d'impression automatique

10 réponses
Avatar
alaska
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2 se remplit
automatiquement par rapport aux données de la feuille 1. Ma feuille2 peut
avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou procédure
afin que la zone d'impression s'adapte à la longueur du texte car sinon pour
3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée

10 réponses

Avatar
MichDenis
Bonjour Alaska,

Tu devrais apporter des précisions sur la disposition de tes données dans ta feuil2.

Difficile d'établir une procédure sans connaître la disposition des données de cette feuille au fur et à mesure qu'elle
est remplie.


Salutations!



"alaska" a écrit dans le message de news: %
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2 se remplit
automatiquement par rapport aux données de la feuille 1. Ma feuille2 peut
avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou procédure
afin que la zone d'impression s'adapte à la longueur du texte car sinon pour
3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée
Avatar
docm
Bonjour.

Ceci devrait redéfinir la zone d'impression.

ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address



"alaska" wrote in message
news:#
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2 se remplit
automatiquement par rapport aux données de la feuille 1. Ma feuille2 peut
avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou procédure
afin que la zone d'impression s'adapte à la longueur du texte car sinon
pour

3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée




Avatar
guizmo
Bonjour,

Je te remercie pour ta réponse par contre, je suis débutante en VBA , voici
la formule que j'ai mis dans Worksheet: ma feuille2 se nomme DEVIS.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.PageSetup.PrintArea = devis.UsedRange.Address

End Sub

Et un message d'erreur me met "erreur d'exécution '424' objet requis"

Pour répondre à la question de Michdenis sur ma feuille2(devis) : De la
celulle A jusqu'a G et de la ligne 1 à 24, les éléments sont rentrés en dur.
A partir de la ligne 25, les éléments s'inscrivent par le biais de formules.
Puis à partir de l ligne 84 il y'a 3 lignes d'élément en dur. Est ce assez
explicite?

Merci à vous deux




"docm" a écrit dans le message de news:

Bonjour.

Ceci devrait redéfinir la zone d'impression.

ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address



"alaska" wrote in message
news:#
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2 se
remplit


automatiquement par rapport aux données de la feuille 1. Ma feuille2
peut


avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou procédure
afin que la zone d'impression s'adapte à la longueur du texte car sinon
pour

3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée








Avatar
docm
Tu ne peux pas utiliser devis.UsedRange.Address
car l'objet, ce n'est pas devis. C'est Feuil2.

Donc tu peux dire
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address

Tu peux dire aussi
ActiveSheet.PageSetup.PrintArea = Worksheets("devis").UsedRange.Address

ou encore
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address

ou encore
Feuil2.PageSetup.PrintArea = Feuil2.UsedRange.Address

"guizmo" wrote in message
news:#ZoF9#
Bonjour,

Je te remercie pour ta réponse par contre, je suis débutante en VBA ,
voici

la formule que j'ai mis dans Worksheet: ma feuille2 se nomme DEVIS.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.PageSetup.PrintArea = devis.UsedRange.Address

End Sub

Et un message d'erreur me met "erreur d'exécution '424' objet requis"

Pour répondre à la question de Michdenis sur ma feuille2(devis) : De la
celulle A jusqu'a G et de la ligne 1 à 24, les éléments sont rentrés en
dur.

A partir de la ligne 25, les éléments s'inscrivent par le biais de
formules.

Puis à partir de l ligne 84 il y'a 3 lignes d'élément en dur. Est ce assez
explicite?

Merci à vous deux




"docm" a écrit dans le message de news:

Bonjour.

Ceci devrait redéfinir la zone d'impression.

ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address



"alaska" wrote in message
news:#
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2 se
remplit


automatiquement par rapport aux données de la feuille 1. Ma feuille2
peut


avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédure



afin que la zone d'impression s'adapte à la longueur du texte car
sinon



pour
3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée












Avatar
alaska
Merci à toi, cela marche, c'est magique!

bonne soirée

"docm" a écrit dans le message de news:
uJ%
Tu ne peux pas utiliser devis.UsedRange.Address
car l'objet, ce n'est pas devis. C'est Feuil2.

Donc tu peux dire
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address

Tu peux dire aussi
ActiveSheet.PageSetup.PrintArea = Worksheets("devis").UsedRange.Address

ou encore
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address

ou encore
Feuil2.PageSetup.PrintArea = Feuil2.UsedRange.Address

"guizmo" wrote in message
news:#ZoF9#
Bonjour,

Je te remercie pour ta réponse par contre, je suis débutante en VBA ,
voici

la formule que j'ai mis dans Worksheet: ma feuille2 se nomme DEVIS.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.PageSetup.PrintArea = devis.UsedRange.Address

End Sub

Et un message d'erreur me met "erreur d'exécution '424' objet requis"

Pour répondre à la question de Michdenis sur ma feuille2(devis) : De la
celulle A jusqu'a G et de la ligne 1 à 24, les éléments sont rentrés en
dur.

A partir de la ligne 25, les éléments s'inscrivent par le biais de
formules.

Puis à partir de l ligne 84 il y'a 3 lignes d'élément en dur. Est ce
assez
explicite?

Merci à vous deux




"docm" a écrit dans le message de news:

Bonjour.

Ceci devrait redéfinir la zone d'impression.

ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address



"alaska" wrote in message
news:#
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2 se
remplit


automatiquement par rapport aux données de la feuille 1. Ma feuille2
peut


avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédure



afin que la zone d'impression s'adapte à la longueur du texte car
sinon



pour
3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée
















Avatar
alaska
Je me suis réjouis trop vite, effectivement cela fonctionne mais mon soucis
est que j'ai des formules à partir de la ligne 25, et la zone d'impression
considère ces formules comme du texte (c'est évident en réalité).Quand ces
formules on un résultat négatif rien ne doit s'inscrire sur ma feuille devis
à partir de la ligne 25, sinon un texte de plusieurs s'inscrit et c'est là
que rentre en jeux ma zone d'impression automatique. Comment m'en sortir?

Peut-on pas faire autrement et au lieu de mettre des formules dans ma
feuille devis, je les mets dans ma feuille1 et =si(feuille!1C3>0;"blablabla"
dans devis!f25;"") Dans cette solution il me manque simplement la formule
pour dire à mettre dans l'autre feuille.

merci et désolée pour la complexité de ma demande.

"docm" a écrit dans le message de news:
uJ%
Tu ne peux pas utiliser devis.UsedRange.Address
car l'objet, ce n'est pas devis. C'est Feuil2.

Donc tu peux dire
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address

Tu peux dire aussi
ActiveSheet.PageSetup.PrintArea = Worksheets("devis").UsedRange.Address

ou encore
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address

ou encore
Feuil2.PageSetup.PrintArea = Feuil2.UsedRange.Address

"guizmo" wrote in message
news:#ZoF9#
Bonjour,

Je te remercie pour ta réponse par contre, je suis débutante en VBA ,
voici

la formule que j'ai mis dans Worksheet: ma feuille2 se nomme DEVIS.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.PageSetup.PrintArea = devis.UsedRange.Address

End Sub

Et un message d'erreur me met "erreur d'exécution '424' objet requis"

Pour répondre à la question de Michdenis sur ma feuille2(devis) : De la
celulle A jusqu'a G et de la ligne 1 à 24, les éléments sont rentrés en
dur.

A partir de la ligne 25, les éléments s'inscrivent par le biais de
formules.

Puis à partir de l ligne 84 il y'a 3 lignes d'élément en dur. Est ce
assez
explicite?

Merci à vous deux




"docm" a écrit dans le message de news:

Bonjour.

Ceci devrait redéfinir la zone d'impression.

ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address



"alaska" wrote in message
news:#
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2 se
remplit


automatiquement par rapport aux données de la feuille 1. Ma feuille2
peut


avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédure



afin que la zone d'impression s'adapte à la longueur du texte car
sinon



pour
3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée
















Avatar
docm
Voici qui me semble répondre à ta question subsidiaire.

Sub Set_Print_Area()
LigneDesFormules = 25
Dim DerniereCellule As Range
Set DerniereCellule = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0)
Do Until Application.Count(DerniereCellule.EntireRow) <> 0
Set DerniereCellule = DerniereCellule.Offset(-1, 0)
Loop
Do Until Application.Count(DerniereCellule.EntireColumn) <> 0
Set DerniereCellule = DerniereCellule.Offset(0, -1)
Loop

For y = DerniereCellule.Row To LigneDesFormules Step -1
ok = False

For x = 1 To DerniereCellule.Column
Cells(y, x).Select
If Cells(y, x).Text <> "" Then
If Cells(y, x).Value >= 0 Then
ok = True
Exit For
End If
End If
Next
If ok = False Then
Set DerniereCellule = DerniereCellule.Offset(-1, 0)
Else
Exit For
End If
Next

For x = DerniereCellule.Column To 1 Step -1
ok = False
For y = LigneDesFormules To DerniereCellule.Row
Cells(y, x).Select
If Cells(y, x).Text <> "" Then
If Cells(y, x).Value >= 0 Then
ok = True
Exit For
End If
End If
Next
If ok = False Then
Set DerniereCellule = DerniereCellule.Offset(0, -1)
Else
Exit For
End If
Next

ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1),
DerniereCellule).Address
End Sub


"alaska" wrote in message
news:#
Je me suis réjouis trop vite, effectivement cela fonctionne mais mon
soucis

est que j'ai des formules à partir de la ligne 25, et la zone
d'impression

considère ces formules comme du texte (c'est évident en réalité).Quand ces
formules on un résultat négatif rien ne doit s'inscrire sur ma feuille
devis

à partir de la ligne 25, sinon un texte de plusieurs s'inscrit et c'est là
que rentre en jeux ma zone d'impression automatique. Comment m'en sortir?

Peut-on pas faire autrement et au lieu de mettre des formules dans ma
feuille devis, je les mets dans ma feuille1 et
=si(feuille!1C3>0;"blablabla"

dans devis!f25;"") Dans cette solution il me manque simplement la formule
pour dire à mettre dans l'autre feuille.

merci et désolée pour la complexité de ma demande.

"docm" a écrit dans le message de news:
uJ%
Tu ne peux pas utiliser devis.UsedRange.Address
car l'objet, ce n'est pas devis. C'est Feuil2.

Donc tu peux dire
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address

Tu peux dire aussi
ActiveSheet.PageSetup.PrintArea = Worksheets("devis").UsedRange.Address

ou encore
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address

ou encore
Feuil2.PageSetup.PrintArea = Feuil2.UsedRange.Address

"guizmo" wrote in message
news:#ZoF9#
Bonjour,

Je te remercie pour ta réponse par contre, je suis débutante en VBA ,
voici

la formule que j'ai mis dans Worksheet: ma feuille2 se nomme DEVIS.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.PageSetup.PrintArea = devis.UsedRange.Address

End Sub

Et un message d'erreur me met "erreur d'exécution '424' objet requis"

Pour répondre à la question de Michdenis sur ma feuille2(devis) : De la
celulle A jusqu'a G et de la ligne 1 à 24, les éléments sont rentrés en
dur.

A partir de la ligne 25, les éléments s'inscrivent par le biais de
formules.

Puis à partir de l ligne 84 il y'a 3 lignes d'élément en dur. Est ce
assez
explicite?

Merci à vous deux




"docm" a écrit dans le message de news:

Bonjour.

Ceci devrait redéfinir la zone d'impression.

ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address



"alaska" wrote in message
news:#
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2 se
remplit


automatiquement par rapport aux données de la feuille 1. Ma
feuille2





peut
avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédure



afin que la zone d'impression s'adapte à la longueur du texte car
sinon



pour
3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée




















Avatar
alaska
Bonjour,

Je te remercie pour ta formule, je l'ai recopié dan le VBA de ma feuille
devis sous la phrase:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Par contre il me met un message d'erreur:erreur de compilation end sub
attendu
Je n'ai rien modifié dans la formule.

Désolée!

Bonne journée
"docm" a écrit dans le message de news:
%
Voici qui me semble répondre à ta question subsidiaire.

Sub Set_Print_Area()
LigneDesFormules = 25
Dim DerniereCellule As Range
Set DerniereCellule = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0)
Do Until Application.Count(DerniereCellule.EntireRow) <> 0
Set DerniereCellule = DerniereCellule.Offset(-1, 0)
Loop
Do Until Application.Count(DerniereCellule.EntireColumn) <> 0
Set DerniereCellule = DerniereCellule.Offset(0, -1)
Loop

For y = DerniereCellule.Row To LigneDesFormules Step -1
ok = False

For x = 1 To DerniereCellule.Column
Cells(y, x).Select
If Cells(y, x).Text <> "" Then
If Cells(y, x).Value >= 0 Then
ok = True
Exit For
End If
End If
Next
If ok = False Then
Set DerniereCellule = DerniereCellule.Offset(-1, 0)
Else
Exit For
End If
Next

For x = DerniereCellule.Column To 1 Step -1
ok = False
For y = LigneDesFormules To DerniereCellule.Row
Cells(y, x).Select
If Cells(y, x).Text <> "" Then
If Cells(y, x).Value >= 0 Then
ok = True
Exit For
End If
End If
Next
If ok = False Then
Set DerniereCellule = DerniereCellule.Offset(0, -1)
Else
Exit For
End If
Next

ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1),
DerniereCellule).Address
End Sub


"alaska" wrote in message
news:#
Je me suis réjouis trop vite, effectivement cela fonctionne mais mon
soucis

est que j'ai des formules à partir de la ligne 25, et la zone
d'impression

considère ces formules comme du texte (c'est évident en réalité).Quand
ces
formules on un résultat négatif rien ne doit s'inscrire sur ma feuille
devis

à partir de la ligne 25, sinon un texte de plusieurs s'inscrit et c'est

que rentre en jeux ma zone d'impression automatique. Comment m'en sortir?

Peut-on pas faire autrement et au lieu de mettre des formules dans ma
feuille devis, je les mets dans ma feuille1 et
=si(feuille!1C3>0;"blablabla"

dans devis!f25;"") Dans cette solution il me manque simplement la formule
pour dire à mettre dans l'autre feuille.

merci et désolée pour la complexité de ma demande.

"docm" a écrit dans le message de news:
uJ%
Tu ne peux pas utiliser devis.UsedRange.Address
car l'objet, ce n'est pas devis. C'est Feuil2.

Donc tu peux dire
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address

Tu peux dire aussi
ActiveSheet.PageSetup.PrintArea = Worksheets("devis").UsedRange.Address

ou encore
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address

ou encore
Feuil2.PageSetup.PrintArea = Feuil2.UsedRange.Address

"guizmo" wrote in message
news:#ZoF9#
Bonjour,

Je te remercie pour ta réponse par contre, je suis débutante en VBA ,
voici

la formule que j'ai mis dans Worksheet: ma feuille2 se nomme DEVIS.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.PageSetup.PrintArea = devis.UsedRange.Address

End Sub

Et un message d'erreur me met "erreur d'exécution '424' objet requis"

Pour répondre à la question de Michdenis sur ma feuille2(devis) : De
la
celulle A jusqu'a G et de la ligne 1 à 24, les éléments sont rentrés
en
dur.

A partir de la ligne 25, les éléments s'inscrivent par le biais de
formules.

Puis à partir de l ligne 84 il y'a 3 lignes d'élément en dur. Est ce
assez
explicite?

Merci à vous deux




"docm" a écrit dans le message de news:

Bonjour.

Ceci devrait redéfinir la zone d'impression.

ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address



"alaska" wrote in message
news:#
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2 se
remplit


automatiquement par rapport aux données de la feuille 1. Ma
feuille2





peut
avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédure



afin que la zone d'impression s'adapte à la longueur du texte car
sinon



pour
3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée
























Avatar
docm
Essaie le code suivant sous la phrase
Private Sub Worksheet_Change(ByVal Target As Excel.Range)


Dim DerniereCellule As Range
Set DerniereCellule = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0)

For y = DerniereCellule.Row To 25 Step -1
ok = False

For x = 1 To DerniereCellule.Column

If Cells(y, x).Text <> "" Then
If Cells(y, x).Value >= 0 Then
ok = True
Exit For
End If
End If
Next

If ok = False Then
Set DerniereCellule = DerniereCellule.Offset(-1, 0)
Else
Exit For
End If
Next
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1),
DerniereCellule).Address

Salutations.

"alaska" wrote in message
news:
Bonjour,

Je te remercie pour ta formule, je l'ai recopié dan le VBA de ma feuille
devis sous la phrase:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Par contre il me met un message d'erreur:erreur de compilation end sub
attendu
Je n'ai rien modifié dans la formule.

Désolée!

Bonne journée
"docm" a écrit dans le message de news:
%
Voici qui me semble répondre à ta question subsidiaire.

Sub Set_Print_Area()
LigneDesFormules = 25
Dim DerniereCellule As Range
Set DerniereCellule = Cells.SpecialCells(xlCellTypeLastCell).Offset(1,
0)


Do Until Application.Count(DerniereCellule.EntireRow) <> 0
Set DerniereCellule = DerniereCellule.Offset(-1, 0)
Loop
Do Until Application.Count(DerniereCellule.EntireColumn) <> 0
Set DerniereCellule = DerniereCellule.Offset(0, -1)
Loop

For y = DerniereCellule.Row To LigneDesFormules Step -1
ok = False

For x = 1 To DerniereCellule.Column
Cells(y, x).Select
If Cells(y, x).Text <> "" Then
If Cells(y, x).Value >= 0 Then
ok = True
Exit For
End If
End If
Next
If ok = False Then
Set DerniereCellule = DerniereCellule.Offset(-1, 0)
Else
Exit For
End If
Next

For x = DerniereCellule.Column To 1 Step -1
ok = False
For y = LigneDesFormules To DerniereCellule.Row
Cells(y, x).Select
If Cells(y, x).Text <> "" Then
If Cells(y, x).Value >= 0 Then
ok = True
Exit For
End If
End If
Next
If ok = False Then
Set DerniereCellule = DerniereCellule.Offset(0, -1)
Else
Exit For
End If
Next

ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1),
DerniereCellule).Address
End Sub


"alaska" wrote in message
news:#
Je me suis réjouis trop vite, effectivement cela fonctionne mais mon
soucis

est que j'ai des formules à partir de la ligne 25, et la zone
d'impression

considère ces formules comme du texte (c'est évident en réalité).Quand
ces
formules on un résultat négatif rien ne doit s'inscrire sur ma feuille
devis

à partir de la ligne 25, sinon un texte de plusieurs s'inscrit et c'est

que rentre en jeux ma zone d'impression automatique. Comment m'en
sortir?




Peut-on pas faire autrement et au lieu de mettre des formules dans ma
feuille devis, je les mets dans ma feuille1 et
=si(feuille!1C3>0;"blablabla"

dans devis!f25;"") Dans cette solution il me manque simplement la
formule



pour dire à mettre dans l'autre feuille.

merci et désolée pour la complexité de ma demande.

"docm" a écrit dans le message de news:
uJ%
Tu ne peux pas utiliser devis.UsedRange.Address
car l'objet, ce n'est pas devis. C'est Feuil2.

Donc tu peux dire
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address

Tu peux dire aussi
ActiveSheet.PageSetup.PrintArea Worksheets("devis").UsedRange.Address

ou encore
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address

ou encore
Feuil2.PageSetup.PrintArea = Feuil2.UsedRange.Address

"guizmo" wrote in message
news:#ZoF9#
Bonjour,

Je te remercie pour ta réponse par contre, je suis débutante en VBA
,





voici
la formule que j'ai mis dans Worksheet: ma feuille2 se nomme DEVIS.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.PageSetup.PrintArea = devis.UsedRange.Address

End Sub

Et un message d'erreur me met "erreur d'exécution '424' objet
requis"






Pour répondre à la question de Michdenis sur ma feuille2(devis) : De
la
celulle A jusqu'a G et de la ligne 1 à 24, les éléments sont rentrés
en
dur.

A partir de la ligne 25, les éléments s'inscrivent par le biais de
formules.

Puis à partir de l ligne 84 il y'a 3 lignes d'élément en dur. Est ce
assez
explicite?

Merci à vous deux




"docm" a écrit dans le message de news:

Bonjour.

Ceci devrait redéfinir la zone d'impression.

ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address



"alaska" wrote in message
news:#
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2
se







remplit
automatiquement par rapport aux données de la feuille 1. Ma
feuille2





peut
avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédure



afin que la zone d'impression s'adapte à la longueur du texte
car







sinon
pour
3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée




























Avatar
guizmo
Euréka cela marche!

Je vous remercie tous les deux pour votre aide.

Bonne journée
"docm" a écrit dans le message de news:

Essaie le code suivant sous la phrase
Private Sub Worksheet_Change(ByVal Target As Excel.Range)


Dim DerniereCellule As Range
Set DerniereCellule = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0)

For y = DerniereCellule.Row To 25 Step -1
ok = False

For x = 1 To DerniereCellule.Column

If Cells(y, x).Text <> "" Then
If Cells(y, x).Value >= 0 Then
ok = True
Exit For
End If
End If
Next

If ok = False Then
Set DerniereCellule = DerniereCellule.Offset(-1, 0)
Else
Exit For
End If
Next
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1),
DerniereCellule).Address

Salutations.

"alaska" wrote in message
news:
Bonjour,

Je te remercie pour ta formule, je l'ai recopié dan le VBA de ma feuille
devis sous la phrase:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Par contre il me met un message d'erreur:erreur de compilation end sub
attendu
Je n'ai rien modifié dans la formule.

Désolée!

Bonne journée
"docm" a écrit dans le message de news:
%
Voici qui me semble répondre à ta question subsidiaire.

Sub Set_Print_Area()
LigneDesFormules = 25
Dim DerniereCellule As Range
Set DerniereCellule = Cells.SpecialCells(xlCellTypeLastCell).Offset(1,
0)


Do Until Application.Count(DerniereCellule.EntireRow) <> 0
Set DerniereCellule = DerniereCellule.Offset(-1, 0)
Loop
Do Until Application.Count(DerniereCellule.EntireColumn) <> 0
Set DerniereCellule = DerniereCellule.Offset(0, -1)
Loop

For y = DerniereCellule.Row To LigneDesFormules Step -1
ok = False

For x = 1 To DerniereCellule.Column
Cells(y, x).Select
If Cells(y, x).Text <> "" Then
If Cells(y, x).Value >= 0 Then
ok = True
Exit For
End If
End If
Next
If ok = False Then
Set DerniereCellule = DerniereCellule.Offset(-1, 0)
Else
Exit For
End If
Next

For x = DerniereCellule.Column To 1 Step -1
ok = False
For y = LigneDesFormules To DerniereCellule.Row
Cells(y, x).Select
If Cells(y, x).Text <> "" Then
If Cells(y, x).Value >= 0 Then
ok = True
Exit For
End If
End If
Next
If ok = False Then
Set DerniereCellule = DerniereCellule.Offset(0, -1)
Else
Exit For
End If
Next

ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1),
DerniereCellule).Address
End Sub


"alaska" wrote in message
news:#
Je me suis réjouis trop vite, effectivement cela fonctionne mais mon
soucis

est que j'ai des formules à partir de la ligne 25, et la zone
d'impression

considère ces formules comme du texte (c'est évident en
réalité).Quand




ces
formules on un résultat négatif rien ne doit s'inscrire sur ma
feuille




devis
à partir de la ligne 25, sinon un texte de plusieurs s'inscrit et
c'est





que rentre en jeux ma zone d'impression automatique. Comment m'en
sortir?




Peut-on pas faire autrement et au lieu de mettre des formules dans ma
feuille devis, je les mets dans ma feuille1 et
=si(feuille!1C3>0;"blablabla"

dans devis!f25;"") Dans cette solution il me manque simplement la
formule



pour dire à mettre dans l'autre feuille.

merci et désolée pour la complexité de ma demande.

"docm" a écrit dans le message de news:
uJ%
Tu ne peux pas utiliser devis.UsedRange.Address
car l'objet, ce n'est pas devis. C'est Feuil2.

Donc tu peux dire
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address

Tu peux dire aussi
ActiveSheet.PageSetup.PrintArea > Worksheets("devis").UsedRange.Address

ou encore
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address

ou encore
Feuil2.PageSetup.PrintArea = Feuil2.UsedRange.Address

"guizmo" wrote in message
news:#ZoF9#
Bonjour,

Je te remercie pour ta réponse par contre, je suis débutante en
VBA






,
voici
la formule que j'ai mis dans Worksheet: ma feuille2 se nomme
DEVIS.







Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.PageSetup.PrintArea = devis.UsedRange.Address

End Sub

Et un message d'erreur me met "erreur d'exécution '424' objet
requis"






Pour répondre à la question de Michdenis sur ma feuille2(devis) :
De






la
celulle A jusqu'a G et de la ligne 1 à 24, les éléments sont
rentrés






en
dur.

A partir de la ligne 25, les éléments s'inscrivent par le biais de
formules.

Puis à partir de l ligne 84 il y'a 3 lignes d'élément en dur. Est
ce






assez
explicite?

Merci à vous deux




"docm" a écrit dans le message de news:

Bonjour.

Ceci devrait redéfinir la zone d'impression.

ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address



"alaska" wrote in message
news:#
Bonjour à tous,

Dans un classeur excel, j'ai feuille1 et feuille2. Ma feuille2
se







remplit
automatiquement par rapport aux données de la feuille 1. Ma
feuille2





peut
avoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédure



afin que la zone d'impression s'adapte à la longueur du texte
car







sinon
pour
3 lignes j'ai 3 feuilles qui sortent, pas cool!

En vous remerciant par avance
bonne journée