Excel vb6 problèmes

Signaler
Messages postés
3
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
22 décembre 2007
-
Messages postés
3
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
22 décembre 2007
-
    Bonjour,

Je cherche à exporter des données d'une base de données vers un fichier excel faisant office de rapport. Pour éviter trop de manipulations lors du traitement pour la mise en forme, j'ai créé un "template" qui est ouvert en lecture seule, les données sont exportées, puis le pointeur excel créé avec set est libéré, ce qui laisse le choix à l'utilisateur de l'imprimer par exemple ou l'enrregistrer sous un autre nom. Jusque là ok. Mon problème est que pour lancer deux fois de suite la routine avec différents paramètres par exemple, je suis obligé de fermer l'appli vb et la rouvrir pour relancer la routine d'export xls. En effet, la première fois cela fonctionne sans problème, la deuxième fois dés que je cherche à modifier qqch, il refuse (que ce soit un insert, modifier une police ou mettre en gras).

Je ne vois plus trop comment faire, le flag "Faire confiance au projets VB" ne saute même pas.

Pouvez-vous m'aider ?

Copie du code ouvrant le fichier "template" xls :

Tout le code qui gère ce transfert est dans un module. J'ai dû créé xls comme variable globale au module car je l'utilise partout dans ce module (une fonction qui ouvre le fichier, une qui traite les données, une qui supervise tout, une qui libère la mémoire, etc...)

Option Explicit
Private xls             As Excel.Application

Private Function fp_OpenXLS(szFile As String) As Boolean

    On Error GoTo ErrT
       
    'Declarations
   
    'Instanciation
    Set xls = New Excel.Application
   
    'Ouverture
    xls.Workbooks.Open szFile, , True
    booXLS_ISOpen = True
    fp_OpenXLS = False  'Pas d'erreur
   
    Exit Function
   
ErrT:
    booXLS_ISOpen = False
    fp_OpenXLS = True   'Erreur
    MsgBox "Erreur avec l'ouverture du fichier Excel.", vbExclamation, "Erreur"
   
End Function

Merci d'avance pour votre aide.

4 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Salut,

Essaye de mettre défois que, avant Exit function : Set Xls = Nothing

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
3
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
22 décembre 2007

Mais si je fais cela, je perds le pointeur dont j'ai besoin pour manipuler excel ailleurs, non?
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Re,

Alors essaye de le mettre en tête de procédure comme cela, comme çà, à chaque appel tu libére l'object(faut faire l'essai)

Private Function fp_OpenXLS(szFile As String) As Boolean
           On Error Resume Next
                 Set Xls = Nothing
           Err.Clear

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
3
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
22 décembre 2007

J'ai trouvé le problème... lorsque je manipule excel je passais par exemple par xls.cells.select puis
with selection
    .xxx
end selection

c'est ce "selection" qui fait foirer tout la deuxième fois, pourquoi je n'en sais rien mais à présent tout fonctionne...