[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 !
fneck
Membre OOrganisé
Membre OOrganisé
Messages : 50
Inscription : 07 janv. 2014 11:38

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

Message par fneck »

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 '
import CSV_paramètres fonctionnels
import CSV_paramètres fonctionnels

la ligne de code qui permet de définir les critères est celle-ci :

Code : Tout sélectionner

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

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 modification par fneck le 04 juin 2019 10:27, modifié 1 fois.
Obligation de version libreoffice 6.2.7.1
windows 10 Pro
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
Messages : 3160
Inscription : 06 juil. 2008 19:08
Localisation : dans le Périgord

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

Message par gerard24 »

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.4.5 sous Windows 10.
pour télécharger LibreOffice
fneck
Membre OOrganisé
Membre OOrganisé
Messages : 50
Inscription : 07 janv. 2014 11:38

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

Message par fneck »

Ca a fonctionné en enlevant simplement la double cote soit le code corrigé comme suit :

Code : Tout sélectionner

	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 6.2.7.1
windows 10 Pro
Répondre