[Résolu][Calc]critères import csv_séparateur de texte

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]critères import csv_séparateur de texte

Messagepar fneck » 03 Juin 2019 13:37

Bonjour,

Je suis totalement novice en macros mais j'utilise au travail depuis longtemps un code qui me permet d'importer un CSV et de le mettre en forme selon plusieurs critères accompagné de plusieurs routines.
Depuis ce mois, une différence est apparue et certaines lignes du tableau disparaissent. Je n'ai pas d'explication mais j'ai isolé une solution.
Sans utiliser mon programme, je reproduis systématiquement le problème en important mon CSV dans CALC sauf en précisant dans les conditions d'import de texte avec un séparateur de texte laissé à blanc au lieu de " ou '
formatage csv.png
import CSV_paramètres fonctionnels


la ligne de code qui permet de définir les critères est celle-ci :
Code : Tout sélectionner   AgrandirRéduire
Sub ImportCSV
'macro destinée à l'import du fichier .CSV BRUT
   
'Definition des variables
   Dim adrDocCSV,optFiltre as string
   Dim macellule, maZone as object
   Dim Lerep As Object
   Dim lesFichiers() As String
   Dim oDialog1, oFenetre as Object
   Dim tblo
   
'on nettoie les données existantes
   RAZ   
   
'affichage d'un message d'attente pendant le retraitement et on bloque toutes les actions
   On Error goto Erreur
   DialogLibraries.LoadLibrary("Standard") 'Charge la bibliothèque
   oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
   oDialog1.Enable = False         ' Empêche l'utilisateur de fermer le dialogue
   oDialog1.SetVisible(True)      ' Affiche oDialog1 sans interrompre la macro
   oFenetre = ThisComponent.CurrentController.Frame.ContainerWindow
   oFenetre.Enable  = False      ' bloque toutes les actions de l'utilisateur impatient
                           ' et accélère un peu le traitemment
                           
'choix du fichier CSV à importer
   Lerep = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
   Lerep.DisplayDirectory = ConvertToURL("C:\Users\Public\Desktop\")
   Lerep.appendFilter("CSV", "*.csv")

   Lerep.Title = "Choisissez le fichier à traiter"

   if Lerep.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
      lesFichiers() = Lerep.Files
      adrDocCSV = lesFichiers(0)
   Else
      ' exit sub 'si aucun choix, on sort de la macro
      Goto erreur
   End if
      
'on affiche le message d'attente
   oDialog1.SetVisible(True)      ' Affiche oDialog1 sans interrompre la macro
   
'definition du filtre CSV  (9 pour sauter le champs, 1=Monétaire, 5=Date format US, 2=Texte)
'décomposée avec l'aide de l'onglet caché "ImportCSV" comme suit colonne N° 1 puis / puis sa valeur puis colonne N°2 puis / puis sa valeur etc...
   optFiltre= "9/59/MRG,34/39,ANSI,1,1/9/2/1/3/2/4/2/5/2/6/2/7/2/8/2/9/9/10/2/11/5/12/1/13/9/14/9/15/9/16/2/17/2/18/9/19/5/20/5/21/9/22/9/23/9/24/9/25/9/26/1/27/1/28/1/29/1/30/9/31/9/32/9/33/9"
   Fimport.link(adrDocCSV, "", "Text - txt - csv (StarCalc)", optFiltre, com.sun.star.sheet.SheetLinkMode.VALUE)

' Rupture du lien
   Fimport.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE)

   titreFeuille = LesFeuilles.getByName("titreDonnées")   

mais le séparateur ne se met pas à blanc par défaut.
Je suppose que ce critère doit être saisi ici
Code : Tout sélectionner   AgrandirRéduire
optFiltre= "9/59/MRG,34/39,ANSI,1,1/9/2/1/3/2/4/2/5/2/6/2/7/2/8/2/9/9/10/2/11/5/12/1/13/9/14/9/15/9/16/2/17/2/18/9/19/5/20/5/21/9/22/9/23/9/24/9/25/9/26/1/27/1/28/1/29/1/30/9/31/9/32/9/33/9"
'ci-dessus les paramètres sont très certainement défini ici optFiltre= "9/59/MRG,34/39,ANSI,1,....

mais je n'en suis pas sûr et malgré mes recherches je ne vois pas comment définir ce critère.
Merci de votre aide
Dernière édition par fneck le 04 Juin 2019 09:27, édité 1 fois.
Obligation de version libreoffice 5.2.6.2
windows 10
fneck
Membre lOOyal
Membre lOOyal
 
Message(s) : 39
Inscrit le : 07 Jan 2014 11:38

Re: [Calc]critères import csv_définir séparateur de texte

Messagepar gerard24 » 03 Juin 2019 16:52

Bonjour,

La partie qui désigne le séparateur de texte est celle-ci, en rouge :

optFiltre= "9/59/MRG,34/39,ANSI

34 correspond à " (double quotes)
39 à ' (simple quote)

Supprimes celui qui pose problème. Peut-être les 2, mais je n'ai jamais fait l'essai avec un vide pour ce critère...

A+

 Ajout : Lien pour critères filtre import :
https://wiki.openoffice.org/wiki/Docume ... CSV_Filter 
OOodidacte
LibreOffice 6.2.4 sous Windows 10.
pour télécharger LibreOffice
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
 
Message(s) : 3122
Inscrit le : 06 Juil 2008 18:08
Localisation : dans le Périgord

Re: [Calc]critères import csv_définir séparateur de texte

Messagepar fneck » 04 Juin 2019 09:25

Ca a fonctionné en enlevant simplement la double cote soit le code corrigé comme suit :
Code : Tout sélectionner   AgrandirRéduire
   optFiltre= "9/59/MRG,39,ANSI,1,1/9/2/1/3/2/4/2/5/2/6/2/7/2/8/2/9/9/10/2/11/5/12/1/13/9/14/9/15/9/16/2/17/2/18/9/19/5/20/5/21/9/22/9/23/9/24/9/25/9/26/1/27/1/28/1/29/1/30/9/31/9/32/9/33/9"
   Fimport.link(adrDocCSV, "", "Text - txt - csv (StarCalc)", optFiltre, com.sun.star.sheet.SheetLinkMode.VALUE)


Merci encore de ton aide. :super:
Obligation de version libreoffice 5.2.6.2
windows 10
fneck
Membre lOOyal
Membre lOOyal
 
Message(s) : 39
Inscrit le : 07 Jan 2014 11:38


Retour vers Macros et API

Qui est en ligne ?

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