VB Outlook Fichier excel invisible devient visible

deniss0409 Messages postés 5 Date d'inscription mercredi 1 septembre 2010 Statut Membre Dernière intervention 19 septembre 2010 - 1 sept. 2010 à 18:36
deniss0409 Messages postés 5 Date d'inscription mercredi 1 septembre 2010 Statut Membre Dernière intervention 19 septembre 2010 - 19 sept. 2010 à 18:54
Bonjour,

Je viens de créer une macro dans outlook 2007 pour envoyer des emails de manière semi-automatique en utlisant des UserForms.

Pour m'aider à préremplir ces UserForms (creation de ComboBox) j'utilise des données stocké dans un fichier excel.

Bien évidement j'ouvre ce fichier excel de manière invisible.

Le problème :
Si ma macro tourne, mon fichier excel Datas.xls est ouvert. Si pendant ce temps j'essaye d'ouvrir un autre fichier (appelons le File.xls) manuellement via internet explorer, et que donc une fenetre du type de celle disponible ici apparait si je click sur Open. En plus d'ouvrir mon fichier File.xls, Datas.xls qui était invisible est ouvert aussi et deviens visible... Ainsi si l'utilisateur ne comprend pas ce que fais ce fichier ouvert et qu'il le ferme ou le modifie je vais avoir des problèmes...

Voici le code utilisé :


Public oApp As Object
Public workbookExcel As Object
Public sheetExcel As Object



Private Sub Macro()
    
    'Objects creation
    Set oApp = CreateObject("Excel.Application")
    oApp.Visible = False
    
    ' Set workbook worksheet
    Set workbookExcel = oApp.workbooks.Open(C:\Datas.xls")
    Set sheetExcel = workbookExcel.sheets("Sheet1")

    ' Launch the UserForm
    UserForm1.Show
    
    'Close the workbook
    workbookExcel.Close
    oApp.Quit
    
    Set sheetExcel = Nothing
    Set workbookExcel = Nothing
    Set oApp = Nothing
    
End Sub




Quelqu'un saurait-il comment éviter que mon fichier invisible devienne visible?

Merci d'avance

5 réponses

deniss0409 Messages postés 5 Date d'inscription mercredi 1 septembre 2010 Statut Membre Dernière intervention 19 septembre 2010
1 sept. 2010 à 18:56
Désolé pour la syntaxe j'ai relu un peu rapidement, et n'ai pas trouvé comment éditer mon message.
0
deniss0409 Messages postés 5 Date d'inscription mercredi 1 septembre 2010 Statut Membre Dernière intervention 19 septembre 2010
1 sept. 2010 à 20:47
Après quelques essais, je me suis rendu compte que si j'ouvre 2 fichiers avec ma macro lorsque j'ouvre des fichiers via internet explorer seul le premier fichier ouvert avec la macro deviens visible (et ce quelque soit le nombre de fichier ouvert avec IE). Ma solution est donc :



Public oApp As Object
Public workbookExcel As Object
Public sheetExcel As Object



Private Sub Macro()
    
    ' Fichier créé uniquement en vue de gérer les erreurs éventuelles
    Dim oAppError As Object
    Set oAppError = CreateObject("Excel.Application")

    'Objects creation
    Set oApp = CreateObject("Excel.Application")
    oApp.Visible = False
    
    ' Set workbook worksheet
    Set workbookExcel = oApp.workbooks.Open(C:\Datas.xls")
    Set sheetExcel = workbookExcel.sheets("Sheet1")

    ' Launch the UserForm
    UserForm1.Show
    
    'Close the workbook
    workbookExcel.Close
    oApp.Quit
    
    Set sheetExcel = Nothing
    Set workbookExcel = Nothing
    Set oApp = Nothing
    
End Sub




Si quelqu'un a une solition un peu plus orthodoxe a propose je serais ravi de la lire.

Sinon si vous avez juste un commentaire à je suis aussi preneur.
0
deniss0409 Messages postés 5 Date d'inscription mercredi 1 septembre 2010 Statut Membre Dernière intervention 19 septembre 2010
17 sept. 2010 à 18:04
Bonjour à tous,

Je pensais avoir réglé mon problème mais j'ai vu réapparaitre mon fichier qui était censé être invisible.

Je n'ai eu aucune réponse. Pourquoi?

Ai-je mal expliqué mon problème? Ai-ce un problème connu?

Si vous avez quoi que ce soit à dire qui pourrait faire avancer mon problème, n'hésitez pas.

Merci.
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
17 sept. 2010 à 20:01
Salut,

Non pas de problème tes explications sont claires depuis le début.

En fait la solution est très très simple mais peu connue. En fait pour éviter ce problème il suffit de privatiser la session excel dans la quelle tu ouvres ton fichier. Cela oblige windows a ouvrir une nouvelle session excel pour les autres fichiers.

il suffit de faire comme ceci:

'Objects creation
    Set oApp = CreateObject("Excel.Application")
    oApp.IgnoreRemoteRequests = True
    oApp.Visible = False


Voila c'est simple mais il faut le savoir

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deniss0409 Messages postés 5 Date d'inscription mercredi 1 septembre 2010 Statut Membre Dernière intervention 19 septembre 2010
19 sept. 2010 à 18:54
Bonjour Bigfish,

Merci beaucoup pour ta réponse.

Les solutions les plus simples ne sont pas toujours les plus faciles à trouver...

Par contre celle-ci n'est pas aussi simple qu'il y parait.


En effet ta solution résoud le problème quand on essaye d'ouvrir un fichier excel de manière conventionnelle, quand on click dessus dans l'explorateur de fichier, mais pas quand on ouvre un fichier via internet explorer, le problème reste entier.

Le code suivant fonctionne (enfin je crois) j'essaye de le tester un peu de toutes la manières possible! Mais c'est pas fin du tout c'est une solution que je n'aime pas du tout...



Public oApp As Object
Public workbookExcel As Object
Public sheetExcel As Object



Private Sub Macro()
    
    ' Fichier créé uniquement en vue de gérer les erreurs éventuelles
    Dim oAppError As Object
    Set oAppError = CreateObject("Excel.Application")

    'Objects creation
    Set oApp = CreateObject("Excel.Application")
    oApp.IgnoreRemoteRequests = True
    oApp.Visible = False
    
    ' Set workbook worksheet
    Set workbookExcel = oApp.workbooks.Open(C:\Datas.xls")
    Set sheetExcel = workbookExcel.sheets("Sheet1")

    ' Launch the UserForm
    UserForm1.Show
    
    'Close the workbook
    oApp.IgnoreRemoteRequests = False 'Il faut penser à le remettre sur false car ca peut creer des problemes d'apres ce que j'ai pu lire sur internet...
    workbookExcel.Close
    oApp.Quit
    
    Set sheetExcel = Nothing
    Set workbookExcel = Nothing
    Set oApp = Nothing
    Set oAppError = Nothing
    
End Sub




Quelqu'un aurait quelque chose à proposer?
0
Rejoignez-nous