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
Partager