Helo,

Voici le problème : j'ai un fichier CSV de la structure suivant :

"titre1";"titre2";"titre3"
"data1;"data2";"data3"
"data1;"data2";"data3"
"data1;"data2";"data3"

J'utilise donc comme délimiteur de données " / pour les colonnes ;

et un fic contenant les mêmes titres/rubriques.

Mais le CSV contient moins de titres/rubriques que le fic et en plus pas dans l'ordre.

Donc je pensais lire ligne par ligne et correspondre/enregistrer les données selon correspondance par titre/rubrique

J'ai trouvé le code si-dessous dans le forum, mais pas de réponse s'il est fonctionnel ou non.

Mais il parait un peu correspondre à ce que je veux, non ?
Pourriez-vous me le confirmer ?
Si nécessaire m'aider à le mettre au point ?

BAV

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
nIdFic=fOuvre(Fichiercsv,foLecture)
SI nIdFic=-1 ALORS
Erreur("Impossible d'ouvrir le fichier.",...
"Vérifier qu'il n'est pas déjà ouvert sur une autre
application.",xlsMsgErreur(nIdFic))
RETOUR
FIN
TableSupprimeTout(TableImport)
sLigne= fLitLigne(nIdFic)
 
Premiere ligne contenant les données
nPremièreLigne = 1
sinon
nPremièreLigne=2
nNbColonnes est un entier= ChaîneOccurrence(sLigne, ";")+1
 
TANTQUE sLigne <> EOT
// on remplit la table mémoire
TableAjouteLigne(TableImport)
// on construit la ligne lue
POUR nColonne =1 A nNbColonnes
sdonnee=ExtraitChaîne(sLigne,nColonne,";")
SI sdonnee=EOT ALORS
{"Colonne"+nColonne}[TableOccurrence(Table)]=""
SINON
// Je traite si il y a des guillemets
guillemet=sdonnee
SI ChaîneOccurrence(guillemet,gCO_Guillemet)>1 ALORS
SI Gauche(guillemet,1)=gCO_Guillemet ALORS
guillemet=Milieu(guillemet,2,Taille(guillemet)-1)
SI Droite(guillemet,1)=gCO_Guillemet ALORS
guillemet=Gauche(guillemet,Taille(guillemet)-1)
TANTQUE ChaîneOccurrence(guillemet,gCO_Guillemet+gCO_Guillemet)<&g
t;0
 
guillemet=Remplace(guillemet,gCO_Guillemet+gCO_Guillemet,gCO_Guillemet)
FIN
FIN
{"Colonne"+nColonne}[TableOccurrence(TableImport)]=guillemet
FIN
// si c'est un numérique
SI NumériqueVersChaine(Val(sdonnee))=sdonnee ALORS
{"Colonne"+nColonne}..CadrageHorizontal=iDroite
SINON
{"Colonne"+nColonne}..CadrageHorizontal=iGauche
FIN
FIN
sLigne = fLitLigne(nIdFic)
FIN