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 :

Perte définition d'une macro EXCEL en dupliquant une feuille


Sujet :

WinDev

  1. #1
    Invité
    Invité(e)
    Par défaut Perte définition d'une macro EXCEL en dupliquant une feuille
    Bonjour,

    J'ai une feuille excel que j'aimerais dupliquer tout en restant dans le même fichier, le soucis que je rencontre est double :
    - quand je veux dupliquer une feuille qui contient une macro, à la fin du traitement, la macro n'existe plus, j'ai des messages d'erreur qui s'affichent.
    - que je duplique une feuille qui contient ou non une macro, lorsque je veux supprimer la feuille qui a été dupliquée depuis excel, la feuille dupliquée est supprimée, mais la feuille source aussi.

    Dans la duplication d'une feuille, j'aimerai, si possible, pouvoir reprendre la présentation qui a été mise en place dans la feuille source.

    Voici mon code wlangage :

    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
    l_cellule est un xlsCellule
    l_titreFeuille est une chaîne="BUDGET 2015"
    l_posFeuille est un entier=4
     
    l_ExcelSource est un xlsDocument=xlsOuvre(SAI_EXCEL)
    l_ExcelCible est un xlsDocument=xlsOuvre(SAI_EXCEL)
     
    xlsFeuilleEnCours(l_ExcelSource,l_posFeuille)
    xlsAjouteFeuille(l_ExcelCible,"Test Ajout feuille")
     
    POUR loop_ligne=1 A 10
    	POUR loop_colonne=1 A 20
    		l_cellule=l_ExcelSource[loop_ligne,loop_colonne]
    		l_ExcelCible[loop_ligne,loop_colonne]=l_cellule
    	FIN
     
    FIN
     
    xlsSauve(l_ExcelCible)
    xlsFerme(l_ExcelCible)
    xlsFerme(l_ExcelSource)
     
    Info("fin")
    Ce que je voulais faire, c'est de me servir de 2 variables, l'une contenant la feuille source, l'autre, la feuille cible, et dans la feuille cible, je duplique cellule par cellule ce qui est dans ma feuille source.
    Si possible, j'aimerais éviter de passer par des objets automation car ça ouvre un nouveau processus EXCEL.

    Merci

    Edit : j'ai trouvé à peu près ce que je voulais grâce à ce lien, où j'arrive à fermer le processus excel une fois le traitement terminé.

    Pour clore ce que je comptais faire : ma feuille excel est formatée de la manière suivante:
    - en colonne A, je vais avoir des codes rubriques (par exemple: RUB01, RUB02, ...)
    - en colonne B, je vais avoir un numérique entier, 0 ou un nombre compris entre 1 et 15, représente le numéro d'une activité, 0 veut dire "toutes les activités"
    - en colonne C, je vais avoir l'intitulé d'une rubrique (par exemple : CA Total ACT 1)
    - en colonne D, je vais avoir le montant de la rubrique sur une année entière
    - en colonne E, je vais avoir le montant de la rubrique sur le mois de janvier uniquement
    ...

    Mon objectif serait de calculer toutes les rubriques sur une activité donnée (y compris l'activité 0, qui servira à faire des sous-totaux sur une liste de rubriques), les résultats apparaitront sur une nouvelle feuille excel tout en restant dans le même document. Si j'arrive à dupliquer le format d'affichage, ce serait un vrai plus.
    Le calcul d'une rubrique se fera depuis mon application Windev.

    Concernant le nouveau soucis rencontré: à l'aide du code suivant:
    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
    l_nouveauTitre est une chaîne="Nouvelle feuille"
     
    l_MonExcel est un xlsDocument=xlsOuvre(SAI_EXCEL,xlsEcriture)
    xlsAjouteFeuille(l_MonExcel,l_nouveauTitre)
    xlsSauve(l_MonExcel)
    xlsFerme(l_MonExcel)
     
    xl est un objet OLE "Excel.Application"
    xl>>visible=OLEFaux
    xl>>workbooks>>open(SAI_EXCEL)
    xl>>Sheets(l_titreFeuille)>>Range("A1:H50")>>copy()
    xl>>Sheets(l_nouveauTitre)>>Range("A1:H50")>>PasteSpecial(-4122)
    xl>>Sheets(l_titreFeuille)>>Range("A300:H400")>>copy()
    xl>>Sheets(l_nouveauTitre)>>Range("A51:H151")>>PasteSpecial(-4122)
    xl>>Activeworkbook>>save
    xl>>workbooks>>close
    xl>>quit
    Le format d'affichage est bien reproduit mais le texte n'apparait pas... Vous voyez d'où vient le soucis?
    Dernière modification par Invité ; 08/02/2016 à 19h01.

Discussions similaires

  1. Réponses: 10
    Dernier message: 24/09/2019, 11h50
  2. [AC-2000] Execution d'une macro Access lors d'une importation Excel
    Par Nicolas Plan dans le forum Access
    Réponses: 7
    Dernier message: 23/04/2009, 15h52
  3. [AC-2000] Execution d'une macro Access lors d'une importation Excel
    Par Nicolas Plan dans le forum Modélisation
    Réponses: 2
    Dernier message: 22/04/2009, 11h54
  4. Macro Outlook qui lance une Macro Excel qui veut envoyer un mail = Bug
    Par Lameth dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/07/2008, 11h21
  5. Comment lancer une macro excel en selectionnant une cellule?
    Par itony dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/03/2008, 11h08

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