[Résolu][Calc] Impression tableau ligne par ligne

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
gigre881
Fraîchement OOthentifié
Messages : 5
Inscription : 22 nov. 2015 08:18

[Résolu][Calc] Impression tableau ligne par ligne

Message par gigre881 »


La modération vous a écrit: :alerte: Sujet déplacé

Le titre de votre question n'est pas assez explicite ou ne reflète pas le problème que vous décrivez :
<Impression tableau>
Nous l'avons donc modifié. En effet, lors d'une recherche, ce sujet risquait de passer inaperçu et donc de ne pas aider d'autres personnes ayant le même problème que vous.

Bonjour,

J'ai un tableau sous calc avec une cinquantaine de lignes et une vingtaine de colonnes. Voir pièce jointe
Je désire faire une impression de ce tableau ligne par ligne à partir de la ligne 4.
Je réalise cette opération manuellement en masquant les lignes au fur et à mesure. Je masque de 5 à 50 puis imprime. Je masque ensuite 4 puis de 6 à 50 et imprime et ainsi de suite.
Dans le même temps, je calcule un code en ligne 1 qui reprend la valeur de la ligne à imprimer et de la colonne mle
Pouvez-vous m'aider à réaliser une macro qui
- me demande combien de lignes je veux imprimer une à une
- réalise les masquages et impression automatique
- calculer le code en ligne 1

Je vous remercie par avance de votre aide
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
apache open office 4.1.1
windows 10
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Calc] impression tableau ligne par ligne

Message par joel275 »

Bonjour,

teste ce code (pour les 2 premiers points):

Code : Tout sélectionner

Sub Main
Dim MaFeuille as Object, MonDoc as Object
Dim Rep as String, jDeb as Long, jFin as Long, V as Variant
Dim Props() as New com.sun.star.beans.PropertyValue
	MonDoc = ThisComponent
	MaFeuille = MonDoc.CurrentController.ActiveSheet			'Feuille à imprimer est la feuille active
	Rep = InputBox("Lignes à imprimer? (ex: 7:15)")
	V = Split(Rep, ":")
	jDeb = V(0)
	jFin = V(1)
Dim AdrZones(jFin - jDeb) as New com.sun.star.table.CellRangeAddress
	For I = jDeb To jFin
		AdrZones(I-jDeb) = MaFeuille.getCellRangeByName("A" & I & ":ZZ" & I).RangeAddress
		' on imprime les colonnes de A à ZZ; à modifier éventuellement
	Next
	MaFeuille.PrintAreas = AdrZones()
	ThisComponent.Print(Props())
End Sub
Pour le troisième point, je te rappelle: "une question par fil"

A plus.
Dernière modification par joel275 le 22 nov. 2015 11:20, modifié 2 fois.
A jour de LibreOffice et de Ubuntu
Avatar de l’utilisateur
ThierryT
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 467
Inscription : 10 nov. 2012 17:05

Re: [Calc] impression tableau ligne par ligne

Message par ThierryT »

Bonjour,

Je te joins déjà plusieurs macros qui permettent de masquer ou afficher des lignes, lire ou écrire dans des cellules.
Pour le reste avec un peu de recherche sur ce forum, je pense que tu dois pouvoir y arriver.

Pour la demande des lignes à imprimer => utilisation de boîte de dialogue ou de la fonction InputBox.
Pour l'impression => utilisation de la méthode print.
Calculer le code => aller lire des cellules, faire un formatage de données et écrire dans des cellules.

A plus
LibreOffice 6.1.3.2 x64 / AOO 4.1.5 (x86) sous Windows 8.1 (x64)
Java 8.x (x64 et x86), Firefox, Thunderbird,....

“Celui qui aime à apprendre est bien près du savoir.” (Confusius)
Comment baliser Résolu
gigre881
Fraîchement OOthentifié
Messages : 5
Inscription : 22 nov. 2015 08:18

Re: [Calc] impression tableau ligne par ligne

Message par gigre881 »

Bonjour joel275 et Thierry T

