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

WinDev Discussion :

Lecture de Fichier xls impossible [WD14]


Sujet :

WinDev

  1. #1
    Membre régulier Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Points : 124
    Points
    124
    Par défaut Lecture de Fichier xls impossible
    Bonjour,
    j'ai le code ci-dessous mais je n'arrive pas à ouvrir le fichier sélectionner pour lire le contenu d'une cellule. Si quelqu'un a déjà eu ce problème merci de m'aider
    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
    gsCheminFicxls = fSélecteur("", "", "Sélectionnez un fichier.....", "Excel"+TAB+"*.xls"+RC+"Tous fichiers (*.*)"+TAB+"*.*", "xls", fselOuvre+fselExiste)
     
    SI gsCheminFicxls = "" ALORS
    	RETOUR
    SINON
    	IdFic = xlsOuvre(gsCheminFicxls, xlsEcriture)
    	SI IdFic <> -1 ALORS
    		sContenu = xlsDonnée(IdFic, 4, 1, Faux)
    		SI sContenu = "" ALORS
    			Info("La cellule est vide !")
    		SINON
    			Info(sContenu)
    			xlsFerme(IdFic)	
    		FIN
    	SINON
    		sErreurXls = xlsMsgErreur(IdFic)
    		Erreur(sErreurXls)
    	FIN
    FIN

  2. #2
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    Et le message d'erreur, il dit quoi????
    Là, c'est chercher un octet dans une meule de gigabytes....
    Merci de le poster afin de cibler nos réponses.

  3. #3
    Membre régulier Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Points : 124
    Points
    124
    Par défaut
    Le message d'erreur est : IMPOSSIBLE D'OUVRIR LE FICHIER + chemin_du_fichier

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    un petit affichage du chemin devrait t'orienter vers le pourquoi du problème.

    à bientôt,

    Nicolas

  5. #5
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    En plus de la remarque judicieuse de Nicolas_Jeanneau, il serait bon d'avoir TOUT le code de ta procédure afin d'y déceler des incompatibilités de déclarations de variables... du type IDFIC...

  6. #6
    Membre régulier Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Points : 124
    Points
    124
    Par défaut
    Voici la déclaration des variables dans la procédure bouton1 qui la lance. Donc cette déclaration est juste avant le code précédent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IdFic est un entier
    sContenu, sErreurXls est une chaîne
    Pour le chemin, j'ai regarder il est plutôt correct, si tu pouvais m'en dire plus Nicholas

  7. #7
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    Lorsque sur ce forum, nous demandons des précisions afin de cibler notre réponse, c'est que d'après nous, il manque des éléments de réflexion... Aussi y répondre favorise-t-il un retour rapide sur une éventuelle résolution de problème.
    Quoi qu'il en soit, par rapport à ma question, ton IDFIC n'est pas bon (issu de l'aide sur xlsouvre):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    MaFeuille est un xlsDocument
    NomFichierXls est une chaîne
    NomFichierXls = fSélecteur(fRepExe(), "", ...
    "Sélectionnez un fichier...", ...
    "Tous fichiers (*.*)"+TAB+"*.*", "*", fselOuvre + fselExiste)
    SI NomFichierXls = "" ALORS RETOUR
    MaFeuille = xlsOuvre(NomFichierXls, xlsEcriture)
    
    // On va mettre OK dans la case A 25
    MaFeuille[25,"A"] = "OK"
    // Sauvegarde
    xlsSauve(MaFeuille)


    Comme tu peux le constater, la déclaration de ta variable ne correspond pas au typage renvoyé, ceci expliquant cela.
    Je t'invite aussi à consulter l'aide (très bien faite dans la majeure partie des cas - F1 - Mon amie) avant de poster.
    Modifie le typage de ta variable qui reçoit le retour de xlsouvre et met ton post en résolu lorsqu'il le sera... ou alors, si erreur persistante, merci de poster ce que demandait Nicolas_Jeanneau, à savoir, le chemin COMPLET de ta variable gsCheminFicxls.
    Bon dev

  8. #8
    Membre régulier Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Points : 124
    Points
    124
    Par défaut
    Bonjour,
    le chemin du fichier est C:\Banc05.xls, donc le message est : impossible d'ouvrir le fichier C:\Banc05.xls. Et le code que j'ai tapé viens de l'aide. J'ai essayé également de changer le type de idfic en xlsdocument, mais je n'ai toujours aucun résultat et il est à noter que je suis sur la version 14 et l'aide de utilise plutôt un entier pour idfic comme je l'ai dit. Je ne sais pas si quelqu'un a tester ce code chez lui.

  9. #9
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 93
    Points : 95
    Points
    95
    Par défaut
    Salut

    Essaie

    Ouvrir le fichier sous exel
    - si OK, le fermer

    Verifie que le fichier n'est pas utilisé
    Vérifie sa version (Excel 4 => xlsCompatible)

    ouvre le avec xlsOuvre() sans le paramètre xlsEcriture

    après, je ne sais plus (mon code ouvre un fichier excel et détruit les n premières feuilles pour accéder à la feuille de données, alors je n'ai pas de problèmes de xlsSauve)

  10. #10
    Membre éprouvé Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour, essayer comme ceci :
    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
    IdFicxls est un xlsDocument
    gsCheminFicxls est une chaine
    gsCheminFicxls = fSélecteur("", "", "Sélectionnez un fichier...", "Excel"+TAB+"*.xls"+RC+"Tous fichiers (*.*)"+TAB+"*.*", "xls", fselOuvre+fselExiste)
    
    SI gsCheminFicxls = "" ALORS
    	RETOUR
    SINON
    	IdFicxls = xlsOuvre(gsCheminFicxls, xlsEcriture)
    	SI IdFicxls <> -1 ALORS
    		sContenu = xlsDonnée(gsCheminFicxls, 4, 1)
    		SI sContenu = "" ALORS
    			Info("La cellule est vide !")
    		SINON
    			Info(sContenu)
    			xlsFerme(IdFicxls)	
    		FIN
    	SINON
    		sErreurXls = xlsMsgErreur(IdFicxls)
    		Erreur(sErreurXls)
    	FIN
    FIN
    ***********************************
    C'est le propre de l'homme de se tromper ; seul l'insensé persiste dans son erreur.

  11. #11
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    Un nouveau topic ouvert par Bruce207 pour le même fichier?????
    Et si nous faisions fausse route!!!!! Le fichier apparement n'est pas un fichier natif XLS, ceci expliquant cela lors de l'ouverture et le message d'erreur (si c'est cela, je regrette de n'avoir pas eu toutes les informations dès le départ - je considére cela comme un manque de respect vis-à-vis des autres membres).

    Voici le nouveau lien pour le même fichier http://www.developpez.net/forums/d11...n-fichier-xls/

    Quand à

    Bonjour,
    le chemin du fichier est C:\Banc05.xls, donc le message est : impossible d'ouvrir le fichier C:\Banc05.xls. Et le code que j'ai tapé viens de l'aide. J'ai essayé également de changer le type de idfic en xlsdocument, mais je n'ai toujours aucun résultat et il est à noter que je suis sur la version 14 et l'aide de utilise plutôt un entier pour idfic comme je l'ai dit. Je ne sais pas si quelqu'un a tester ce code chez lui.
    qui fait référence au même fichier, si l'entete n'est pas une entête de type XLS (seulement l'extension) alors oui, il peut y avoir effectivement des erreurs lors de l'ouverture...

  12. #12
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 93
    Points : 95
    Points
    95
    Par défaut Merci
    en attendant,
    vu que je vais sûrement rencontrer le même problème
    Merci pour le Topic

    Heu,
    Il faut 2 lignes minimum pour que la fonction CSVVersTableau marche en WD15


  13. #13
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 93
    Points : 95
    Points
    95
    Par défaut
    J'ai confronté mon appli au fichier de Bruce, et j'ai le résultat attendu, sans miracle. j'ai dû modifier mon code pour lui faire accepter le fichier de Bruce. car je sais que je vais être forcément confronté à ce problème.

    (dans tous les cas, mon appli lit un fichier, le transforme en texte CSV, puis en table. avant ce poste, elle ne lisait que les fichiers xls. maintenant elle lit aussi les fichiers texte à tabulation)

  14. #14
    Membre régulier Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Points : 124
    Points
    124
    Par défaut
    Bonjour Laurent_m_paris,
    pourrais tu m'en dire plus ? comment fais-tu pour accéder au fichier ? quelles fonctions utilises-tu ? Un bout de code serait d'un précieux secours.

  15. #15
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 93
    Points : 95
    Points
    95
    Par défaut
    Salut Bruce

    En fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UnFichier est une chaîne = fSélecteur("","","fichier Excel	*.xls","*.xls")
     
    nIdFichierXLS est un entier = xlsOuvre(sUnFichier)
    SI ErreurDétectée ALORS
            //Fichier Texte
    SINON
            //Fichier Excel
    	xlsFerme(nIdFichierXLS)
    FIN
    Mon code ne fait que de la lecture en vue d'import, donc il passe tout naturellement au tableau

    pour le fichier texte, il effectue la lecture :
    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
     
    ID est un entier = fouvre(sUnFichier) 
    si ID > 0 alors
        s = fLit(ID,fTaille(sUnFichier))
        fFerme(ID)
    Sinon
       s = ""
    Fin
     
    t est un tableau de * par * chaines
    CSVVersTableau (s,t,TAB)
     
    // petite protection contre les ";"
    Si TableauInfo(t,tiNombreColonnes) = 1 alors
          CSVVersTableau (s,t,";")
    FIN
     
     // Bref j'ai un tableau
    Pour les fichiers Excel, il fait ceci :
    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
    id est xlsDocument  = xlsOuvre(:NomDeFichier)
     
    POUR i = 1 A nPage -1 // Ca c'est pour accéder à la feuille n° nPage
    	xlsSupprimeFeuille(id)
    FIN
     
    nc est un entier = xlsNbColonne(id,Vrai)
    nl est un entier = xlsNbLigne(id,Vrai)
     
    tabTxls est un tableau de nl par nc chaînes
     
    POUR l = 1 A nl
    	POUR c = 1 A nc
    		tabTxls[l,c] = xlsDonnée(id,l,c,Vrai)	 
    	FIN
    FIN
    ne me dites pas que j'aurais pu faire ID[l,c]

    Après mon code a fait une classe pour encapsuler la gestion des tables.
    La classe
    - construit les colonnes nécessaires au moyen d'une Syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     POUR i = 2 A nTotal
     	ChampClone({:Nom + ".COL_Colonne1",indChamp},"COL_Colonne"+i )
     	{:Nom + ".COL_Colonne"+i,indChamp}..Titre = "Colonne"+i
     FIN
    - rempli la table au moyen d'une syntaxe :
    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
    // un TableSupprimeTout() a été fait auparavant
     POUR l = 1 A p
    	SI 	bPremièreLigneDeTitre ALORS
    		TableAjoute(:Nom;"")
    		POUR i = 1 A n
    			{:Nom,indChamp}[1,i]..Titre = t[l,i]
    			:m_tabColonnes[i] =  t[l,i]
    		FIN
    		TableSupprime(:Nom)
    		bPremièreLigneDeTitre = Faux
    	SINON
    		t2 est un tableau de n chaînes
    		POUR i = 1 A n
    			t2[i] = t[l,i]
    		FIN
    		s = TableauVersChaîne(t2,TAB)
    		TableAjoute(:Nom,s)
    	FIN
    FIN
    {} = indirection

    du coup, mes champs table sont bien singuliers dans mon programme
    ca vient du fait que souvent je change dans mon Analyse, et que je n'ai pas envie de courir après toutes les fenetres. mais je ne sais plus si j'ai réellement eu ce problème

    Oups
    Pour l'enregistrement d'un fichier Excel Heu, je ne me suis pas penché dessus.


    Donc mes fonctions favorite, sont CSVVersTableau, TexteVersTableau et leurs contraires, et une qui est très jolie : TableVersTexte (pas de contraire ! )


    Cordialement

  16. #16
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    salut bruce
    ce code est existe exp windev14 aide
    et j'ai l'essayé, marche très bien
    si le fichier n'est partagé en cas de réseaux le problème reste toujours

    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
    // Déclaration des variables
    ResDonnée est une chaîne
    FichierXLS est une chaîne
    IdFichierXLS est un entier
     
    // Sélection du fichier XLS
    FichierXLS = fSélecteur("", "", "Sélection d'un fichier XLS", ...
                 "Fichier XLS" + TAB + "*.XLS", "XLS", fselOuvre+fselExiste)
    // Ouverture du fichier sélectionné
    IdFichierXLS = xlsOuvre(FichierXLS)
    SI IdFichierXLS <> -1 ALORS
        // Récupération du contenu d'une cellule
        ResDonnée = xlsDonnée(IdFichierXLS, 3, 4, Faux)
        SI ResDonnée <> xlsDonnéeErreur ALORS
            SI ResDonnée = "" ALORS
               // La cellule est vide
               Info("La cellule est vide")
            SINON
               // Affichage du contenu de la cellule
               Info("Le contenu de la cellule est : " + ResDonnée)
            FIN
        SINON
            // Affichage du message d'erreur si la récupération n'a pas été effectuée
            Erreur(xlsMsgErreur(IdFichierXLS))
        FIN
    SINON
       // Affichage du message d'erreur si l'ouverture n'a pas été effectuée
       Erreur(xlsMsgErreur(IdFichierXLS))
    FIN

  17. #17
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Bonjour
    juste en passant, tu as marqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IdFic = xlsOuvre(gsCheminFicxls, xlsEcriture)
    par hasard as-tu le droit d'écrire à la racine de C ?
    Gancau

  18. #18
    Membre régulier Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Points : 124
    Points
    124
    Par défaut
    Bonjour,
    a Gancau oui j'ai le droit d'écrire sur c, mais j'ai pu contourner le problème grace surtout à Laurent_m_Paris à qui je dis merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture de fichier xls par XLViewer
    Par molo dans le forum C++Builder
    Réponses: 7
    Dernier message: 18/02/2010, 13h23
  2. [XL-2002] Problème de lecture des fichiers xls
    Par lucarno dans le forum Excel
    Réponses: 2
    Dernier message: 09/04/2009, 19h53
  3. [C++] Lecture de fichiers *.XLS (classeur excel)
    Par Kyrel dans le forum Windows
    Réponses: 2
    Dernier message: 03/08/2007, 18h30
  4. [VBA-E]recuperation d'un fichier .xls impossible
    Par aarlock dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/06/2006, 10h23

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