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
soucisest que j'ai des formules à partir de la ligne 25, et la zone
d'impressionconsidè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 ,
voicila 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
remplitautomatiquement par rapport aux données de la feuille 1. Ma
feuille2peutavoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédureafin que la zone d'impression s'adapte à la longueur du texte car
sinonpour3 lignes j'ai 3 feuilles qui sortent, pas cool!
En vous remerciant par avance
bonne journée
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" <alaska.afp@tiscali.fr> wrote in message
news:#fJz8IOJFHA.2764@tk2msftngp13.phx.gbl...
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" <docmarti@spamcolba.net> a écrit dans le message de news:
uJ%23sePKJFHA.656@TK2MSFTNGP14.phx.gbl...
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" <fortier.lagrue@free.fr> wrote in message
news:#ZoF9#JJFHA.3332@TK2MSFTNGP15.phx.gbl...
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" <docmarti@spamcolba.net> a écrit dans le message de news:
uAZ9juGJFHA.1176@TK2MSFTNGP15.phx.gbl...
Bonjour.
Ceci devrait redéfinir la zone d'impression.
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address
"alaska" <alaska.afp@tiscali.fr> wrote in message
news:#fUSVZGJFHA.2700@TK2MSFTNGP09.phx.gbl...
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
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
soucisest que j'ai des formules à partir de la ligne 25, et la zone
d'impressionconsidè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 ,
voicila 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
remplitautomatiquement par rapport aux données de la feuille 1. Ma
feuille2peutavoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédureafin que la zone d'impression s'adapte à la longueur du texte car
sinonpour3 lignes j'ai 3 feuilles qui sortent, pas cool!
En vous remerciant par avance
bonne journée
Bonjour Alaska,
Je crois que tu as omis de copier la dernière ligne de la procédure : End
sub à la procédure !
Salutations!
"alaska" a écrit dans le message de news:
Bonjour,
Je te remercie DOCM 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
soucisest que j'ai des formules à partir de la ligne 25, et la zone
d'impressionconsidè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 ,
voicila 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
remplitautomatiquement par rapport aux données de la feuille 1. Ma
feuille2peutavoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédureafin que la zone d'impression s'adapte à la longueur du texte car
sinonpour3 lignes j'ai 3 feuilles qui sortent, pas cool!
En vous remerciant par avance
bonne journée
Bonjour Alaska,
Je crois que tu as omis de copier la dernière ligne de la procédure : End
sub à la procédure !
Salutations!
"alaska" <alaska.afp@tiscali.fr> a écrit dans le message de news:
OgWFx2aJFHA.1860@TK2MSFTNGP15.phx.gbl...
Bonjour,
Je te remercie DOCM 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" <docmarti@spamcolba.net> a écrit dans le message de news:
%23gI63oPJFHA.2716@TK2MSFTNGP15.phx.gbl...
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" <alaska.afp@tiscali.fr> wrote in message
news:#fJz8IOJFHA.2764@tk2msftngp13.phx.gbl...
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" <docmarti@spamcolba.net> a écrit dans le message de news:
uJ%23sePKJFHA.656@TK2MSFTNGP14.phx.gbl...
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" <fortier.lagrue@free.fr> wrote in message
news:#ZoF9#JJFHA.3332@TK2MSFTNGP15.phx.gbl...
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" <docmarti@spamcolba.net> a écrit dans le message de news:
uAZ9juGJFHA.1176@TK2MSFTNGP15.phx.gbl...
Bonjour.
Ceci devrait redéfinir la zone d'impression.
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address
"alaska" <alaska.afp@tiscali.fr> wrote in message
news:#fUSVZGJFHA.2700@TK2MSFTNGP09.phx.gbl...
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
Bonjour Alaska,
Je crois que tu as omis de copier la dernière ligne de la procédure : End
sub à la procédure !
Salutations!
"alaska" a écrit dans le message de news:
Bonjour,
Je te remercie DOCM 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
soucisest que j'ai des formules à partir de la ligne 25, et la zone
d'impressionconsidè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 ,
voicila 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
remplitautomatiquement par rapport aux données de la feuille 1. Ma
feuille2peutavoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédureafin que la zone d'impression s'adapte à la longueur du texte car
sinonpour3 lignes j'ai 3 feuilles qui sortent, pas cool!
En vous remerciant par avance
bonne journée
Bonjour Alaska,
Je crois que tu as omis de copier la dernière ligne de la procédure : End
sub à la procédure !
Salutations!
"alaska" a écrit dans le message de news:
Bonjour,
Je te remercie DOCM 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
soucisest que j'ai des formules à partir de la ligne 25, et la zone
d'impressionconsidè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 ,
voicila 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
remplitautomatiquement par rapport aux données de la feuille 1. Ma
feuille2peutavoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédureafin que la zone d'impression s'adapte à la longueur du texte car
sinonpour3 lignes j'ai 3 feuilles qui sortent, pas cool!
En vous remerciant par avance
bonne journée
Bonjour Alaska,
Je crois que tu as omis de copier la dernière ligne de la procédure : End
sub à la procédure !
Salutations!
"alaska" <alaska.afp@tiscali.fr> a écrit dans le message de news:
OgWFx2aJFHA.1860@TK2MSFTNGP15.phx.gbl...
Bonjour,
Je te remercie DOCM 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" <docmarti@spamcolba.net> a écrit dans le message de news:
%23gI63oPJFHA.2716@TK2MSFTNGP15.phx.gbl...
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" <alaska.afp@tiscali.fr> wrote in message
news:#fJz8IOJFHA.2764@tk2msftngp13.phx.gbl...
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" <docmarti@spamcolba.net> a écrit dans le message de news:
uJ%23sePKJFHA.656@TK2MSFTNGP14.phx.gbl...
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" <fortier.lagrue@free.fr> wrote in message
news:#ZoF9#JJFHA.3332@TK2MSFTNGP15.phx.gbl...
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" <docmarti@spamcolba.net> a écrit dans le message de news:
uAZ9juGJFHA.1176@TK2MSFTNGP15.phx.gbl...
Bonjour.
Ceci devrait redéfinir la zone d'impression.
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address
"alaska" <alaska.afp@tiscali.fr> wrote in message
news:#fUSVZGJFHA.2700@TK2MSFTNGP09.phx.gbl...
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
Bonjour Alaska,
Je crois que tu as omis de copier la dernière ligne de la procédure : End
sub à la procédure !
Salutations!
"alaska" a écrit dans le message de news:
Bonjour,
Je te remercie DOCM 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
soucisest que j'ai des formules à partir de la ligne 25, et la zone
d'impressionconsidè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 ,
voicila 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
remplitautomatiquement par rapport aux données de la feuille 1. Ma
feuille2peutavoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédureafin que la zone d'impression s'adapte à la longueur du texte car
sinonpour3 lignes j'ai 3 feuilles qui sortent, pas cool!
En vous remerciant par avance
bonne journée
Bonjour Alaska,
Cette section : DerniereCellule).Address soit être reportée (ajoutée)
à la ligne précédente. C'est le service de
messagerie qui a fait une coupure dans la ligne de code à un endroit
intempestif.
Salutations!
"alaska" a écrit dans le message de news:
%
Bonsoir Michdenis,
Je me suis contentée de faire un copier/coller de la procédure de domc.
Ci-joint la procédue que j'ai collé dans le VBE de ma feuille devis, il
y'a
bien le end sub à la fin: Par contre, suite au message d'erreur, cette
phrase (en dernier avant end sub) est mise en rouge dans la procédure.
Merci
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
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
End Sub
"MichDenis" a écrit dans le message de news:
O5lwu$Bonjour Alaska,
Je crois que tu as omis de copier la dernière ligne de la procédure : End
sub à la procédure !
Salutations!
"alaska" a écrit dans le message de news:
Bonjour,
Je te remercie DOCM 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
soucisest que j'ai des formules à partir de la ligne 25, et la zone
d'impressionconsidè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
,
voicila 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
remplitautomatiquement par rapport aux données de la feuille 1. Ma
feuille2peutavoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédureafin que la zone d'impression s'adapte à la longueur du texte
car
sinonpour3 lignes j'ai 3 feuilles qui sortent, pas cool!
En vous remerciant par avance
bonne journée
Bonjour Alaska,
Cette section : DerniereCellule).Address soit être reportée (ajoutée)
à la ligne précédente. C'est le service de
messagerie qui a fait une coupure dans la ligne de code à un endroit
intempestif.
Salutations!
"alaska" <alaska.afp@tiscali.fr> a écrit dans le message de news:
%23DRcwXbJFHA.4012@TK2MSFTNGP09.phx.gbl...
Bonsoir Michdenis,
Je me suis contentée de faire un copier/coller de la procédure de domc.
Ci-joint la procédue que j'ai collé dans le VBE de ma feuille devis, il
y'a
bien le end sub à la fin: Par contre, suite au message d'erreur, cette
phrase (en dernier avant end sub) est mise en rouge dans la procédure.
Merci
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
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
End Sub
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
O5lwu$aJFHA.2396@TK2MSFTNGP12.phx.gbl...
Bonjour Alaska,
Je crois que tu as omis de copier la dernière ligne de la procédure : End
sub à la procédure !
Salutations!
"alaska" <alaska.afp@tiscali.fr> a écrit dans le message de news:
OgWFx2aJFHA.1860@TK2MSFTNGP15.phx.gbl...
Bonjour,
Je te remercie DOCM 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" <docmarti@spamcolba.net> a écrit dans le message de news:
%23gI63oPJFHA.2716@TK2MSFTNGP15.phx.gbl...
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" <alaska.afp@tiscali.fr> wrote in message
news:#fJz8IOJFHA.2764@tk2msftngp13.phx.gbl...
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" <docmarti@spamcolba.net> a écrit dans le message de news:
uJ%23sePKJFHA.656@TK2MSFTNGP14.phx.gbl...
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" <fortier.lagrue@free.fr> wrote in message
news:#ZoF9#JJFHA.3332@TK2MSFTNGP15.phx.gbl...
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" <docmarti@spamcolba.net> a écrit dans le message de news:
uAZ9juGJFHA.1176@TK2MSFTNGP15.phx.gbl...
Bonjour.
Ceci devrait redéfinir la zone d'impression.
ActiveSheet.PageSetup.PrintArea = Feuil2.UsedRange.Address
"alaska" <alaska.afp@tiscali.fr> wrote in message
news:#fUSVZGJFHA.2700@TK2MSFTNGP09.phx.gbl...
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
Bonjour Alaska,
Cette section : DerniereCellule).Address soit être reportée (ajoutée)
à la ligne précédente. C'est le service de
messagerie qui a fait une coupure dans la ligne de code à un endroit
intempestif.
Salutations!
"alaska" a écrit dans le message de news:
%
Bonsoir Michdenis,
Je me suis contentée de faire un copier/coller de la procédure de domc.
Ci-joint la procédue que j'ai collé dans le VBE de ma feuille devis, il
y'a
bien le end sub à la fin: Par contre, suite au message d'erreur, cette
phrase (en dernier avant end sub) est mise en rouge dans la procédure.
Merci
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
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
End Sub
"MichDenis" a écrit dans le message de news:
O5lwu$Bonjour Alaska,
Je crois que tu as omis de copier la dernière ligne de la procédure : End
sub à la procédure !
Salutations!
"alaska" a écrit dans le message de news:
Bonjour,
Je te remercie DOCM 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
soucisest que j'ai des formules à partir de la ligne 25, et la zone
d'impressionconsidè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
,
voicila 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
remplitautomatiquement par rapport aux données de la feuille 1. Ma
feuille2peutavoir 4 lignes comme 100lignes. J'aurais besoin d'une macro ou
procédureafin que la zone d'impression s'adapte à la longueur du texte
car
sinonpour3 lignes j'ai 3 feuilles qui sortent, pas cool!
En vous remerciant par avance
bonne journée