Je vous remercie déjà pour votre aide. Je teste tout ça demain et vous tiens au courant
Bonne journée en attendant :D
apache open office 4.1.1
windows 10
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Calc] impression tableau ligne par ligne

Message par joel275 »

Bonjour,

je ne devrais rien faire le dimanche :oops:
Après relecture de ton post, je propose (à tester):

Code : Tout sélectionner

Sub Main
Dim MaFeuille as Object, MonDoc as Object, MaCell as Object
Dim Rep as String, jDeb as Long, jFin as Long, V as Variant
Dim Props() as New com.sun.star.beans.PropertyValue
Dim AdrZones(0) as New com.sun.star.table.CellRangeAddress
   MonDoc = ThisComponent
   MaFeuille = MonDoc.CurrentController.ActiveSheet         'Feuille à imprimer est la feuille active
   Rep = InputBox("Lignes à imprimer? (ex: 7:15)")
   V = Split(Rep, ":")
   jDeb = V(0)
   jFin = V(1)
   MaFeuille.getCellRangeByName("A4:Y50").Rows.IsVisible = False

   For I = jDeb To jFin
      MaFeuille.getCellRangeByName("A" & I & ":Y" & I).Rows.IsVisible = True
      MaCell = MaFeuille.getCellRangeByName("A1")
      MaCell.String = "x" & MaFeuille.getCellRangeByName("O" & I).String & "x"
      AdrZones(0) = MaFeuille.getCellRangeByName("A1:Y50").RangeAddress
      MaFeuille.PrintAreas = AdrZones()
      ThisComponent.Print(Props())
      ' on imprime les colonnes de A à Y; à modifier éventuellement
      MaFeuille.getCellRangeByName("A" & I & ":Y" & I).Rows.IsVisible = False
   Next
   MaFeuille.getCellRangeByName("A4:Y50").Rows.IsVisible = True
End Sub
A plus.
A jour de LibreOffice et de Ubuntu
gigre881
Fraîchement OOthentifié
Messages : 5
Inscription : 22 nov. 2015 08:18

Re: [Calc] impression tableau ligne par ligne

Message par gigre881 »

Bonsoir,

je te remercie pour ton aide. La macro fonctionne correctement.
Par contre, si je peux encore abuser, j'ai essayé de la faire tourner sur Libre Office 4.0.4.2 et windows 7 professionnel et là, j'ai un message d'erreur de syntax basic (voir message joint)
As-tu une solution ?

Merci beaucoup
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
apache open office 4.1.1
windows 10
Avatar de l’utilisateur
ThierryT
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 467
Inscription : 10 nov. 2012 17:05

Re: [Calc] impression tableau ligne par ligne

Message par ThierryT »

Bonjour,

Vérifie que tu n'as pas de caractère "non visible" sur la ligne incriminée (en début ou en fin de ligne)=> remplace les espaces avant per une tabulation et place le curseur en fin de ligne pour voir si tu n'as pas d'autres caractères intégrés ensuite.
Ce type de problème peut apparaître en faisant des "copier-coller" à partir de code pris sur internet.
LibreOffice 6.1.3.2 x64 / AOO 4.1.5 (x86) sous Windows 8.1 (x64)
Java 8.x (x64 et x86), Firefox, Thunderbird,....

“Celui qui aime à apprendre est bien près du savoir.” (Confusius)
Comment baliser Résolu
gigre881
Fraîchement OOthentifié
Messages : 5
Inscription : 22 nov. 2015 08:18

Re: [Calc] Impression tableau ligne par ligne

Message par gigre881 »

Merci beaucoup pour votre aide. Ca fonctionne.
Joyeux Noël à tous
:bravo:
apache open office 4.1.1
windows 10
gigre881
Fraîchement OOthentifié
Messages : 5
Inscription : 22 nov. 2015 08:18

RESOLU [Calc] Impression tableau ligne par ligne

Message par gigre881 »

:bravo: :bravo:
apache open office 4.1.1
windows 10