Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook
Outlook Forum d'entraide sur Microsoft Office Outlook
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/07/2011, 14h28   #1
Invité de passage
 
Inscription : mars 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 11
Points : 0
Points : 0
Par défaut Macro qui ne fonctionne d'une fois

Bonjour à toutes et à tous,

Me revoila pour un petit problème.

Lorsque que je suis dans Outlook. J'ouvre un contact, et par un bouton situé dans la boite à outlis personnalisé, j'ouvre excel, remplis les cellules des coordonées de mon contact, j'imprime l'ensemble avec une petite imprimante (étiquette) et je ferme excel. Tout ce passe super bien, mais une fois seulement ! Si je clic de nouveau sur mon bouton, rien ne se passe !

Voici mon code :
Code :
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
'Déclaration des variables
        Dim appExcel As Excel.Application    'Application Excel
        Dim wbExcel As Excel.Workbook    'Classeur Excel
        Dim wsExcel As Excel.Worksheet    'Feuille Excel
        Dim xlmacroBook As Excel.Workbook
        Dim MavarXL
 
        'Ouverture de l'application
        Set appExcel = CreateObject("Excel.Application")
        appExcel.Visible = True
        'Ouverture d'un fichier Excel
        Dim Presence As Boolean
        Presence = False
        fichier = "Outlook etiquette client.xls"
        For Each w In Workbooks
        If w.Name = fichier Then Presence = True
        If w.Name = fichierratio Then appExcel.Workbooks("Ratio 2011.xls").Close
        Next w
 
        If Presence = True Then
        Else
        Set wbExcel = appExcel.Workbooks.Open("C:\Documents\Outlook etiquette client.xls")
        End If
 
        'wsExcel correspond à la première feuille du fichier
        Set wsExcel = wbExcel.Worksheets(1)
 
    Set myolapp = CreateObject("Outlook.Application")
    Set myinspector = myolapp.ActiveInspector
 
With appExcel.Workbooks("Outlook etiquette client.xls").Sheets("Feuil1")
'On Error Resume Next
'.Application.ScreenUpdating = False
'.Application.DisplayAlerts = False
    .Range("a1") = myinspector.CurrentItem.CompanyName
    .Range("a2") = myinspector.CurrentItem.Title & " " & myinspector.CurrentItem.LastName & " " & myinspector.CurrentItem.FirstName
    .Range("a3") = myinspector.CurrentItem.HomeAddressStreet
    .Range("a4") = myinspector.CurrentItem.HomeAddressPostalCode & " " & myinspector.CurrentItem.HomeAddressCity
    .Range("a5") = "Tél. : " & myinspector.CurrentItem.HomeTelephoneNumber
    .Range("a6") = "Fax : " & myinspector.CurrentItem.TelexNumber
    .Range("a7") = "Portbale : " & myinspector.CurrentItem.MobileTelephoneNumber
    .Range("a8") = "Mail : " & myinspector.CurrentItem.Email1Address
    .Activate
 
With appExcel.ActiveSheet
 
    .Application.ActivePrinter = "ZDesigner TLP 2824 Plus (ZPL) sur Ne00:"
    ExecuteExcel4Macro _
        "PRINT(1,,,1,,,,,,,,2,""ZDesigner TLP 2824 Plus (ZPL) sur Ne00:"",,TRUE,,FALSE)"
 
End With
 
 
.Application.ScreenUpdating = True
.Application.DisplayAlerts = True
End With
appExcel.Application.DisplayAlerts = False
appExcel.Workbooks("Outlook etiquette client.xls").Close
appExcel.Quit
appExcel.Application.DisplayAlerts = True
Set appExcel = Nothing
Merci d'avance pour vos réponses.
Ludovic50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 08h20   #2
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 592
Points : 1 592
Envoyer un message via MSN à carden752
Bonjour,

Je penses que tu ne remets pas certaines variables à rien à la fin.
Code :
1
2
  Set myolapp = CreateObject("Outlook.Application")
    Set myinspector = myolapp.ActiveInspector
Ces deux là par exemple ne sont pas réinitialisés et les objets correspondants non libérés (2 instances pour myolapp). Il manque quelque chose de ce style.
Code :
1
2
3
myolapp.quit
set myinspector=Nothing
set myolapp=Nothing
Idem pour wbexcel et wsexcel à mettre à Nothing (même si vu que c'est ouvrir un workbook, cela ne doit pas poser trop de problèmes, je pense).
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 12h53   #3
Invité de passage
 
Inscription : mars 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 11
Points : 0
Points : 0
Bonjour carden752,

Tout d'abord merci pour t'as réponse. J'ai essayé ceci :

Code :
1
2
3
4
5
6
myolapp.Quit
Set myinspector = Nothing
Set myolapp = Nothing
Set wsExcel = Nothing
Set wbExcel = Nothing   'Classeur Excel
Set appExcel = Nothing
Cela fonctionne effectivement, mais "myolapp.quit" ferme complétement l'application Outlook. Ce que je ne souhait pas évidement ! Je l'ai donc supprimé.

En faisant fonctionner mon code. j'ai bien vu que excel s'ouvrait, que les cellules ce remplissent comme il faut, mais lors de la deuxième utilisation c'est l'impression qui ne ce déclenche pas ! Il passe directement à la fermeture d'excel !

As-tu une idée pour cela ?

Merci.
Ludovic50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 18h24   #4
Invité de passage
 
Inscription : mars 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 11
Points : 0
Points : 0
Re,

Je crois avoir trouver la solution à mon problème. La gestion du VBA avec Outlook est très compliqué ! Je vais tout simplement créer mes macros avec excel et utilisé appexcel.application.run("mamacro") pour faire appel à mes macros dans excel, car je doit gérer pas mal de choses en relation avec excel.

Merci pour ton aide carden752.
Ludovic50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h42.


 
 
 
 
Partenaires

Hébergement Web