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 :

Remplissage de xls avec plusieurs feuilles


Sujet :

WinDev

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut Remplissage de xls avec plusieurs feuilles
    Je développe une petite application qui sert à générer la liasse fiscale dans un seule fichier Excel, en fait j'ai un fichier Xls stocké que je copie je commence à remplir.
    J'ai 20 procédures chaqu'une pour remplir un tableau de la liasse.
    Lorsque je sépare j'appel les procédures une par une sur un fichier qui contient une seule feuille, mon programme marche bien, mais lorsque je fusionne les procédure en une seule, les valeurs s'ajoute dans la dernière feuille.
    voila un bout de 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
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    idTab, i, j, n, m est un entier
    rang,row, nomSoc est une chaîne
    FichierACopier est une chaîne
    FichierCopié, code est une chaîne
    ResCopie est un booléen
     
    // Sélection du fichier à copier
    FichierACopier = fRepExe() + "\" + "liasseExcel.xls"
     
    // Sélection du fichier copié
    FichierCopié = fSélecteur("", "", "Sélectionner un endroit pour enregistrer votre fichier","Fichiers Excel (*.xls) *.xls", "xls", fselCrée)
    SI FichierCopié <> "" ALORS
     
    	// Copie du fichier
    	ResCopie = fCopieFichier(FichierACopier, FichierCopié, frJauge)
    	// Affichage du message d'erreur si la copie n'a pas été effectuée
    	SI ResCopie = Faux ALORS
    		Erreur(ErreurInfo(errMessage))
    	SINON
    		xl est un objet OLE "Excel.Application" // créer l'objet dynamique
    		xl>>workbooks>>open(FichierCopié) // ouvre le classeur
     
     
    			idTab = 1
     
    		HExécuteRequête(Req_CllByTabXLS,hRequêteDéfaut,idTab)
    		HLitPremier(Req_CllByTabXLS)
    		TANTQUE PAS HEnDehors(Req_CllByTabXLS)
    			j = Req_CllByTabXLS.Cll_ordreVertical
    			SELON j
    				CAS 1 :
    					rang = "C"
    				CAS 2 :
    					rang = "D"
    				CAS 3 :
    					rang = "E"
    				CAS 4 :
    					rang = "F"
    			FIN
    			n = Req_CllByTabXLS.Cll_ordreHorisontal
    			m = 14	
    			i = m + n
    			rang = rang + i
    			xl>>sheets("Tableau 1 Actif")>>select(OLEFaux)
    			xl>>range(rang)>>value = Req_CllByTabXLS.Cll_valeur	
    			HLitSuivant(Req_CllByTabXLS)
    		FIN
    		HLitRecherche(Societe,IDSociete,idSoc_glob)
    		SI HTrouve(Societe) ALORS
    			nomSoc = Societe.so_nom
    		FIN
    		xl>>range("A1")>>value = nomSoc
    		xl>>range("F10")>>value = exFiscalFin_glob
    		//**********Tab 1 passif******************************
     
     
    			idTab = 2
    		HExécuteRequête(Req_CllByTabXLS,hRequêteDéfaut,idTab)
    		HLitPremier(Req_CllByTabXLS)
    		TANTQUE PAS HEnDehors(Req_CllByTabXLS)
    			j = Req_CllByTabXLS.Cll_ordreVertical
    			SELON j
    				CAS 1 :
    					rang = "C"
    				CAS 2 :
    					rang = "D"
    			FIN
    			n = Req_CllByTabXLS.Cll_ordreHorisontal
    			SELON n
    				CAS <  37 :
    					m = 12	
    				CAS > 36 :
    					m = 13	
    			FIN
    			i = m + n
    			rang = rang + i
    			xl>>sheets("Tableau 1 Passif")>>select(OLEFaux)
    			xl>>range(rang)>>value = Req_CllByTabXLS.Cll_valeur	
    			HLitSuivant(Req_CllByTabXLS)
    		FIN
    		HLitRecherche(Societe,IDSociete,idSoc_glob)
    		SI HTrouve(Societe) ALORS
    			nomSoc = Societe.so_nom
    		FIN
    		xl>>range("A1")>>value = nomSoc
    		xl>>range("D8")>>value = exFiscalFin_glob
    		xl>>activeworkbook>>save() 
    		xl>>activeworkbook>>close(OLEFaux)
    		xl>>Quit()
    		Info("Le fichier Excel a été généré avec succès")
    	FIN
    FIN
    Avez-vous une idée ?
    Merci d'avance

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 006
    Points : 9 400
    Points
    9 400
    Par défaut
    hello,
    tu as écrit :
    mais lorsque je fusionne les procédure en une seule, les valeurs s'ajoute dans la dernière feuille.
    La procédure que tu montres est pour une feuille ?
    Tu as un tableau de la liasse par feuille ?

    Tu utilises pour sélectionner une feuille le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xl>>sheets("Tableau 1 Passif")>>select(OLEFaux)
    Le paramètre que tu mets (OLEFaux) à la signification suivante
    (S'utilise uniquement avec les feuilles.) True pour remplacer la sélection active par l'objet spécifié. False pour étendre la sélection active afin d'y inclure tous les objets précédemment sélectionnés, ainsi que l'objet spécifié.

    Est-ce bien ce que tu veux faire ? as-tu essayé OLEVrai ?

    Ami calmant, J.P

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    Effectivement, j'ai remplacé OLEFAUX par OLEVrai et s'est bien marché
    j'ai encore un seul souci concernant la suppression d'une feuille
    J'ai utilisé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    xl>>sheets("Tableau 16")>>select(OLEVrai)
    xl>>activesheet>>delete()

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 006
    Points : 9 400
    Points
    9 400
    Par défaut
    hello,
    j'utilise plutôt des objets Classeur que directement l'objet Excel pour travailler sur les feuilles.

    Voici un exemple qui ouvre un fichier excel et qui supprime la feuille 3 du classeur excel ouvert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    xl est un objet OLE "Excel.Application"
    MonClasseurSrc est un  objet OLE dynamique
    xl>>Visible = True
    // on ouvre le classeur
    MonClasseurSrc = xl>>Workbooks>>Open("F:\Temp\FichierTest.xls")
    // on supprime la feuille 3 du classeur
    MonClasseurSrc>>Sheets("Feuil3")>>Delete()
    MonClasseurSrc>>Save()
    MonClasseurSrc>>Close()
    xl>>Quit()
    Ami calmant, J.P

Discussions similaires

  1. Réponses: 18
    Dernier message: 19/03/2014, 18h04
  2. Fichier de sortie xls avec plusieurs onglets
    Par thomas67 dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 16/06/2011, 15h17
  3. Créer un fichier excel avec plusieurs feuilles à partir d'un fichier html
    Par yuukuari dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/12/2009, 16h07
  4. Remplir signet Word avec plusieurs feuille excel
    Par youki94 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/11/2008, 15h33
  5. Ouverture dans le meme classeur avec plusieurs feuilles
    Par Marie69 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/10/2007, 18h27

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