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 :

Gestion de fichier Xls par programmation [WD23]


Sujet :

WinDev

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Gestion de fichier Xls par programmation
    Bonjour,

    Il m'arrive un truc très étrange.
    Par programmation, je veux remplir certaines cellules d'un fichier xls existant.
    Pour cela, j'utilise un système de balises genre #Balise#.
    Quand ma procédure détecte la balise, elle la remplace par une valeur, tout simple.
    J'ouvre mon fichier Excel, je parcours, les feuilles, je détecte les balises... jusque là, ça fonctionne.
    Mais au moment de remplacer le contenu de la cellule contenant la balise détectée, ça ne marche plus.
    L'insertion de donnée se fait bien mais pas dans la bonne cellule.
    Le décalage est sur les lignes et ça peut aller de 1 à 3 à priori.

    mon code :
    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
    	POUR num_ligne = 1 _À_ nbr_Lignes 
    		POUR num_colonne = 1 _À_ nbr_Colonnes
    			contenu = xlsDonnée(xls_Source,num_ligne,num_colonne)
    			SI contenu <> "" _ET_ Contient(contenu,"#") ALORS
    				HLitRecherchePremier(BALise,BAL_Lib,Remplace(contenu,"#",""))
    				SI HTrouve(BALise) ALORS
    					SELON BALise.BAL_Type
    						CAS 0
    							HLitRecherchePremier(RUBriques,IDRUBriques,BALise.BAL_Rubrique)
    							SI HTrouve(RUBriques) = Vrai ALORS	
    								xls_Source..Cellule[num_ligne,num_colonne] = {RUBriques.RUB_Source + "." + RUBriques.RUB_Rubrique,indRubrique}		
    							FIN
    					FIN
    				FIN
    			FIN
     
    		FIN
    	FIN
    En fait, au moment où la balise est détectée, le num_ligne n'est pas bon. Il est décalé. Exemple : Il trouve une balise qui est en ligne 3 alors que le num_ligne est à 2 !?
    Pourtant, ma fonction xlsdonnée reprend bien le num ligne
    Et le décalage n'est pas toujours de 1, il peut être de 2 ou 3

    Suis totalement perdu.
    Merci de votre aide
    Les solutions les plus simples sont les plus efficaces

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Quand il y a une ligne complètement vide, j'ai l'impression que Windev gère mal et crée ce genre de décalage (num_ligne inférieur à la vraie valeur).
    Et idem quand il y a une colonne totalement vide, mais dans ce cas, c'est num_colonne qui est faux, évidemment.

    Ca c'est le diagnostic.
    La solution ... ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Une solution serait d'avoir un compteur en plus et de vérifier à chaque début de boucle que le compteur et num_ligne correspondent.
    Si ce n'est pas le cas, on fait un num_ligne = compteur ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    C'est bien ça tcb92, chaque ligne vide perturbe mon num_ligne
    Lo², pourquoi pas, je vais tester.

    Merci ;-)
    Les solutions les plus simples sont les plus efficaces

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Trouvé
    En fait, il y a un paramètre à mettre à faux dans les fonction XlsnNbLigne, XlsNbColonne mais aussi dans XlsDonnée pour que les lignes et colonnes vides soient traitées
    Les solutions les plus simples sont les plus efficaces

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

Discussions similaires

  1. gestion des fichiers crées par une base de donnée installée sur linux
    Par jo-concept dans le forum Administration système
    Réponses: 2
    Dernier message: 29/03/2011, 20h01
  2. création d'un fichier .cd par programmation
    Par asma07 dans le forum C#
    Réponses: 0
    Dernier message: 16/11/2010, 11h55
  3. Lecture de fichier xls par XLViewer
    Par molo dans le forum C++Builder
    Réponses: 7
    Dernier message: 18/02/2010, 13h23
  4. Gestion de fichiers xml par php
    Par omman95 dans le forum Langage
    Réponses: 6
    Dernier message: 14/10/2006, 07h30

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