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 :

question pour xlsajoutefeuille [WD23]


Sujet :

WinDev

  1. #1
    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 question pour xlsajoutefeuille
    Bonjour,

    Sur un poste avec Windows 7 pro.


    je teste un traitement qui doit me permettre de traiter 73 fichiers Excel et un peu plus de 400 feuilles


    le fichier Excel original à toujours la même structure. je crée un nouveau fichier ayant le même nom avec juste 5 colonnes.


    voici le code qui me le permet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    vrepdeb="G:\informatique\Applications métiers\Task Force\"
     
    ResListefichiers = fListeFichier("G:\informatique\Applications métiers\Task Force\*.xlsx",frNonRécursif)
    // Pour chaque fichier trouvé
    POUR TOUTE CHAÎNE Unfichier DE ResListefichiers SEPAREE PAR RC
    	vnomfic = ExtraitChaîne(Unfichier,1,"\",DepuisFin)
        Ouvre(fnt_fic)
        SORTIR
    FIN
    le ouvre a été ajouté dans ma dernière tentative. Dans mes précédents essais il n'y avait qu'une seule boucle et pas de sortir

    le code de la fenêtre

    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
     
    vficstatus = xlsOuvre(Unfichier,xlsEcriture)
    SI vficstatus = -1 ALORS
    	Erreur("Fichier Excel inacessible")
    	RETOUR
    FIN
    vreptraite="G:\informatique\Applications métiers\Task Force\Traite\" + vnomfic
     
     
    vnbfeuille=xlsNbFeuille(vficstatus)
     
    POUR i = 1 À vnbfeuille
     
    	vnumfeuille=i
     
    	xlsFeuilleEnCours(vficstatus,vnumfeuille)
    	vnomfeuille=vficstatus..NomFeuille
    	vnblig=xlsNbLigne(vficstatus)
     
    	vfeuille=xlsAjouteFeuille(vficstatus2,vnomfeuille,vnumfeuille)
     
     
    	vficstatus2[1,"A"]=""
    	vficstatus2[1,"B"]="Societe1"
    	vficstatus2[1,"C"]=""
    	vficstatus2[1,"D"]="societe2"
    	vficstatus2[1,"E"]=""
     
    	vficstatus2[2,"A"]="Rue"
    	vficstatus2[2,"B"]="Brut"		
    	vficstatus2[2,"C"]="Net"		
    	vficstatus2[2,"D"]="Brut"
    	vficstatus2[2,"E"]="Net"
     
    	POUR ilig = 2 À vnblig
    		Iligdestination=ilig+1
    		vbrut=xlsDonnée(vficstatus,ilig,6)
    		vnet=xlsDonnée(vficstatus,ilig,9)
    		vficstatus2[Iligdestination,"A"]=xlsDonnée(vficstatus,ilig,2)
    		vficstatus2[Iligdestination,"B"]=vbrut		
    		vficstatus2[Iligdestination,"C"]=vnet		
    		vficstatus2[Iligdestination,"D"]=""
    		vficstatus2[Iligdestination,"E"]=""		
     
    		vficstatus2[Iligdestination,"B"]..AlignementH=chDroite		
    		vficstatus2[Iligdestination,"C"]..AlignementH=chDroite	
     
    		vficstatus2[Iligdestination,"B"]..CouleurFond=OrangeClair		
    		vficstatus2[Iligdestination,"C"]..CouleurFond=OrangeClair		
    		vficstatus2[Iligdestination,"D"]..CouleurFond=JauneClair
    		vficstatus2[Iligdestination,"E"]..CouleurFond=JauneClair		
     
    		vficstatus2[Iligdestination,"A"]..Cadre..Bords=BordTous		
    		vficstatus2[Iligdestination,"B"]..Cadre..Bords=BordTous	
    		vficstatus2[Iligdestination,"C"]..Cadre..Bords=BordTous	
    		vficstatus2[Iligdestination,"D"]..Cadre..Bords=BordTous
    		vficstatus2[Iligdestination,"E"]..Cadre..Bords=BordTous		
     
     
     
     
    	FIN
     
    	lib_fic_ori=vnomfic
    	lib_feuille=vnomfeuille
     
    FIN
     
    xlsSauve(vficstatus2,vreptraite)
     
    xlsFerme(vficstatus2)
    xlsFerme(vficstatus)
     
    fDéplaceFichier(Unfichier,"G:\informatique\Applications métiers\Task Force\ORI\"+vnomfic)
     
    Ferme()
    Mon problème: ce code me crée bien les 73 nouveaux fichiers Excel, mais à priori les feuilles de chaque fichier se cumulent dans le fichier suivant ???
    si je sors du programme que je reviens et relance un par un cela fonctionne correctement.

    Ai-je mal utilisé une/des fonctions ? j'ai comme l'impression que le ne s'initialise par correctement. J'ai épluché la doc mais je vois rien qui m'aide.
    avez vous une idée à me soumettre ?

  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
    Commençons par ta question.

    Tu fais cette boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    POUR i = 1 À vnbfeuille 
    	vnumfeuille=i 
    	xlsFeuilleEnCours(vficstatus,vnumfeuille)
    	vnomfeuille=vficstatus..NomFeuille
    	vfeuille=xlsAjouteFeuille(vficstatus2,vnomfeuille,vnumfeuille)
            etc etc etc
    FIN
    Si ton fichier contient une seule feuille, pas de problème. Mais s'il contient plus d'une feuille, je ne suis pas très confiant.
    Si tu as 5 feuilles A1 A2 A3 A4 A5, tu veux créer 5 feuilles B1 B2 B3 B4 B5, pour avoir au final, les 10 feuilles dans cet ordre : A1 B1 A2 B2 A3 B3 A4 B4 A5 B5.

    Donc, il se passe quoi, étape par étape :
    i = 1 , on insère la feuille B1 , et on a donc dans notre fichier Excel A1 B1 A2 A3 A4 A5
    i = 2 , on demande à lire la 2ème feuille ...mais pas de chance, les feuilles ont été décalées. La 2ème feuille, ce n'est plus A2 comme au début, c'est B1 ... et les ennuis commencent.

    Je ne suis pas complètement sûr que ce soit le bon diagnostic, mais ça ne m'étonnerait pas.

    Après, il y a 2 gros trucs qui me déplaisent dans ton code :
    1. regarde l'aide de la fonction fextraitchemin(). Tu vas voir qu'elle va bien t'aider.
    2. tu fais Ouvre(fnt_fic) ; cette commande ouvre une fenêtre. Dans le code d'initialisation de cette fenêtre , tu as mis le code que tu nous a posté. La bonne pratique, ce n'est pas de créer une fenêtre 'vide', c'est de créer une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    vrepdeb="G:\informatique\Applications métiers\Task Force\"
     
    ResListefichiers = fListeFichier("G:\informatique\Applications métiers\Task Force\*.xlsx",frNonRécursif)
    // Pour chaque fichier trouvé
    POUR TOUTE CHAÎNE Unfichier DE ResListefichiers SEPAREE PAR RC
    	vnomfic = ExtraitChaîne(Unfichier,1,"\",DepuisFin)
            ma_fonction_excel(vnomfic)
    FIN
    Tu poses le curseur de la souris sur le mot ma_fonction_excel, et tu appuies sur la touche F4 du clavier.
    Ca va te créer une fonction nommée ma_fonction_excel. Et le 2ème code que tu as copié, tu les mets dans cette fonction. Tu enlèves l'instruction FERME() à la fin, qui n'a plus de raison d'être.

    Tu n'as donc plus besoin de ta fenetre fnt_fic.
    Et l'instruction SORTIR que tu avais juste après ouvre(fnt_fic) , je ne vois pas trop pourquoi tu avais besoin de cette instruction. Dans ma longue vie de programmeur, je crois que je n'ai jamais utilisé l'instruction SORTIR.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    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,

    Tout d'abord Merci tbc92 pour ton intervention et le temps que tu m'as consacré.
    La fenêtre c'était pour essayer de forcer une initialisation du xlsajoute feuille. Le sortir est venu après avoir constaté l'échec de cette tentative. Il a pour unique but d'interrompre la boucle de me permettre et de quitter le programme, puisqu'en sortant et en revenant, cela fonctionne correctement. Mais ce n'est pas une solution acceptable. Je ne suis pas absolument certain que tu ai bien compris ce que je souhaite faire, je me suis mal exprimé sans aucun doute.
    Je me permet donc de réexpliquer ce que je veux faire.

    J'ai 73 fichiers excel dans un repertoire disons A.

    chaque fichier contient disons 15 colonnes et une entête avec un nom spécifique et des feuilles eux aussi avec des noms spécifiques.
    pour éviter a un pauvre bougre des manipulations fastidieuses, on m'a demandé de créer un programme qui:

    1) lit chaque fichier
    2) garde le nom exact du fichier ainsi que le nom des feuilles et leur nombre
    3) crée le fichier dans un autre répertoire disons B
    4) déplace le fichier lu dans un répertoire C
    5) le fichier crée doit avoir un entête supplémentaire
    6) il récupère la colonne 2, 6 et 9 et ajoute 2 autres colonnes vides.

    Voilà, je reposte mon code en détaillant chaque étape.

    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
    vnomfic est une chaîne
    Unfichier, ResListefichiers sont des chaînes
    vficstatus,vficstatus2 est un xlsDocument
    vnblig,vnbfeuille,vnumfeuille est un entier
    vnomfeuille est une chaîne
    vreptraite est une chaîne
    Iligdestination est un entier
    vbrut,vnet est un entier
    vrepdeb est une chaîne
    vfeuille est un booléen
     
    vrepdeb="G:\informatique\Applications métiers\Task Force\"                                                  // répertoire initial
     
    ResListefichiers = fListeFichier("G:\informatique\Applications métiers\Task Force\*.xlsx",frNonRécursif)    // liste des ficiers xlsx du répertoire
                                                                                                                // Pour chaque fichier trouvé
    POUR TOUTE CHAÎNE Unfichier DE ResListefichiers SEPAREE PAR RC
    	vnomfic = ExtraitChaîne(Unfichier,1,"\",DepuisFin)                                                      // on récupère juste le nom du fichier
    	vficstatus = xlsOuvre(Unfichier)                                                                        // on ouvre le premier fichier xlsx
    	SI vficstatus = -1 ALORS
    		Erreur("Fichier Excel inaccessible")
    		RETOUR
    	FIN
    	vreptraite="G:\informatique\Applications métiers\Task Force\Traite\" + vnomfic                          // répertoire de destination
     
     
    	vnbfeuille=xlsNbFeuille(vficstatus)                                                                      // on récupère le nombre de feuilles du fichier
     
    	POUR i = 1 À vnbfeuille                                                                                   // pour chaque feuille
     
    		vnumfeuille=i
     
    		xlsFeuilleEnCours(vficstatus,vnumfeuille)                                                             // feuille en cours
    		vnomfeuille=vficstatus..NomFeuille                                                                    // nom de la feuille en cours
    		vnblig=xlsNbLigne(vficstatus)                                                                         // nombre de lignes  
     
    		vfeuille=xlsAjouteFeuille(vficstatus2,vnomfeuille,vnumfeuille)                                         // on ajoute la feuille dans le nouveau fichier
     
     
    		vficstatus2[1,"A"]=""                                                                                  // première entête du nouveau fichier
    		vficstatus2[1,"B"]="Société1"
    		vficstatus2[1,"C"]=""
    		vficstatus2[1,"D"]="Société2"
    		vficstatus2[1,"E"]=""
     
    		vficstatus2[2,"A"]="Rue"                                                                               // 2ème entête du nouveau fichier qui
    		vficstatus2[2,"B"]="Brut"		                                                                       // est la première entête du fichier lu
    		vficstatus2[2,"C"]="Net"		
    		vficstatus2[2,"D"]="Brut"
    		vficstatus2[2,"E"]="Net"
     
    		POUR ilig = 2 À vnblig                                                                                  // traitement des lignes du fichier lu et création des colonnes du nouveau fichier
    			Iligdestination=ilig+1                                                                              // incrémentation du numéro de ligne du nouveau fichier
    			vbrut=xlsDonnée(vficstatus,ilig,6)                                                                  // vbrut est un entier qui contient la valeur de la colonne 6 du fichier lu
    			vnet=xlsDonnée(vficstatus,ilig,9)                                                                   // vnet est un entier qui contient la valeur de la colonne 9 du fichier lu
    			vficstatus2[Iligdestination,"A"]=xlsDonnée(vficstatus,ilig,2)
    			vficstatus2[Iligdestination,"B"]=vbrut		
    			vficstatus2[Iligdestination,"C"]=vnet		
    			vficstatus2[Iligdestination,"D"]=""
    			vficstatus2[Iligdestination,"E"]=""		
     
    			vficstatus2[Iligdestination,"B"]..AlignementH=chDroite		                                         // alignement a droite pour les valeurs numériques
    			vficstatus2[Iligdestination,"C"]..AlignementH=chDroite	
     
    			vficstatus2[Iligdestination,"B"]..CouleurFond=OrangeClair		                                     // changement de couleur de fond
    			vficstatus2[Iligdestination,"C"]..CouleurFond=OrangeClair		
    			vficstatus2[Iligdestination,"D"]..CouleurFond=JauneClair
    			vficstatus2[Iligdestination,"E"]..CouleurFond=JauneClair		
     
    			vficstatus2[Iligdestination,"A"]..Cadre..Bords=BordTous		                                         // ne fonctionne pas encore
    			vficstatus2[Iligdestination,"B"]..Cadre..Bords=BordTous	
    			vficstatus2[Iligdestination,"C"]..Cadre..Bords=BordTous	
    			vficstatus2[Iligdestination,"D"]..Cadre..Bords=BordTous
    			vficstatus2[Iligdestination,"E"]..Cadre..Bords=BordTous		
     
     
     
     
    		FIN
     
    		lib_fic_ori=vnomfic                                                                                       // sert à l'affichage du fichier traité
    		lib_feuille=vnomfeuille                                                                                   // sert à l'affichage de la feuille traité
     
    	FIN
     
    	xlsSauve(vficstatus2,vreptraite)                                                                              // on sauve le nouveau fichier
     
    	xlsFerme(vficstatus2)                                                                                         // on ferme le nouveau fichier (précaution)
    	xlsFerme(vficstatus)                                                                                          // on ferme le fichier lu
     
    	fDéplaceFichier(Unfichier,"G:\informatique\Applications métiers\Task Force\ORI\"+vnomfic)                     // on déplace le fichier lu
     
    FIN
    je suis revenu ici a mon code initial (sans deuxième fenêtre, il n'y en a pas besoin c'était juste un essai

    cela me produit le résultat suivant.

    1er fichier lu 26 lignes (entête incluse) pour la première feuille ==> fichier crée 27 lignes et les 5 colonnes nom de la feuille ok
    1er fichier lu 27 lignes (entête incluse) pour la deuxième feuille ==> fichier crée 28 lignes et les 5 colonnes nom de la feuille ok
    1er fichier lu 100 lignes (entête incluse) pour la troisième feuille ==> fichier crée 101 lignes et les 5 colonnes nom de la feuille ok
    ....
    en tout 14 feuilles et celui ci est ok.

    La ou ça se gâte c'est lors du deuxième fichier.


    cela me produit le résultat suivant.

    2eme fichier lu 300 lignes (entête incluse) pour la première feuille ==> fichier crée 301 lignes et les 5 colonnes nom de la feuille ok
    2eme lu 63 lignes (entête incluse) pour la deuxième feuille ==> fichier crée 64 lignes et les 5 colonnes nom de la feuille ok
    2eme lu 254 lignes (entête incluse) pour la troisième feuille ==> fichier crée 255 lignes et les 5 colonnes nom de la feuille ok
    ....

    il crée bien les 4 feuilles du deuxième fichier mais je retrouve les 14 feuilles du premier fichier derrière les 4 que je veux.
    et pour le troisième fichier j'ai donc les feuilles du troisième fichier plus celles du 2ème et celles du premier.

    si je sort du programme et que je traite un par un cela marche (mais ça je le veux pas)

    et je le veux pas pour deux raisons.

    1) comprendre ou je me goure
    2) il risque de resservir

    J'ai encore l'option de la classe Excel à explorer. Mais si toi ou un autre arrivez a me dire ou j'ai faux je vous en serais reconnaissant.

  4. #4
    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
    Dans ton code, regardons toutes les manipulations sur la variable vficstatus2.
    Tu as des xlsajouteFeuille(), puis des commandes pour mettre à jour le contenu de telle ou telle feuille, puis un xlsSauve().
    Mais il manque une commande du type Remise-à-zéro de vFicStatus2, juste après la ligne 18 par exemple. Du coup, tu continues de modifier le même objet , qui est de plus en plus gros.
    Je ne sais pas si vficStatus2 = Null est accepté.
    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pour i = xlsnbFeuille(vficStatus2) a 1 pas -1 
         xlsSupprimeFeuille(vficStatus2, i)
    fin
    Ou encode, vficStatus2 = xlsouvre(UnFichier) ... et dans ce cas, il y a d'autres changements à faire dans la suite du programme.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    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
    tcb92,

    Merci beaucoup,

    J'ai essayé ton idée du null et aussi un ="" mais ça plante par contre j'ai déplace la ligne "vficstatus2 est un xlsdocument" dans la boucle, comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    vficstatus2 est un xlsDocument                                                                     
     
    	POUR i = 1 À vnbfeuille                                                                                   // pour chaque feuille
     
    		vnumfeuille=i
     
     
    		xlsFeuilleEnCours(vficstatus,vnumfeuille)                                                             // feuille en cours
    		vnomfeuille=vficstatus..NomFeuille                                                                    // nom de la feuille en cours
    		vnblig=xlsNbLigne(vficstatus)                                                                         // nombre de lignes  
     
    		vfeuille=xlsAjouteFeuille(vficstatus2,vnomfeuille,vnumfeuille)
    et ça réinit le xlsdocument, sans ton intervention je n'y aurais pas pensé

    je te dois une bière si jamais un jour on se rencontre

  6. #6
    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
    pour ceux que ça intéresse voici la dernière mouture

    avec dessin de cadre élargissement des colonnes et ajout d'un multitache avant le xlssauve. Sans le multitache il arrive à avoir des erreurs sur le xlssauve
    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
    vnomfic est une chaîne
    Unfichier, ResListefichiers sont des chaînes
    vficstatus est un xlsDocument
     
    vnblig,vnbfeuille,vnumfeuille est un entier
    vnomfeuille est une chaîne
    vreptraite est une chaîne
    Iligdestination,i est un entier
    vbrut,vnet est un entier
    vrepdeb est une chaîne
    vfeuille,vresult est un booléen
    vcolonne est une xlsColonne
     
     
    // Paramètre le cadre
    varCadre est un Cadre
    varCadre..Epaisseur = 2
    varCadre..Couleur = Noir
     
     
    vrepdeb="G:\informatique\Applications métiers\Task Force\"                                                  // répertoire initial
     
    ResListefichiers = fListeFichier("G:\informatique\Applications métiers\Task Force\*.xlsx",frNonRécursif)    // liste des fichiers xlsx du répertoire
                                                                                                                // Pour chaque fichier trouvé
    POUR TOUTE CHAÎNE Unfichier DE ResListefichiers SEPAREE PAR RC
    	vnomfic = ExtraitChaîne(Unfichier,1,"\",DepuisFin)                                                      // on récupère juste le nom du fichier
    	vficstatus = xlsOuvre(Unfichier)                                                                        // on ouvre le premier fichier xlsx
    	SI vficstatus = -1 ALORS
    		Erreur("Fichier Excel inaccessible")
    		RETOUR
    	FIN
    	vreptraite="G:\informatique\Applications métiers\Task Force\Traite\" + vnomfic                          // répertoire de destination
     
    	vnbfeuille=xlsNbFeuille(vficstatus)                                                                     // on récupère le nombre de feuilles du fichier
    	vficstatus2 est un xlsDocument                                                                     
     
    	POUR i = 1 À vnbfeuille                                                                                   // pour chaque feuille
     
    		vnumfeuille=i
     
     
    		xlsFeuilleEnCours(vficstatus,vnumfeuille)                                                             // feuille en cours
    		vnomfeuille=vficstatus..NomFeuille                                                                    // nom de la feuille en cours
    		vnblig=xlsNbLigne(vficstatus)                                                                         // nombre de lignes  
     
    		vfeuille=xlsAjouteFeuille(vficstatus2,vnomfeuille,vnumfeuille)                                         // on ajoute la feuille dans le nouveau fichier
     
     
    		vcolonne..Largeur = 300                                                       // largeurs colonnes
    		vficstatus2..Colonne[1]=vcolonne
     
    		vcolonne..Largeur = 150
    		vficstatus2..Colonne[2]=vcolonne		
    		vficstatus2..Colonne[3]=vcolonne		
    		vficstatus2..Colonne[4]=vcolonne
    		vficstatus2..Colonne[5]=vcolonne
     
     
     
     
    		vficstatus2[1,"A"]=""                                                                                  // première entête du nouveau fichier
    		vficstatus2[1,"B"]="Société1"
    		vficstatus2[1,"C"]=""
    		vficstatus2[1,"D"]="Société2"
    		vficstatus2[1,"E"]=""
     
    		vficstatus2[2,"A"]="Rue"                                                                               // 2ème entête du nouveau fichier qui
    		vficstatus2[2,"B"]="Brut"		                                                                       // est la première entête du fichier lu
    		vficstatus2[2,"C"]="Net"		
    		vficstatus2[2,"D"]="Brut"
    		vficstatus2[2,"E"]="Net"
     
    		vficstatus2[2,"A"]..Cadre=varCadre		                                         
    		vficstatus2[2,"B"]..Cadre=varCadre		
    		vficstatus2[2,"C"]..Cadre=varCadre		
    		vficstatus2[2,"D"]..Cadre=varCadre	
    		vficstatus2[2,"E"]..Cadre=varCadre		
     
    		POUR ilig = 2 À vnblig                                                                                  // traitement des lignes du fichier lu et création des colonnes du nouveau fichier
    			Iligdestination=ilig+1                                                                              // incrémentation du numéro de ligne du nouveau fichier
    			vbrut=xlsDonnée(vficstatus,ilig,6)                                                                  // vbrut est un entier qui contient la valeur de la colonne 6 du fichier lu
    			vnet=xlsDonnée(vficstatus,ilig,9)                                                                   // vnet est un entier qui contient la valeur de la colonne 9 du fichier lu
    			vficstatus2[Iligdestination,"A"]=xlsDonnée(vficstatus,ilig,2)
    			vficstatus2[Iligdestination,"B"]=vbrut		
    			vficstatus2[Iligdestination,"C"]=vnet		
    			vficstatus2[Iligdestination,"D"]=""
    			vficstatus2[Iligdestination,"E"]=""		
     
    			vficstatus2[Iligdestination,"B"]..AlignementH=chDroite		                                         // alignement a droite pour les valeurs numériques
    			vficstatus2[Iligdestination,"C"]..AlignementH=chDroite	
     
    			vficstatus2[Iligdestination,"B"]..CouleurFond=OrangeClair		                                     // changement de couleur de fond
    			vficstatus2[Iligdestination,"C"]..CouleurFond=OrangeClair		
    			vficstatus2[Iligdestination,"D"]..CouleurFond=JauneClair
    			vficstatus2[Iligdestination,"E"]..CouleurFond=JauneClair		
     
    			vficstatus2[Iligdestination,"A"]..Cadre=varCadre		                                        
    			vficstatus2[Iligdestination,"B"]..Cadre=varCadre		
    			vficstatus2[Iligdestination,"C"]..Cadre=varCadre		
    			vficstatus2[Iligdestination,"D"]..Cadre=varCadre	
    			vficstatus2[Iligdestination,"E"]..Cadre=varCadre			
     
     
     
     
    		FIN
     
    		lib_fic_ori=vnomfic                                                                                       // sert à l'affichage du fichier traité
    		lib_feuille=vnomfeuille                                                                                   // sert à l'affichage de la feuille traité
     
    	FIN
    	Multitâche(150)
    	vresult=xlsSauve(vficstatus2,vreptraite)
     
    	xlsFerme(vficstatus2)                                                                                        
    	xlsFerme(vficstatus)                   
     
    	SI vresult = Vrai ALORS
    		fDéplaceFichier(Unfichier,"G:\informatique\Applications métiers\Task Force\ORI\"+vnomfic)                     // on déplace le fichier lu
    	SINON
    		Erreur("un fichier excel pas crée")
    	FIN
     
    FIN

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

Discussions similaires

  1. BTS Info de Gestion passé aujourd'hui question pour SQL
    Par red210 dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 29/05/2005, 14h48
  2. [bochs] Question pour un kernel de base...
    Par hudson dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/02/2005, 12h07
  3. Petite question pour Backup
    Par chicken92000 dans le forum Administration
    Réponses: 2
    Dernier message: 16/09/2004, 16h10
  4. [MIB] Questions pour construire une mib
    Par fadoua dans le forum Développement
    Réponses: 4
    Dernier message: 11/03/2004, 10h47

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