[Résolu][Calc] Dupliquer une ligne dans un tableau

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 !
maxime14000
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 23 mars 2019 21:49

[Résolu][Calc] Dupliquer une ligne dans un tableau

Message par maxime14000 »

Bonjour a tous. je me permet de venir vers vous, je suis un peut novice de la programmation basic et je doit réaliser un projet de caisse journalières et mensuel sous Aoo et en prenant en compte que ceux qui remplirons ce fichier sont novice et qu'il ne faut pas d'action autres que la saisie sur les cellules prévu a cet effet.

de fait j'ai plusieurs tableaux et je doit a l'aide d'un bouton ajouter une ligne qui gardera les éventuelles fonctions si il y a, la mise en forme et la fusion ou non si besoin de cellule.

j'usqu'a là j'ai tout trouver sur le forum et adapter a ma feuille et mes tableaux,cela fonctionne mais il reste deux problèmes.

le premier est que dans la programation de la macro j'indique le nom du tableau et les colonnes a copier. Seulement lorsque dans un tableau deux cellules sont fusionner (ex 1éligne (tableau ticket resto suite)), lors de l'action cela ne reproduit pas la fusion sur la 2é ligne..! cela me remet les collonnes mais une a une voir dessin si dessous (beaucoup plus explicite…)
Capture fichieraoo2.PNG
le deuxième problème (consulter le fichier) est le fait que sur ma cellule P34 je demande la somme de la colonne G et P de mon tableau "ticket restaurant" sans savoir combien de ligne il y aura..j'ai bien regarder dans les sous totaux de tableaux ou fonction somme mais je vous avous etre perdu car aucun ne rentre dans mon cas de figure.

en vous remerciant par avance de votre aide
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par maxime14000 le 05 nov. 2019 16:55, modifié 10 fois.
Pc windows 10
open office 4.1.11
Avatar de l’utilisateur
Lynx
MOOdérateur
MOOdérateur
Messages : 469
Inscription : 05 sept. 2010 13:57

Re: [Calc] Dupliquer une ligne dans un tableau

Message par Lynx »

Bonjour et bienvenue,

Image

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche. Avez-vous remarqué comment étaient les autres questions postées ?

Lisez ce fil pour savoir quelle balise utiliser : http://user.services.openoffice.org/fr/ ... html#27295

N'oubliez pas que le terme "Macro" ou "OpenOffice" ne doit pas être employé car il est implicite. Essayer de synthétiser au mieux ce que vous cherchez à faire.

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.

Merci de votre collaboration.
Voir permet l'observation qui engendre l'analyse qui conduit au jugement qui détermine l'action
maxime14000
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 23 mars 2019 21:49

Re: [Calc] Dupliquer une ligne dans un tableau

Message par maxime14000 »

Lynx a écrit :Bonjour et bienvenue,

Image

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche. Avez-vous remarqué comment étaient les autres questions postées ?

Lisez ce fil pour savoir quelle balise utiliser : http://user.services.openoffice.org/fr/ ... html#27295

N'oubliez pas que le terme "Macro" ou "OpenOffice" ne doit pas être employé car il est implicite. Essayer de synthétiser au mieux ce que vous cherchez à faire.

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.

Merci de votre collaboration.
je suis tout a fait désolé..en effet j'aurais du prendre plus de précaution et je vous remercie d'avoir fait le nécessaire par avance afin que ce sujet puisse être traité.

y a t'il quelqu'un pour m'aider?
Pc windows 10
open office 4.1.11
J a c
Fraîchement OOthentifié
Messages : 5
Inscription : 22 oct. 2019 09:41

Re: [Calc] Dupliquer une ligne dans un tableau

Message par J a c »

Bonjour,
Si j'ai bien compris la deuxième partie de votre problème, vous ne savez pas combien de lignes seront insérées entre le montant et le montant total.
Pour en faire la somme, vous pouvez sélectionner la plage entre les deux et la nommer (par exemple : plage1). Il suffit ensuite de saisir la formule : =SOMME(plage1).
Les lignes insérées seront prises en compte dans le total.
LibreOffice Calc Version: 6.2.7.1 (x64)
Windows 10
maxime14000
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 23 mars 2019 21:49

Re: [Calc] Dupliquer une ligne dans un tableau

Message par maxime14000 »

J a c a écrit :Bonjour,
Si j'ai bien compris la deuxième partie de votre problème, vous ne savez pas combien de lignes seront insérées entre le montant et le montant total.
Pour en faire la somme, vous pouvez sélectionner la plage entre les deux et la nommer (par exemple : plage1). Il suffit ensuite de saisir la formule : =SOMME(plage1).
Les lignes insérées seront prises en compte dans le total.
Bonjour, je n’avais pas réfléchi comme ça en effet cela devrait marcher, mais je m'interroge tout de même sur le fait que j'ai besoin de 31 page (une pour chaque jour du mois)et vais etre oblige de créer 31 plage de données différente…??? je vais tester et vous faire le retour .

