• Advertisement

[résolut] lire le contenu d'un fichier excel

Tout ce qui concerne la version 11 & plus récentes de windev

**Windev est une marque déposée de Pcsoft**

[résolut] lire le contenu d'un fichier excel

Messagepar morodashi » Jeu Juin 18, 2009 4:40 pm

bonjour a toutes et tous.
ca faisait longtemps que je n' étais pas passé vous voir, mais j'ai déménagé et changé de boulot et ...... bon tout le monde s'en fou en faite!
Voilà en faite, je vend des téléphones et pour ce faire, je recois de ma centrale d'achat un fichiers excel contenant toutes les REM (abréviation de remise) de mes téléphones et de mes options. En gros quand je veut vendre un téléphone, il faut que je regarde sont prix, et que je lui déduise les REM qui lui sont associées pour calculer sont prix de vente minimum.
Je ne sais pas qui fait et ou modifie ce fichier, mais des données, y'en a partout!

je vais donc avoir des info du type:

BOUYGUES R.AL UM1H SE W350I N (ce qui veux dire: Bouygues remise alignement universal music 1 heure sony Ericsson w350i) ce qui veut dire que je dois activer cette REM si je vend ce téléphone avec cette abonnement, plus les eventuels autres REM (24 mois, option sms etc....)

Il me faudrais donc avoir la possibilité dans une combo de choisir l'opérateur(bouygues, sfr, orange, virgin ....) dans une zone de texte le modèle du téléphone (w350 ou w 350 etc...) et qu'il m'affiche dans une table ou autre (je vous laisse choisir en fonction de votre expérience ce qui vous semble etre le plus facile a utiliser) tout ce qui a etait trouvé lors du filtrage ou de la recherche.

le truc c'est que la ligne correspondant a mon téléphone dans l'exemple cité plus haut à cette tete:
795339 BOUYGUES R.AL UM1H SE W350I N 110,75 €
soit un code a 6 chiffres, la désignation et le montant associé. Lorsque ma recherche est faite il me faut récupérer ces trois informations contenu dans trois cellules différentes (A28, B28, C28)

Ainsi, lorsque ma recherche est faite, je n'ai que les REM correspondant a mon téléphone pour l'opérateur que je souhaite, il ne me reste plus qu'a faire mes choix.

j'espère que mes explications étaient a la fois claires et suffisamment détaillées et que quelqu'un pourra me donner de bonnes pistes pour me permettre de faire ce petit programme.
merci a vous
Dernière édition par morodashi le Jeu Juin 25, 2009 5:57 pm, édité 2 fois.
Ma devise: "potius mori quam foedari" ou en Breton: Kentoc'h mervel eget bezañ saotret
Avatar de l’utilisateur
morodashi
Membre Confirmé
 
Messages: 790
Inscription: Mar Nov 06, 2007 10:53 am
Localisation: tours

Advertisement

Re: lire le contenu d'un fichier excel

Messagepar Thesquall » Ven Juin 19, 2009 3:55 pm

Salut,

je vais essayer de t'aiguiller pour récupérer tes infos. Dommage que tu n'as pas mit le fichier source cela aurais était plus facile à traiter ; j'ai donc fais avec ce que je comprenais : c'est a dire mettre des infos dans une table lorsque que tu as choisi l'opérateur et le tel.

Voici ce que je te propose :

tu crées une combo et tu met tes opérateurs ; tu crée ton champ de saisie pour les tel

et dans l'évènement clic d'un bouton
Code: Tout sélectionner
//variables
id_fichier est un numérique
xNb_ligne, ligne_enCours est un numérique

//ouverture du fichier
id_fichier = xlsOuvre(fSélecteur("", "", "Sélectionnez un fichier...", "Tous fichiers (*.*)"+TAB+"*.*", "*.*", fselOuvre+fselExiste))

//compte le nb de ligne dans le fichier
xNb_ligne = xlsNbLigne(id_fichier)

//permet le parcours du fichier
ligne_enCours = 1

//boucle de parcours
TANTQUE xNb_ligne >= ligne_enCours
   
   //si la donnée de la colonne 2 ici pour les opérateur correspond a la valeur de la combo de l operateur
   SI xlsDonnée(id_fichier,ligne_enCours,2) = COMBO_Combo1..ValeurAffichée  ALORS
      
      //si la donnée de la colonne 6 ici pour le tel correspond a la valeur du champ de saisie du tel
      SI xlsDonnée(id_fichier,ligne_enCours,6) = SAI_Saisie1 ALORS
         
         //alors on ajoute les données recherchees dans la table
         TableAjouteLigne(TABLE_Table1,xlsDonnée(id_fichier,ligne_enCours,1),xlsDonnée(id_fichier,ligne_enCours,2),xlsDonnée(id_fichier,ligne_enCours,3),xlsDonnée(id_fichier,ligne_enCours,4),xlsDonnée(id_fichier,ligne_enCours,5),xlsDonnée(id_fichier,ligne_enCours,6),xlsDonnée(id_fichier,ligne_enCours,7),xlsDonnée(id_fichier,ligne_enCours,8))
      FIN
   FIN
//on passe a la ligne suivante   
ligne_enCours++
FIN


ce n'est qu'une piste et en espérant t'avoir aidé.
Thesquall
Nouveau Membre
 
Messages: 13
Inscription: Mer Mai 20, 2009 8:48 am

Re: lire le contenu d'un fichier excel

Messagepar morodashi » Dim Juin 21, 2009 4:42 pm

En attendant ton analyse, je continue a chercher aussi, j'ai déjà, semble t'il un problème. lorsque je vérifie id_fichier il me dit que mon ID_fichier = "-1" et que mon nombre de ligne ="-1" aussi.
Donc visiblement il y'a une erreur, il ne dois pas arriver a ouvrir le fichier. J'ai essayer de mettre le chemin direct du fichier, sans utiliser fselecteur donc, d'utiliser un nom simple sans espace pour le fichier et ça fait toujours pareil.
Dans l'aide, concernant xlsouvre, id fichier dois être un entier. j'ai modifier en conséquence mais ca n'a rien changé

J'édite pour donner plus de détail sur le problème. j'ai utilisé le code Info(xlsMsgErreur(gxId_fichier)) pour essayer d'en savoir plus sur le pourquoi du comment, et ça me donne ça:

Un enregistrement de type CONTINUE était attendu et n'a pas était trouvé.
offset: 0x0000 Tag: 0x6900

Voilà perso ça m'aide pas a comprendre mais peut être que des pros saurons.
Ma devise: "potius mori quam foedari" ou en Breton: Kentoc'h mervel eget bezañ saotret
Avatar de l’utilisateur
morodashi
Membre Confirmé
 
Messages: 790
Inscription: Mar Nov 06, 2007 10:53 am
Localisation: tours

Re: lire le contenu d'un fichier excel

Messagepar TheDuke » Dim Juin 21, 2009 9:36 pm

Salut Morodashi,

As tu vérifier que le fichier n'était pas ouvert ou en cours d'utilisation avant ton instruction?
TheDuke
SUPER MEMBRE
 
Messages: 1268
Inscription: Mer Nov 22, 2006 8:24 pm

Re: lire le contenu d'un fichier excel

Messagepar morodashi » Lun Juin 22, 2009 5:24 am

J'y avait déjà pensé et effectivement, la première fois que j'ai exécuté mon projet le fichier Excel était déjà ouvert. Mais depuis il est fermé et le message persiste. Je viens de réessayer avec le fichier ouvert, le message d'erreur et le même.
Ma devise: "potius mori quam foedari" ou en Breton: Kentoc'h mervel eget bezañ saotret
Avatar de l’utilisateur
morodashi
Membre Confirmé
 
Messages: 790
Inscription: Mar Nov 06, 2007 10:53 am
Localisation: tours

Re: lire le contenu d'un fichier excel

Messagepar TheDuke » Lun Juin 22, 2009 6:30 am

Essaie quand même un Hferme(IdFichier) avant le Houvre , à tout hasard :?:
TheDuke
SUPER MEMBRE
 
Messages: 1268
Inscription: Mer Nov 22, 2006 8:24 pm

Re: lire le contenu d'un fichier excel

Messagepar morodashi » Lun Juin 22, 2009 6:48 am

en faite c'est un xlsouvre, donc j'ai essayé xlsferme mais comme je n'ai pas l'identifiant du fichier il va pas pouvoir le fermer. en faite il ne l'a pas ouvert. mais j'ai essayé quand même et ça n'a pas marché.
désolé
Ma devise: "potius mori quam foedari" ou en Breton: Kentoc'h mervel eget bezañ saotret
Avatar de l’utilisateur
morodashi
Membre Confirmé
 
Messages: 790
Inscription: Mar Nov 06, 2007 10:53 am
Localisation: tours

Re: lire le contenu d'un fichier excel

Messagepar morodashi » Lun Juin 22, 2009 7:41 am

en détaillant la fonction "xlsFeuilleEnCours" dans l'aide on peut y voir ça:

Code: Tout sélectionner
Permet de connaître ou de modifier la feuille courante d'un fichier XLS.

Remarques :

 En mode multi-feuilles, les fonctions de gestion des fichiers XLS travaillent toujours sur la feuille courante. Lors de l'ouverture du ficher XLS, la 1ère feuille du classeur est la feuille courante.

En mode compatible, cette fonction n'a aucun effet.



et voila le truc, mon fichier est bien ouvert en mode de compatibilité. donc j'ai viré les feuilles en ne gardant que celle qui m'interresse et pour le coup le fichier s'ouvre bien. par contre il me trouve 1913 lignes au lieu de 1914 lignes.

Donc pourquoi il me manque une ligne et pourquoi ce fichier s'ouvre en mode de compatibilité?????

Bon si j'enregistre mon fichier en fichier excel il m'en fait un fichier xlsx que windev ne sais pas gérer. Es ce que le fait que j'ai office 2007 avec windev 12 pose problème?
sinon si je vire la premiere ligne du fichier qui contient le titre du document et la deuxième ligne qui est vide il me trouve le bon nombre de ligne soit 1912.
La fonction xlsNbLigne compte le nombre de ligne ou le nombre de ligne "rempli"?

il suffisait de lire l'aide de la fonction jusqu'au bout:

Code: Tout sélectionner
<Résultat> = xlsNbLigne(<Identifiant du fichier XLS> [, <Lignes vides>])

Détails des paramètres
<Résultat> : Entier

Nombre de lignes du fichier XLS spécifié ou -1 en cas d'erreur (fichier non ouvert par exemple). Pour connaître le libellé de l'erreur, utilisez la fonction xlsMsgErreur ou la fonction ErreurInfo avec le paramètre errMessage.

<Identifiant du fichier XLS> : Entier

Identifiant du fichier XLS à manipuler, renvoyé par la fonction xlsOuvre.
<Lignes vides> : Booléen optionnel

Mode de prise en compte des lignes vides :

Vrai (par défaut)
 Les lignes entièrement vides ne sont pas prises en compte
 
Faux
 Les lignes entièrement vides sont prises en compte
Dernière édition par morodashi le Lun Juin 22, 2009 8:36 am, édité 2 fois.
Ma devise: "potius mori quam foedari" ou en Breton: Kentoc'h mervel eget bezañ saotret
Avatar de l’utilisateur
morodashi
Membre Confirmé
 
Messages: 790
Inscription: Mar Nov 06, 2007 10:53 am
Localisation: tours

Re: lire le contenu d'un fichier excel

Messagepar morodashi » Lun Juin 22, 2009 8:31 am

Quelqu'un peut il me dire comment faire la même chose en gardant les 5 feuilles du classeur?
Ma devise: "potius mori quam foedari" ou en Breton: Kentoc'h mervel eget bezañ saotret
Avatar de l’utilisateur
morodashi
Membre Confirmé
 
Messages: 790
Inscription: Mar Nov 06, 2007 10:53 am
Localisation: tours

Re: lire le contenu d'un fichier excel

Messagepar morodashi » Lun Juin 22, 2009 12:12 pm

encore une question qui se pose a moi, lorsque je demande de m'afficher le contenu d'une cellule colonne A ligne 10 il me donne le contenu de la ligne 11
Et ce quelque soit la cellule que je lui demande il décale tout d'une ligne.
Ma devise: "potius mori quam foedari" ou en Breton: Kentoc'h mervel eget bezañ saotret
Avatar de l’utilisateur
morodashi
Membre Confirmé
 
Messages: 790
Inscription: Mar Nov 06, 2007 10:53 am
Localisation: tours

Re: lire le contenu d'un fichier excel

Messagepar karinfo » Lun Juin 22, 2009 2:43 pm

