IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

remplir une combobox à partir d'un fichier .csv


Sujet :

MFC

  1. #21
    Membre confirmé Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Points : 521
    Points
    521
    Par défaut
    et c'est quoi le délimiteur de colonne dans ce fichier CSV ?

    c'est une position précise pour chaque colonnes ou un caractère précis ?

  2. #22
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    et c'est quoi le délimiteur de colonne dans ce fichier CSV ?
    le point virgule ";"

    Je crois surtout qu'il espère que tu vas réfléchir à sa place sur des questions qui n'ont rien de techniques ...

  3. #23
    Membre confirmé Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Points : 521
    Points
    521
    Par défaut
    Requête Référence Proprietaire Date Arrivée Matériel
    57101 __C7587J __PARIS_____ 20/01/2009
    57102 __123456 __NANTES___ 18/12/2008
    57103 __789456 __PARIS_____ 14/06/2008
    57104 __654528 __PARIS_____ 15/05/2008
    57105 __321654 __NANTES___ 21/02/2009
    mais quand je vois ça, je ne vois pas de point virgule !

    Je crois surtout qu'il espère que tu vas réfléchir à sa place sur des questions qui n'ont rien de techniques ...
    je crois bien aussi ......

  4. #24
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    Requête Référence Proprietaire Date Arrivée Matériel
    57101 __C7587J __PARIS_____ 20/01/2009
    57102 __123456 __NANTES___ 18/12/2008
    57103 __789456 __PARIS_____ 14/06/2008
    57104 __654528 __PARIS_____ 15/05/2008
    57105 __321654 __NANTES___ 21/02/2009
    Ceci représente l'exemple d'un tableau!!!!

    Et oui ce sont des points virgules ";" les séparateurs dans un fichier .csv mais moi j'ai remplacer c'est point virgule par des pipes "|"!!

    je voulais juste avoir de l'aide, sur comment filtrer une colonne!!!

    merci pour votre aide

  5. #25
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Réalisation du code pour afficher dans la combobox :
    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
    // PERMET D'AFFICHER LES SITES DANS LA COMBOBOX SANS AVOIR DEUX FOIS LE MEME...
    	int w,x;
    	int res2;
    	w=1;
    	m_valueCtrlSite.InsertString(0,(CString)listesite[0]); // on insert dans la ComboBox le nom du premier site
    	for (int j=0;j<60000;j++) // pour 60000 lignes...
    	{	
     
    		x=j;				// "x" prend la valeur de "j" (c'est a dire le numero de la ligne)
    		do					//faire
    		{	
    			if (j!=0)		// si j est différent de 0 (car sinon listesite[j-1] n'existe pas -> bug)
    			{	res2 = strcmp (listesite[x-1],listesite[j]); // on compare le nom du site au précédent
    				if (res2!=0) // si les 2 noms sont différent
    				{	x--;		// on décrémente "x" de facon à comparer avec le nom du site "l-2" puis "l-3"... 
    					if (x==0)	// ...jusqu'à temps que "x" soit égale à zéro (c-à-d jusqu'à ce qu'on est remonté tout le tableau)
    					{	
    						m_valueCtrlSite.InsertString(w,(CString)listesite[j]); // s'il n'y était pas encore, on ajoute le nom du site dans la liste de la ComboBox
    						w++;    // on incrémente "w" qui correspond à la place du nom de site dans la liste de la ComboBox
    					}
    				}
    				else		// sinon, si les 2 chaines sont identiques (nom du site déja rencontré)
    				{	
    					x=0;	// on met "x" à zéro de facon à sortir de la boucle
    				}
    			}
    			else 
    			{
    				x=0;		// on met "x" à zéro de facon à sortir de la boucle
    			}
    		}
    		while (x!=0); //tant que "x" est différent de zéro
     
    	}	
    	m_valueCtrlSite.SetCurSel(0);  // Met la premiere valeur de la liste en choix par défaut
    	m_valueCtrlSite.DeleteString(w-1); //Supprime le dernier choix de la liste (c'était un "vide"...)
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    //PERMET DE METTRE TOUS LES NOMS DES SITES PRESENT DANS LE FICHIER .CSV DANS UN TABLEAU "listesite"
    void CChoixIlot::ListeSite()
    {
     
    	FILE * fichierCsv;									// Nom du fichier qu'on va utiliser
    	char * cToken;										// Buffer du contenu des valeurs d'une ligne
    	char * cToken2;										// Buffer du contenu des valeurs d'une ligne
    	char cBuffligne[1500] = "";							// Buffer du contenu de la ligne du fichier
    	int iCompteur = 0;									// Compte le nombre de fois où on boucle
    	int colonneProprietaire;
    	bool d=TRUE;													// Numéros des colonnes qui nous intéressent
    	// ON RECUPERE LE NUMERO DES COLONNES QUI NOUS INTERESSENT
    	if(( fichierCsv = fopen (cheminFichier1,"r")) != NULL)
    														//Si pas de problème lors de l'ouverture du fichier
    	{
    		//if (fgets(cBuffligne,sizeof(cBuffligne),fichierCsv) != NULL)	
    		while (    (fgets(cBuffligne,sizeof(cBuffligne),fichierCsv) != NULL) && d==TRUE )//pour toute les lignes du fichier ou jusqu'a ce que "d" soit faux
    	    {
    				cToken = strtok( cBuffligne, "|\n" );		//Le délimiteur des valeurs est un pipe
    				while( cToken != NULL && d==TRUE )
    				{
     					iCompteur ++;							// lorsqu'on boucle, cela veut dire qu'on passe à la colonne suivante...
    					if((CString) cToken == "Propriétaire")
    					{										// si entre deux virgules on reconnait ce String
    						colonneProprietaire = iCompteur;// alors on recupère ce qui correspond à son numéro de colonne
    						cToken=NULL;
     
    					}
    					if ((CString) cToken == "Date Effective")// si on rencontre la dernière colonne "Date Effective" 
    					{
    						d=FALSE;   // on met "d" a FALSE pour sortir de la boucle
    					}
    					cToken = strtok( NULL, "|\n" );			//on passe au Token suivant
    				}iCompteur=0;
     
    		}
    	}fclose(fichierCsv);
     
    	if(( fichierCsv = fopen (cheminFichier1,"r")) != NULL)
    	{	
    		CString temp;
    		int l=0;	//Si pas de problème lors de l'ouverture du fichier
    		while (fgets(cBuffligne,sizeof(cBuffligne),fichierCsv) != NULL)	//Pour chaque ligne du fichier
    		{										
    			iCompteur=0;
    			cToken2 = strtok( cBuffligne, "|" );		//Le délimiteur des valeurs est un pipe
    			while ( cToken2 != NULL )
    			{
    				iCompteur ++;							// compteur des "pipe", à chaque boucle on est passé à la colonne suivante
    				if ( iCompteur == colonneProprietaire )			// si on est à la colonne "Propriétaire"
    				{
     
    						int result=strcmp(cToken2," "); // on compare la valeur de la cellule a "vide"
    						if(result!=0)					//si la colonne "propriétaire" a bien été rempli 
    						{
    							if ((CString)cToken2!="Propriétaire") // si la chaine de caractère n'est pas le titre de la colonne
    							{
    								temp=(CString)cToken2; // "temp" prend pour valeur le nom du site
    								int c = temp.GetLength();// "c" prend pour valeur sa longueur
    								temp.Delete(4,c-4); // on supprime tout le nom du site à partir du 4ème caractère
    								int res1=strcmp(temp,"PROPRIETAIRE"); // pour pouvoir le comparer a la chaine "PROPRIETAIRE"
    								if (res1!=0) 	
    								{
    									listesite[l]=cToken2; // on ajoute le nom du site au tableau "listesite"
    									l++;//on incrémente le pointeur qui indique la ligne du tableau
    								}
    							}
    						}
     
    				}
    				cToken2 = strtok( NULL, "|" ); // on récupère l'autre Token
    			}
    		}
    	}
    	fclose (fichierCsv); // on ferme le fichier
     
    }


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/05/2015, 17h32
  2. Remplir une combobox à partir de la 2e ligne
    Par wagui26 dans le forum Débuter
    Réponses: 10
    Dernier message: 13/10/2008, 17h49
  3. [Stratégie] Remplir une ComboBox à partir du contenu d'un JTextField
    Par une_tite_question dans le forum Composants
    Réponses: 4
    Dernier message: 01/07/2008, 15h22
  4. Réponses: 0
    Dernier message: 07/02/2008, 17h09
  5. Remplir une liste à partir d'un fichier texte
    Par leroidje dans le forum Langage
    Réponses: 1
    Dernier message: 01/07/2007, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo