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 :

[WD26] Problème avec les xlsDocuments


Sujet :

WinDev

  1. #1
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut [WD26] Problème avec les xlsDocuments
    Bonjour,

    En attendant de choisir la méthode de création des tables, je m'attaque à l'import des données.

    Et, dans un premier temps, il me faut créer une table de correspondance pour les anciennes familles d'articles, vers les nouvelles.

    Comme tout est dans des fichiers excel, je me suis dit, hop, j'utilise xlsDocument (je ne connaissais pas, en Wd 5.5, je faisait par OLE).

    Mais, j'ai un problème. Mon fichier n'est pas modifié !

    Voici le code
    Code WLangage : 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
     
    LOCAL
    	lo_xlsOut est un xlsDocument
    	lo_xlsIn1	est un xlsDocument
    	lo_XlsIn2	est un xlsDocument
     
    	lin_NoLigOut	est un entier
    	lin_TotOut		est un entier
    	lin_noLigIn		est un entier
     
    	lch_CodFam	est une chaîne
    	lch_NlleFam	est une chaîne
    	lch_Cherche	est une chaîne
     
    	lbo_Trouve	est un booléen
    	lo_Cellule	est un xlsCellule
     
     
      lo_xlsOut = xlsOuvre("J:\Documents\Projet ERP\Analyse\Familles articles\FAMART.XLSX",xlsEcriture)
     
    //Là je récupère la nouvelle famille, en cherchant dans les classeurs lo_xlsIn1 et lo_xlsin2 
    //Ça fonctionne, je récupère bien la valeur attendu
     
    //C'est là que ça se gâte ! 
    SI lbo_Trouve ALORS
      Trace( ChaîneConstruit( "[%1]",lo_xlsOut..Cellule[ lin_NoLigOut, "C"]))
      lo_Cellule = lo_xlsOut..Cellule[ lin_NoLigOut, "C"]
      Trace(ChaîneConstruit( "Cellule [%1]",lo_Cellule))
      lo_Cellule = lch_NlleFam
      Trace(ChaîneConstruit( "Après affectation Cellule [%1]",lo_Cellule))
      lo_xlsOut[ lin_TotOut, "C"] = lo_Cellule
      Trace( ChaîneConstruit( "Après affectation [%1]",lo_xlsOut[ lin_NoLigOut, "C"]))
      lo_xlsOut[lin_NoLigOut, "C"] = "DIODE"
      Trace( ChaîneConstruit( "Après 2eme affectation [%1]",lo_xlsOut[ lin_NoLigOut, "C"]))
    fin

    Voilà le résultat des Traces
    Nom : Probleme_xlsDocument.PNG
Affichages : 959
Taille : 8,2 Ko

    "DIODE" est bien le nom de la nouvelle famille
    Donc, la variable xlsCellule (lo_cellule) est bonne, mais le classeur n'est pas modifié !

    Qu'est-ce que je rate ?

    A noter, que, étant passé à Windev 26 (oui, je sais, faut être malade), j'ai essayé ce code en WD24 et j'obtiens le même résultat
    J'ai essayé avec 3 à la place "C"
    J'ai essayé en passant par la propriété ..Valeur
    Mais rien n'y fait !

    Merci de votre aide
    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  2. #2
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Information complémentaire

    J'ai mis "TOTORE" dans la cellule à modifier, et j'ai teste le contenu de la cellule A (on ne sait jamais)

    Voilà ce que j'obtiens
    Nom : Probleme_xlsDocument_2.PNG
