definir zone impression sur une plage avec formule

sarata

XLDnaute Junior
Bonjour le forum!

J'ai une plage de 10 colonnes 70 lignes remplie de formules de ce type

=SI('feuil données'!A2="";"";'feuil odonnées'!A2)

en gros je pompe les données de la feuille 1 et je les colle sur la feuille 2 qui est une feuille avec entête donc bonne à imprimer.

Ce que je veux c'est imprimer le BON nombre de pages en fonction de ce qui est remplit c'est à dire jusqu'a la dernière ligne ou la formule nous renvoie une valeur non nulle
toutes les macros essayées reconnaissent la dernière ligne remplie (70 ème ligne) donc la dernière ligne ou il ya une formule .

Quelqu'un peut m'aider là dessus merci par avance
 

Dranreb

XLDnaute Barbatruc
Re : definir zone impression sur une plage avec formule

Bonjour
Cette fonction renvoit la plage allant de la cellule spécifiée jusqu'à la cellule de dernières ligne et colonne contenant une cellule non vide et dont la valeur n'est pas une chaîne vide
VB:
Function PlageÀPartirDe(ByVal PlageDép As Range, Optional ByVal PlagExam As Range = Nothing) As Range
Dim F As Worksheet, LMax As Long, CMax As Long, NbL As Long, NbC As Long
On Error GoTo RienTrouvé
Set F = PlageDép.Worksheet: If PlagExam Is Nothing Then Set PlagExam = F.UsedRange
LMax = PlagExam.Find("*", F.Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row
CMax = PlagExam.Find("*", F.Cells(1, 1), xlValues, xlWhole, xlByColumns, xlPrevious).Column
On Error GoTo 0
NbL = LMax - PlageDép.Row + 1: If NbL < 1 Then GoTo CEstToutVide
NbC = CMax - PlageDép.Column + 1: If NbC < 1 Then GoTo CEstToutVide
Set PlageÀPartirDe = PlageDép.Resize(NbL, NbC)
Exit Function
RienTrouvé: Resume CEstToutVide
CEstToutVide: Set PlageÀPartirDe = Nothing
End Function
À affecter par un Set à une variable As Range

Cordialement
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : definir zone impression sur une plage avec formule

Bonjour sarata,

Si tu veux définir une zone d'impression, tu n'as peut-être pas besoin de macro
Le nom Zone_d_impression peut être lié à une formule basé sur la fonction DECALER par exemple
Le nombre de lignes est variable, mais le nombre de colonnes aussi ?
As-tu une colonne qui comprend toujours une valeur si la ligne doit être imprimée ?
Peut-il y avoir des lignes vides au milieu de ton tableau ?

Bref un petit fichier exemple nous aiderait

Edit : Bonjour Dranreb
 

sarata

XLDnaute Junior
Re : definir zone impression sur une plage avec formule

Bonjour le forum, Dranreb, tototiti2008

Alors pour répondre aux questions d'abord

Le nombre de lignes est variable, mais le nombre de colonnes aussi ?
les colonnes sont fixes (jusqu'à M)

As-tu une colonne qui comprend toujours une valeur si la ligne doit être imprimée ?
soit toutes les cellules de la ligne ne sont pas vides soit elles sont toutes vides (pas de mélange) sinon effectivement la colonne M contient justement la une valeur 1 si la ligne est non vide

Peut-il y avoir des lignes vides au milieu de ton tableau ? non

Sinon Dranreb comment faire l'affectation?

NB : je veux imprimer 5 lignes de plus vides (pour rajouter à la main au besoin)

Merci à tous
 

Dranreb

XLDnaute Barbatruc
Re : definir zone impression sur une plage avec formule

Et que croyez vous que je vous ai indiqué ??
Je vous ai indiquer la mise en place dans la feuille active de la zone d'impression à appliquer avant une impression (que j'engage toujours par un PrintPeview dans une macro)

P.S. Si votre question avait un sens plus général: C'est vous qui décidez. Vous avez le choix entre
Bouton de commande
Bouton de formulaire
Bouton de barre d'outils
Évènement Excel (à préciser)
Le code doit être mis dans une procédure adéquate au bon endroit selon ce que vous voulez.
À+
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : definir zone impression sur une plage avec formule

Bonjour à tous,

ou alors sans macro :
définit une zone d'impression dans ta feuille
Menu Insertion - Nom - Définir
Sélectionne Zone_d_impression
Modifie "Fait référence à" comme suit (Feuil1 étant le nom de ta feuille à adapter)

Code:
=DECALER(Feuil1!$A$1;0;0;NB.SI(Feuil1!$M:$M;">0")+6;13)
Bouton Ajouter
 

Dranreb

XLDnaute Barbatruc
Re : definir zone impression sur une plage avec formule

j'ai essayé de le mettre dans une procédure mais le exit function n'était pas compatible avec le end sub
Si vous décidiez d'adopter mon code (qui aurait l'avantage de ne pas se tromper s'il devait exister des cellules vides en plein milieu de la colonne), il n'y aurait pas lieu de le mettre dans une Sub.
C'est un tout indivisible utilisable comme expression Range dans du code et dans des références de noms ou dans des formules, à condition toutefois de spécifier de la cellule jusqu'a IV65536 pour qu'Excel Voit une raison de la réévaluer.
À+
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 628
Membres
103 608
dernier inscrit
rawane