[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 !

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

Messagepar maxime14000 » 21 Oct 2019 17:01

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
exemple


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
Pièces jointes
ex.copierligne.ods
fichier exemple
(17.73 Kio) Téléchargé 11 fois
Dernière édition par maxime14000 le 05 Nov 2019 17:55, édité 10 fois.
Pc windows 10
open office 4.1.7
maxime14000
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 23 Mars 2019 22:49

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar Lynx » 21 Oct 2019 17:31

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/forum/sutra27295.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
Avatar de l’utilisateur
Lynx
MOOdérateur
MOOdérateur
 
Message(s) : 393
Inscrit le : 05 Sep 2010 14:57

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar maxime14000 » 21 Oct 2019 19:57

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/forum/sutra27295.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.7
maxime14000
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 23 Mars 2019 22:49

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar J a c » 22 Oct 2019 14:29

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
J a c
Fraîchement OOthentifié
 
Message(s) : 5
Inscrit le : 22 Oct 2019 10:41

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar maxime14000 » 24 Oct 2019 20:35

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
Pc windows 10
open office 4.1.7
maxime14000
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 23 Mars 2019 22:49

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar maxime14000 » 26 Oct 2019 22:55

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.7
maxime14000
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 23 Mars 2019 22:49

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar OOotremer971 » 27 Oct 2019 00:25

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   AgrandirRéduire
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   AgrandirRéduire
=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   AgrandirRéduire
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
 
Pièces jointes
ex.copierligne_Mod1.ods
(19.84 Kio) Téléchargé 7 fois
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2142
Inscrit le : 16 Avr 2010 14:31

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar maxime14000 » 27 Oct 2019 12:04

 Ajout : Un exemple à tester (fonctionne pour la zone Ticket resto suite)
Code : Tout sélectionner   AgrandirRéduire
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.7
maxime14000
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 23 Mars 2019 22:49

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar OOotremer971 » 27 Oct 2019 12:15

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   AgrandirRéduire
for i = LBound(colonnes) To UBound(colonnes)
   feuille.getCellByPosition(i, oRaZone.endRow).SetString("")   
next i

par
Code : Tout sélectionner   AgrandirRéduire
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
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2142
Inscrit le : 16 Avr 2010 14:31

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar maxime14000 » 27 Oct 2019 14:11

 Ajout : Par contre il faut corriger :
Code : Tout sélectionner   AgrandirRéduire
for i = LBound(colonnes) To UBound(colonnes)
   feuille.getCellByPosition(i, oRaZone.endRow).SetString("")   
next i

par
Code : Tout sélectionner   AgrandirRéduire
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   AgrandirRéduire
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
Pc windows 10
open office 4.1.7
maxime14000
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 23 Mars 2019 22:49

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar maxime14000 » 27 Oct 2019 14:45

voila ce que j'ai fait pour que tout fonctionne..ets e bien?
Code : Tout sélectionner   AgrandirRéduire
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
Pc windows 10
open office 4.1.7
maxime14000
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 24
Inscrit le : 23 Mars 2019 22:49

Re: [Calc] Dupliquer une ligne dans un tableau

Messagepar OOotremer971 » 27 Oct 2019 15:53

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
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2142
Inscrit le : 16 Avr 2010 14:31


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)