Affichages : 957
Taille : 10,0 Ko

    Du coup, c'est comme si l'affectation de la variable lo_cellule ne faisait rien, par contre l'affectation en dur de "DIODE" met 0 dans la cellule ! Je ne comprends rien !
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  3. #3
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    PS : J'ai essayé avec Windev 22, et j'ai le même résultat.
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Hello Jon,

    Je crois que tu as une gourure dans ton code. Il faut écrire un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lo_xlsOut[ lin_TotOut, "C"]..cellule = lo_Cellule
    La page d'aide https://doc.pcsoft.fr/fr-FR/?1000017...YPE_xlsCellule
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Merci frenchsting de ta réponse,

    Hélas, j'ai essayé ça et ça ne marche pas non plus. J'ai épluché les pages d'aide de Windev, mais y a rien qui marche.

    Quelqu'un a-t-il déjà utilisé ces syntaxes pour écrire dans un fichier excel ? La lecture se fait bien, c'est l'écriture qui pose problème.
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  6. #6
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Pas de bol sur ce coup-là...

    As-tu essayé l'affectation directe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lo_xlsOut[ lin_TotOut, "C"] = lch_NlleFam
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  7. #7
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    chez moi ce code fonctionne en windev 16 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DocExcel est un xlsDocument// Création du document Excel        
    xlsAjouteFeuille(DocExcel,"Feuille_1",1)// Ajout d'une feuille *obligatoire*
    DocExcel..Feuille = 1// On se place sur la feuille 1 *au cas ou*
    DocExcel..Ligne[1]..Cellule[1] = "Ecriture 1"// Ajout d'une valeur dans la case[1,1] (A1)
    DocExcel[2,"A"]= "Ecriture 2"  // écriture en A2
    xlsSauve(DocExcel,"D:\temp\DocExcelTest.xlsx")// Sauvegarde du document
    xlsFerme(DocExcel)// Fermeture du document *important*
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  8. #8
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    J'ai essayé toutes ces syntaxes, et aucune ne fonctionnent

    Je suis reparti sur le code de ma classe Excel de Windev 55 qui gère le lien OLE avec Excel.

    Dommage.
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  9. #9
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Je viens d'essayer ton code jurassic pork, et ça fonctionne.

    Ce serait donc un problème avec mon fichier XLS de départ ?

    Je vais re-essayer autrement
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 130
    Points : 162
    Points
    162
    Par défaut
    Bonjour
    Le code de jurassic pork fonctionne également en version 24, pas de souci particulier pour écrire dans un fichier Excel.

  11. #11
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    Est-ce que mon code seul fonctionne ? Si oui c'est qu'il y a quelque chose dans ton code qui l'empêche de fonctionner correctement : Sélection de feuille , Utilisation d'un document créé par Excel etc...

    [EDIT] oops on a été 3 à écrire en même temps.
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  12. #12
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Je viens de modifier mon code de la façon suivante.

    J'ai utilisé un 4ème xlsDocument que j'ai créé de toute pièce, en suivant le principe du code de Jurassic Pork.

    Puis, j'ai écrit dedans. Et ça marche.

    C'est donc, soit l'écriture dans un fichier qui existe, soit le format de mon fichier excel (un xlsx enregistrer depuis un fichier dBase) qui pose problème.

    Merci à vous tous pour votre aide.

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  13. #13
    Membre actif
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 270
    Points
    270
    Par défaut
    Bonjour,

    J'utilise souvent le xlsdocument pour modifier un fichier excel

    Tu fais bien un xlssauve a la fin ?

    je te joins un exemple qui marche chez moi mais en version 23.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    vnblig=xlsNbLigne(vficstatus2)
     
    POUR i = 7 À vnblig
    	HLitRecherche(prepa_cata,NPA6pos,Gauche(xlsDonnée(vficstatus2,i,7),6),hIdentique)
    	SI HTrouve() = Vrai ET prepa_cata.NPA9pos <> "179100" ALORS
    		vficstatus2[i,"M"] = prepa_cata.NET
    		vficstatus2[i,"R"] = prepa_cata.BRUT
    		vficstatus2[i,"X"] = prepa_cata.VILLA
    	FIN
    FIN
     
    xlsSauve(vficstatus2)
    ça lit un fichier excel le compare à une table hyperfile et si la condition est remplie met à jour le fichier excel

    j'espère que ça pourras t'aider
    PS oui j'utilise encore le hlitrecherche avec l'option hidentique et pas le hlitrecherchepremier pour moi c'est plus logique

    PS2 merdum j'ai vu que tu as déjà résolu ton problème je laisse quand mème mon bout de code si ça peut aider

  14. #14
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Je viens de voir que j'avais oublié de mettre résolu.

    Pour donner le fin mot de l'explication, le fichier excel que j'utilisais provenais d'un fichier dBase converti.
    Et, même sous excel, je n'arrivais pas à le modifier (enfin la sauvegarde se plantait).

    J'ai copié tout le contenu, dans un nouveau classeur et ça a fonctionné.

    Voilà,

    Encore merci à vous tous pour votre aide

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

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

Discussions similaires

  1. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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