Bonjour
Je cherche à automatiser la fonction suivante dans ce tableau :
Depuis un tableau d'environ 1000 lignes (évolutif chaque mois) contenant Nom+SIRET, j'aimerais ouvrir une nouvelle feuille(EXPORT CSV) SANS doublon d'une part et avec en première colonne le SIREN (sur 9 caractères) alors que mon tableau source contient le SIRET avec 14 caractères(mais parfois 9 uniquement).
Enfin, il faudrait qu'en colonne C et D de cette même feuille apparaisse les valeurs que j'ai pu y mettre avec les formules suivante en C1: =SI(ESTVIDE(A1);"";"(Vide)") puis D1: =SI(ESTVIDE(A1);"";"Start")
Cette feuille devra être effacée (la feuille Infolégale l'est déjà par macro mais je n'arrive pas à transposer) avant chaque retraitement pour éviter que d'anciennes lignes restent présentes.
Enfin elle devra être enregistrée au format CSV avec la , en séparateur.
D'avance merci de votre aide.
[Résolu][Calc]Bouton filtrage doublon et export CSV
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre OOrganisé
- Messages : 50
- Inscription : 07 janv. 2014 10:38
[Résolu][Calc]Bouton filtrage doublon et export CSV
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par fneck le 15 juin 2019 14:44, modifié 1 fois.
Obligation de version libreoffice 6.2.7.1
windows 10 Pro
windows 10 Pro
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Calc]Bouton filtrage doublon et export CSV
Bonjour,
Ci-joint une première proposition en python, mieux adapté à ce genre de manipulations :
Avant d'aborder la question de l'export, regarde déjà si cela convient.
L'ordre des données à exporter est-il important ?
Cordialement.
Ci-joint une première proposition en python, mieux adapté à ce genre de manipulations :
Code : Tout sélectionner
from com.sun.star.sheet.CellFlags import VALUE, DATETIME, STRING, FORMULA
def export_csv(event=None):
doc = XSCRIPTCONTEXT.getDocument()
feuilles = doc.Sheets
f_info = feuilles.getByName("Infolégale")
f_export = feuilles.getByName("Export CSV")
curseur = f_info.createCursor()
curseur.gotoEndOfUsedArea(False)
source = f_info.getCellRangeByPosition(0, 3, 2, curseur.RangeAddress.EndRow).DataArray
f_export.clearContents(VALUE | DATETIME | STRING | FORMULA)
donnees = []
formule1 = '=IF(ISBLANK(A{});"";"(Vide)")'
formule2 = '=IF(ISBLANK(A{});"";"Start")'
checked = []
num = 0
for ligne in source:
entree = (str(ligne[2])[:9], ligne[0])
if not entree in checked: # élimination des doublons
checked.append(entree)
num += 1
donnees.append(entree + (formule1.format(num), formule2.format(num)))
dest = f_export.getCellRangeByPosition(0, 0, len(donnees[0])-1, len(donnees)-1)
dest.setFormulaArray(donnees)
doc.CurrentController.ActiveSheet = f_export
L'ordre des données à exporter est-il important ?
Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- Membre OOrganisé
- Messages : 50
- Inscription : 07 janv. 2014 10:38
Re: [Calc]Bouton filtrage doublon et export CSV
Merci beaucoup.
ça semble correspondre parfaitement à mes besoins.
Il serait en effet préférable de conserver le classement alpha si possible.
Par contre je n'arrive pas à intégrer ton code dans mon calc.
Cordialement
ça semble correspondre parfaitement à mes besoins.
Il serait en effet préférable de conserver le classement alpha si possible.
Par contre je n'arrive pas à intégrer ton code dans mon calc.
Cordialement
Obligation de version libreoffice 6.2.7.1
windows 10 Pro
windows 10 Pro
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Calc]Bouton filtrage doublon et export CSV
Alors le code peut être un peu simplifié :fneck a écrit :Il serait en effet préférable de conserver le classement alpha si possible.
Code : Tout sélectionner
import csv
import os.path
from com.sun.star.sheet.CellFlags import VALUE, DATETIME, STRING, FORMULA
def export_csv(event=None):
doc = XSCRIPTCONTEXT.getDocument()
feuilles = doc.Sheets
f_info = feuilles.getByName("Infolégale")
f_export = feuilles.getByName("Export CSV")
curseur = f_info.createCursor()
curseur.gotoEndOfUsedArea(False)
source = f_info.getCellRangeByPosition(0, 3, 2, curseur.RangeAddress.EndRow).DataArray
source = sorted(set(source)) # suppression des doublons + tri alphabétique
# copie des données
f_export.clearContents(VALUE | DATETIME | STRING | FORMULA)
donnees = []
formule1 = '=IF(ISBLANK(A{});"";"(Vide)")'
formule2 = '=IF(ISBLANK(A{});"";"Start")'
for num, ligne in enumerate(source, 1):
donnees.append(("'"+str(ligne[2])[:9], ligne[0], formule1.format(num), formule2.format(num)))
dest = f_export.getCellRangeByPosition(0, 0, len(donnees[0])-1, len(donnees)-1)
dest.setFormulaArray(donnees)
doc.CurrentController.ActiveSheet = f_export
# exportation au format CSV
docurl = doc.URL[8:]
csvurl = docurl[:-3] + "csv"
with open(csvurl, 'w') as f:
writer = csv.writer(f, delimiter=',', quoting=csv.QUOTE_MINIMAL)
writer.writerows(dest.DataArray)
Installe Apso, récupère le module du fichier joint (Menu -> Export) et insère-le dans ton propre fichier.fneck a écrit :Par contre je n'arrive pas à intégrer ton code dans mon calc.
J'ai aussi ajouter la fonction d'exportation, qui crée un fichier csv avec le même nom et dans le même répertoire que le fichier calc.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- Membre OOrganisé
- Messages : 50
- Inscription : 07 janv. 2014 10:38
Re: [Calc]Bouton filtrage doublon et export CSV
Merci je te tiendrai au courant mais je ne peux pas installer APSO pour le moment (pas les droits pour le récupérer); j 'essaierai lundi et vous tiendrai informés.
Sur ton ODS ç'est parfait en tous cas et je te remercie .
Une dernière chose si tu peux, j'aimerai choisir l'emplacement et le nom de l'export.
Sur ton ODS ç'est parfait en tous cas et je te remercie .
Une dernière chose si tu peux, j'aimerai choisir l'emplacement et le nom de l'export.
Obligation de version libreoffice 6.2.7.1
windows 10 Pro
windows 10 Pro
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Calc]Bouton filtrage doublon et export CSV
Voici :fneck a écrit :Une dernière chose si tu peux, j'aimerai choisir l'emplacement et le nom de l'export.
Code : Tout sélectionner
# exportation au format CSV
filepicker = XSCRIPTCONTEXT.getComponentContext().ServiceManager.createInstanceWithArguments("com.sun.star.ui.dialogs.FilePicker", (FILESAVE_AUTOEXTENSION_TEMPLATE,))
filepicker.appendFilter("Fichier csv", ".csv")
filepicker.execute()
try:
csvurl = fileUrlToSystemPath(filepicker.Files[0])
with open(csvurl, 'w') as f:
writer = csv.writer(f, delimiter=',', quoting=csv.QUOTE_MINIMAL)
writer.writerows(dest.DataArray)
except IndexError:
pass
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- Membre OOrganisé
- Messages : 50
- Inscription : 07 janv. 2014 10:38
Re: [Calc]Bouton filtrage doublon et export CSV
C est absolument parfait;plus qu'à bidouiller pour installer Apso.
passe un excellent week end et encore merci à tout le monde du temps consacré et à toi particulièrement.
passe un excellent week end et encore merci à tout le monde du temps consacré et à toi particulièrement.
Obligation de version libreoffice 6.2.7.1
windows 10 Pro
windows 10 Pro