Concernant mon premier problème, Je cherche donc à savoir comment je pourrais modifier la programmation à fin que je puisse dupliquer des ligne qui comportent des cellules fusionner à la fin de mon tableau (tout en gardant comme elle est codé,le formatage conditionnel et les fonction si il y a;) Je vous met une image beaucoup plus parlante..
(ex 1é ligne (tableau ticket resto suite)), lors de l'action cela ne reproduit pas la fusion sur la 2é ligne.!
Capture fichieraoo2.PNG
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Pc windows 10
open office 4.1.11
maxime14000
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 23 mars 2019 21:49

Re: [Calc] Dupliquer une ligne dans un tableau

Message par maxime14000 »

un pti Up...j'ai modifier la capture d'ecran afin d'etre le plus clair possible…

qu'elqu'un pour m'aider??
Pc windows 10
open office 4.1.11
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] Dupliquer une ligne dans un tableau

Message par OOotremer971 »

Bonjour,

Pour fusionner des cellules, une fois la zone connue, il faut passer à la propriété merge de cette zone la valeur booléenne True

Code : Tout sélectionner

maZone = maFeuille.getCellRangeByName("B12:D12")
maZone.Merge(True) ' fusionne la zone
Je n'ai pas modifié ton code car il ne fait rien de ce que tu décris. Essaye de mettre un formule en G12 par exemple :

Code : Tout sélectionner

=B12*D12
Tu t'apercevras que la formule n'est pas recopiée sur la ligne du dessous lorsque tu appuies sur le bouton AJOUTER UNE LIGNE. Et pas vu de formatage conditionnel dans ton fichier non plus. :?

A+
 Ajout : Un exemple à tester (fonctionne pour la zone Ticket resto suite)

Code : Tout sélectionner

Option Explicit


Sub TicketRestoSuite
Dim oDoc As Object, oRaZone As Object, feuille As Object, ligne_A_recopier As Object
Dim lesLignes As Object, colonnes As Object, destination As Object
Dim i As Long
oDoc = Thiscomponent
oRaZone = oDoc.namedRanges.getByName("tabticketresto").getReferredCells().getRangeAddress()
feuille = oDoc.Sheets(oRaZone.Sheet)
lesLignes = feuille.Rows
ligne_A_recopier = feuille.getCellRangeByPosition(oRaZone.startColumn, oRaZone.endRow-1, oRaZone.endColumn, oRaZone.endRow-1)
lesLignes.insertByIndex(oRaZone.endRow,1)
destination = feuille.getCellByPosition(oRaZone.startColumn, oRaZone.endRow)
feuille.copyRange(destination.CellAddress, ligne_A_recopier.RangeAddress)
colonnes = Array(1,3,10,12)
for i = LBound(colonnes) To UBound(colonnes)
	feuille.getCellByPosition(i, oRaZone.endRow).SetString("")	
next i
End Sub
 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
maxime14000
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 23 mars 2019 21:49

Re: [Calc] Dupliquer une ligne dans un tableau

Message par maxime14000 »

 Ajout : Un exemple à tester (fonctionne pour la zone Ticket resto suite)

Code : Tout sélectionner

Option Explicit


Sub TicketRestoSuite
Dim oDoc As Object, oRaZone As Object, feuille As Object, ligne_A_recopier As Object
Dim lesLignes As Object, colonnes As Object, destination As Object
Dim i As Long
oDoc = Thiscomponent
oRaZone = oDoc.namedRanges.getByName("tabticketresto").getReferredCells().getRangeAddress()
feuille = oDoc.Sheets(oRaZone.Sheet)
lesLignes = feuille.Rows
ligne_A_recopier = feuille.getCellRangeByPosition(oRaZone.startColumn, oRaZone.endRow-1, oRaZone.endColumn, oRaZone.endRow-1)
lesLignes.insertByIndex(oRaZone.endRow,1)
destination = feuille.getCellByPosition(oRaZone.startColumn, oRaZone.endRow)
feuille.copyRange(destination.CellAddress, ligne_A_recopier.RangeAddress)
colonnes = Array(1,3,10,12)
for i = LBound(colonnes) To UBound(colonnes)
	feuille.getCellByPosition(i, oRaZone.endRow).SetString("")	
next i
End Sub
 
c'est tout a fait ca de plus ca règle le deuxième problème de fait!

par contre reste une interrogation.. si j'ai bien compris dans le code on sélectionne les colonnes (1,2ect..) pour recopier les formules?

car dans ton exemple cela ne recopie qu'un seul tableau et pas le deuxième (alors que les deux tableaux sont nommé sur la même, plage de feuille)
comment faire?
Pc windows 10
open office 4.1.11
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] Dupliquer une ligne dans un tableau

Message par OOotremer971 »

maxime14000 a écrit :si j'ai bien compris dans le code on sélectionne les colonnes (1,2ect..) pour recopier les formules?
NOn ! On sélectionne les colonnes pour effacer le contenu. La macro copie l'avant dernière ligne de la plage, insère une ligne et colle la ligne copiée à l'endroit de la ligne insérée.
maxime14000 a écrit :dans ton exemple cela ne recopie qu'un seul tableau et pas le deuxième
Tu peux montrer un exemple, donner les références du deuxième tableau ? Est-ce que tu as mis des formules dans le deuxième tableau, je veux voir.

A+
 Ajout : Par contre il faut corriger :

Code : Tout sélectionner

for i = LBound(colonnes) To UBound(colonnes)
   feuille.getCellByPosition(i, oRaZone.endRow).SetString("")   
next i
par

Code : Tout sélectionner

for i = LBound(colonnes) To UBound(colonnes)
	feuille.getCellByPosition(colonnes(i), oRaZone.endRow).SetString("")	
next i
 
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
maxime14000
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 23 mars 2019 21:49

Re: [Calc] Dupliquer une ligne dans un tableau

Message par maxime14000 »

 Ajout : Par contre il faut corriger :

Code : Tout sélectionner

for i = LBound(colonnes) To UBound(colonnes)
   feuille.getCellByPosition(i, oRaZone.endRow).SetString("")   
next i
par

Code : Tout sélectionner

for i = LBound(colonnes) To UBound(colonnes)
	feuille.getCellByPosition(colonnes(i), oRaZone.endRow).SetString("")	
next i
 
[/quote]

voila ce que j'ai fait..

Code : Tout sélectionner

Sub TicketRestoSuite
Dim oDoc As Object, oRaZone As Object, feuille As Object, ligne_A_recopier As Object
Dim lesLignes As Object, colonnes As Object, destination As Object
Dim i As Long
oDoc = Thiscomponent
oRaZone = oDoc.namedRanges.getByName("tabticketresto").getReferredCells().getRangeAddress()
feuille = oDoc.Sheets(oRaZone.Sheet)
lesLignes = feuille.Rows
ligne_A_recopier = feuille.getCellRangeByPosition(oRaZone.startColumn, oRaZone.endRow-1, oRaZone.endColumn, oRaZone.endRow-1)
lesLignes.insertByIndex(oRaZone.endRow,1)
destination = feuille.getCellByPosition(oRaZone.startColumn, oRaZone.endRow)
feuille.copyRange(destination.CellAddress, ligne_A_recopier.RangeAddress)
colonnes = Array(1,3,10,13)
for i = LBound(colonnes) To UBound(colonnes)
	feuille.getCellByPosition(colonnes(i), oRaZone.endRow).SetString("")	
next i
End Sub
ca me donne ca… la formule ce copies puisque j'ai un résultat dans les colonnes G et P.
par contre au niveau donc des colonnes je n'arrive pas a effacer les saisie des cellules des lignes en dessus. On démarre du bord de la feuille ou du bord du nom de plage du tableau
Capture fichieraoo3.PNG
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Pc windows 10
open office 4.1.11
maxime14000
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 23 mars 2019 21:49

Re: [Calc] Dupliquer une ligne dans un tableau

Message par maxime14000 »

voila ce que j'ai fait pour que tout fonctionne..ets e bien?

Code : Tout sélectionner

Sub TicketRestoSuite
Dim oDoc As Object, oRaZone As Object, feuille As Object, ligne_A_recopier As Object
Dim lesLignes As Object, colonnes As Object, destination As Object
Dim i As Long
oDoc = Thiscomponent
oRaZone = oDoc.namedRanges.getByName("tabticketresto").getReferredCells().getRangeAddress()
feuille = oDoc.Sheets(oRaZone.Sheet)
lesLignes = feuille.Rows
ligne_A_recopier = feuille.getCellRangeByPosition(oRaZone.startColumn, oRaZone.endRow-1, oRaZone.endColumn, oRaZone.endRow-1)
lesLignes.insertByIndex(oRaZone.endRow,1)
destination = feuille.getCellByPosition(oRaZone.startColumn, oRaZone.endRow)
feuille.copyRange(destination.CellAddress, ligne_A_recopier.RangeAddress)
colonnes = Array(1,3,10,12)
for i = LBound(colonnes) To UBound(colonnes)
	feuille.getCellByPosition(colonnes(i), oRaZone.endRow).SetString("")	
next i
End Sub
pour bien explique du coup, je pense que le depart du nombre des colonnes (1,3,10,13) demarre de la premiere colonnes qui est en forme de la selection de mon tableau nommé "tabticketresto"?
Capturetab4.PNG
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Pc windows 10
open office 4.1.11
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] Dupliquer une ligne dans un tableau

Message par OOotremer971 »

Pour conclure

Le code est correctement corrigé. Les lignes sont correctement ajoutée aux tableaux. Donc tout va bon.
maxime14000 a écrit :par contre au niveau donc des colonnes je n'arrive pas a effacer les saisie des cellules des lignes en dessus.
de quoi tu parles ? J'ai volontairement rempli trois cellules pour montrer que les formules sont bien recopiées, ce qui n'était pas le cas avec ton code. Si tu ne veux plus voir les valeur données en exemple, il suffit de les supprimer puis enregistrer le fichier.
maxime14000 a écrit :pour bien explique du coup, je pense que le depart du nombre des colonnes (1,3,10,13) demarre de la premiere colonnes qui est en forme de la selection de mon tableau nommé "tabticketresto"?
Là j'ai besoin d'un interprète car je ne comprends pas ce que tu veux dire.

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11