morodashi a écrit:encore une question qui se pose a moi, lorsque je demande de m'afficher le contenu d'une cellule colonne A ligne 10 il me donne le contenu de la ligne 11
Et ce quelque soit la cellule que je lui demande il décale tout d'une ligne.

salut
peut etre qu'il ya une ligne vide qui n'est pas prise pas en compte
esseye avec

xlsDonnée(id_fichier,n°ligne,n°colonne,Faux)
Avatar de l’utilisateur
karinfo
Membre
 
Messages: 48
Inscription: Dim Avr 26, 2009 7:13 am

Re: lire le contenu d'un fichier excel

Messagepar morodashi » Lun Juin 22, 2009 9:05 pm

mais bien sur, j'avais eu le même problème avec xlsOuvre et j'avais trouvé la solution, comment j'y ai pas pensé?????
merci pour ta réponse.
Ma devise: "potius mori quam foedari" ou en Breton: Kentoc'h mervel eget bezañ saotret
Avatar de l’utilisateur
morodashi
Membre Confirmé
 
Messages: 790
Inscription: Mar Nov 06, 2007 10:53 am
Localisation: tours

Re: lire le contenu d'un fichier excel

Messagepar morodashi » Mar Juin 23, 2009 7:36 am

bon, j'ai fait pas mal de petits essais. J'arrive a recherche un contenu précis et à en afficher les coordonnées, j'arrive a afficher le contenu d'une cellule choisie. Il me reste a savoir comment chercher une chaine de caractère précise dans une cellule.
Quelqu'un peu me donner une piste?
Ma devise: "potius mori quam foedari" ou en Breton: Kentoc'h mervel eget bezañ saotret
Avatar de l’utilisateur
morodashi
Membre Confirmé
 
Messages: 790
Inscription: Mar Nov 06, 2007 10:53 am
Localisation: tours

Re: lire le contenu d'un fichier excel

Messagepar karinfo » Mar Juin 23, 2009 7:50 am

morodashi a écrit:bon, j'ai fait pas mal de petits essais. J'arrive a recherche un contenu précis et à en afficher les coordonnées, j'arrive a afficher le contenu d'une cellule choisie. Il me reste a savoir comment chercher une chaine de caractère précise dans une cellule.
Quelqu'un peu me donner une piste?

voila une piste
smachaine est une chaine
smachine="chaine rechercher"
SI sMachaine=Gauche(xlsDonnée(id_fichier,nligne,ncolonne,Faux),Taille(sMachaine)) ALORS
//traitement
FIN
Avatar de l’utilisateur
karinfo
Membre
 
Messages: 48
Inscription: Dim Avr 26, 2009 7:13 am

Re: lire le contenu d'un fichier excel

Messagepar morodashi » Mar Juin 23, 2009 10:30 pm

y'a t'il un moyen simple de rechercher 2 chaines de caractères a savoir dans l'exemple donné dans le premier post, "BOUYGUES" et "w350" et que si ces deux condition sont rempli je fait un tableajoute sachant que je connait la position de "BOUYGUES" puisqu'il sera toujours le premier mot, mais je ne sais pas ou se trouvera "w350".

BOUYGUES R.AL UM1H SE W350I N
BOUYGUES R.AL.NEO SE W350I NO

Dans ces deux exemples, le premier concernant le téléphone sur un forfait universal et le deuxième un forfait néo, la chaine "w350" se trouve au 24ème caractère en partant de la gauche pour le premier exemple et au 23ème pour le second. Je ne sais donc jamaisou cette chaine va se trouver.

L'idée et que si :
SI les 3 premiers caractères de l'opérateur = les trois premiers caractères de la cellule ET la chaine "w350" = vrai ALORS
on le rajoute dans la table et on cherche les mêmes critères dans la ligne suivante et ce jusqu'à ce que var_ligne_en_cours > nombre lignes du fichier.

Je récupère dans ma table, toutes les lignes de mon fichier qui commence par bouygues et qui contiennent w350.

C'est pas fini mais merci a tous pour votre aide
Ma devise: "potius mori quam foedari" ou en Breton: Kentoc'h mervel eget bezañ saotret
Avatar de l’utilisateur
morodashi
Membre Confirmé
 
Messages: 790
Inscription: Mar Nov 06, 2007 10:53 am
Localisation: tours

Suivante


  • Advertisement

Retourner vers Forum windev 11 & plus récentes

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités