Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Invité régulier
    Inscrit en
    septembre 2010
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 143
    Points : 9
    Points
    9

    Par défaut Import CSV dans un champ table

    Bonjour à tous

    Voila, j'ai besoin d'afficher dans un champ table toutes la valeur d'un fichier csv (qui peut comporter un nombre variable de colonnes).

    Afficher tout dans une table n'est pas un problème, le soucis est que mes colonnes de ma tables doivent être identifiées (en gros je fais un logiciel d'e-mailling et le champ comportant les adresses emails doit être identifié comme colonne "mail" car je fais ensuite des traitements sur cette colonne, pareil pour les nom et prénoms par exemple car lors de l'envoi d'email il sera possible de remplacer une chaine "[nom]" par le nom inscrite dans ma colonne "nom").

    Pour faire court lorsque l'utilisateur importe son CSV je dois savoir quel champ correspond à quelle colonne ...

    Je ne sais pas si c'est clair car ce n'est pas simple à expliquer mais dans le cas contraire j'attends vos questions afin de vous éclairer au mieux.

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2007
    Messages : 561
    Points : 1 196
    Points
    1 196

    Par défaut

    Bonjour,

    Généralement, la première ligne comporte les noms de colonnes ...

    Si ce n'est pas le cas, l'ordre des colonnes est-il connu et fixe ?

    Hemgé

  3. #3
    Invité régulier
    Inscrit en
    septembre 2010
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 143
    Points : 9
    Points
    9

    Par défaut

    En effet je n'avais pas pensé que la première ligne comportait les libellés.
    Mais comment faire pour ensuite affecter chaque valeur à la bonne colonne ?

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2007
    Messages : 561
    Points : 1 196
    Points
    1 196

    Par défaut

    Je crois que vous devriez commencer par faire une petite recherche dans le Forum, simplement sur "CSV".

    Je viens de jeter un œil.

    Il y a de nombreuses discussions qui vous permettront de vous familiariser avec le sujet et d'élaborer une solution, que nous vous aiderons à mettre au point si cela est encore nécessaire.

    Bon travail

    Hemgé

  5. #5
    Invité régulier
    Inscrit en
    septembre 2010
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 143
    Points : 9
    Points
    9

    Par défaut

    Je vais regarder cela.

    Merci beaucoup pour votre aide

  6. #6
    Membre Expert Avatar de laurent30s
    Homme Profil pro Laurent
    Inscrit en
    novembre 2007
    Messages
    826
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent
    Localisation : France

    Informations forums :
    Inscription : novembre 2007
    Messages : 826
    Points : 1 515
    Points
    1 515

    Par défaut

    Un code que j'avais fait il y a quelques années...

    Il faut une table "TABLE_MaTable" avec une colonne de type chaîne "COL_1"

    Le code qui charge un fichier csv et rempli la table

    Code :
    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
    tabMontableau est un tableau de * par  * chaînes
    sFichierCSV est une chaîne
    sFichierCSV = fChargeTexte("D:\export.csv")
    CSVVersTableau(sFichierCSV,tabMontableau,";")
    nNb_Ligne est un entier = TableauInfo(tabMontableau,tiNombreLignes)
    nNb_Colonne est un entier = TableauInfo(tabMontableau,tiNombreColonnes)
    nNb_col_a_supprimer est un entier = TABLE_MaTable..NombreColonne
    sLigne_table est une chaîne
    
    // vide la table
    TableSupprimeTout(TABLE_MaTable)
    
    // supprime colonnes précédemment créées
    POUR i = 2 A nNb_col_a_supprimer	
    	ChampSupprime("TABLE_MaTable.COL_"+ i)
    FIN
    
    // crée les colonnes
    TABLE_MaTable.COL_1..Libellé = tabMontableau[1,1]
    POUR i = 2 A nNb_Colonne
    	ChampClone({"TABLE_MaTable.COL_1",indChamp},"COL_"+i,{"TABLE_MaTable",indChamp}..NombreColonne + 1)
    	{"TABLE_MaTable.COL_"+i,indChamp}..Libellé = tabMontableau[1,i]
    FIN
    
    // rempli la table
    POUR i = 2 A nNb_Ligne
    	sLigne_table = ""
    	POUR j = 1 A nNb_Colonne
    		sLigne_table += tabMontableau[i,j] + TAB
    	FIN	
    	sLigne_table = Gauche(sLigne_table,Taille(sLigne_table)-1)
    	TableAjoute(TABLE_MaTable,sLigne_table)
    FIN
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  7. #7
    Invité régulier
    Inscrit en
    septembre 2010
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 143
    Points : 9
    Points
    9

    Par défaut

    Merci Laurent pour ta contribution, j'ai utilisé ton code et ça fonctionne sauf que à l'origine j'ai 2 colonnes qui devront etre par défaut dans ma table (une colonne "Activer" contenant un interupteur pour chaque ligne, et une colonne "Etat" qui affichera l'état du traitement de la ligne).

    Sauf que je n'arrive pas à insérer ces deux colonnes supplémentaires...
    J'ai essayé de plusieurs façons : en ajoutant mes 2 colonnes par programmation en utilisant champClone après que ton code soit éxécuté mais ça ne fonctionne pas (aucun remplissage).

    J'essaye d'insérer dans la premiere ligne du tableau (donc dans les entetes) mes colonnes supplémentaires mais je n'y arrive pas, je ne sais pas comment faire.

    J'avoue que je tourne un peu en rond :s

  8. #8
    Membre Expert Avatar de laurent30s
    Homme Profil pro Laurent
    Inscrit en
    novembre 2007
    Messages
    826
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent
    Localisation : France

    Informations forums :
    Inscription : novembre 2007
    Messages : 826
    Points : 1 515
    Points
    1 515

    Par défaut

    Ajoute tes 2 colonnes en dur
    COL_Activer : interrupteur
    COL_Etat : Chaîne
    avant
    COL_1 : Chaîne

    Puis dans le code il faut tenir compte de ces 2 colonnes dans les colonnes à supprimer. Pour cela...
    Code :
    nNb_col_a_supprimer est un entier = TABLE_MaTable..NombreColonne - 2
    Ça devrait marcher...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  9. #9
    Invité régulier
    Inscrit en
    septembre 2010
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 143
    Points : 9
    Points
    9

    Par défaut

    Oui j'ai fait un peu le même genre que ça et j'ai le même résultat, c'est à dire que la table est bien remplie mais le contenu ne correspond pas à la colonne.

    Le fait d'avoir 2 colonnes supplémentaire décale le chargement du contenu, j'ai essayé de rajouter +2 à nNbColonne mais j'ai une erreur.

  10. #10
    Membre Expert Avatar de laurent30s
    Homme Profil pro Laurent
    Inscrit en
    novembre 2007
    Messages
    826
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent
    Localisation : France

    Informations forums :
    Inscription : novembre 2007
    Messages : 826
    Points : 1 515
    Points
    1 515

    Par défaut

    Autant pour moi, il faut décaler le remplissage de la table avec 2 TAB

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // rempli la table
    POUR i = 2 A nNb_Ligne
    	sLigne_table = TAB + TAB
    	POUR j = 1 A nNb_Colonne
    		sLigne_table += tabMontableau[i,j] + TAB
    	FIN	
    	sLigne_table = Gauche(sLigne_table,Taille(sLigne_table)-1)
    	TableAjoute(TABLE_MaTable,sLigne_table)
    FIN
    En espérant que cette fois ce soit bon...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  11. #11
    Invité régulier
    Inscrit en
    septembre 2010
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 143
    Points : 9
    Points
    9

    Par défaut

    Ha ba voila c'etait simple en fait

    Un grand MERCI, pour votre aide ça m'a vraiment aidé.
    C'est super sympa de faire partager votre experience

    Bonne soirée

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •