Code VBA dans Outlook qui ne fonctionne pas ?

lebarbo

XLDnaute Occasionnel
Bonjour à tous,

Je suis en train de faire un code pour modifier un fichier Excel mais je précise que ce code doit être dans Outlook (se déclenche quand un certain type de message arrive)
----------------

Sub modif()

Dim appExcel
Dim wbExcel
Dim wsExcel


''Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
''Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\Essai Outlook\essai.xls")
''wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)

'Code pour modifier le fichier
DerLigne = wsExcel.Range("A1").End(xlDown).Row
For i = 2 To DerLigne
If wsExcel.Cells(i, 5).Value = "CP" Then
wsExcel.Cells(i, 6).Value = wsExcel.Cells(i, 6).Value & "CP"
End If
Next i

wbExcel.Close False 'Fermeture du classeur Excel
appExcel.Quit 'Fermeture de l'application Excel

'Désallocation mémoire

Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing

End Sub
--------

J'ai l'erreur 1004, "erreur définie par l'application ou par l'objet" sur la ligne
DerLigne = wsExcel.Range("A1").End(xlDown).Row
Je ne vois pas d'où ça vient.

Merci pour votre aide,
 

tototiti2008

XLDnaute Barbatruc
Re : Code VBA dans Outlook qui ne fonctionne pas ?

Bonjour lebarbo,

Ton code est très bien (si ce n'est que tu n'enregistre pas ton classeur à la fin, mais à toi de voir), il y a juste un petit détail : les constantes Excel n'existent pas dans Outlook
xlDown n'existe donc pas d'où plantage
Pour info, xlDown vaut -4121, que tu peux placer en constante de ta procédure, dans les déclarations

Code:
Dim appExcel
Dim wbExcel
Dim wsExcel
Const xlDown = -4121
 

JNP

XLDnaute Barbatruc
Re : Code VBA dans Outlook qui ne fonctionne pas ?

Bonsoir le fil :),
il y a juste un petit détail : les constantes Excel n'existent pas dans Outlook
xlDown n'existe donc pas d'où plantage
Pour info, xlDown vaut -4121, que tu peux placer en constante de ta procédure, dans les déclarations
Dans Outlook ou dans la référence à Excel :rolleyes: ?
J'étais en train de tester son code (mais dans Word, je n'aime pas trop tester dans Outlook...), et moi ça marchait :p... D'où une question subsidiaire à TotoTiti : Différence Outlook / Word ou 2003 / 2007 ;) ?
Bonne soirée :cool:
 

JNP

XLDnaute Barbatruc
Re : Code VBA dans Outlook qui ne fonctionne pas ?

Re TotoTiti
la création d'une application Excel par CreateObject ne nécessite aucune référence cochée, je suppose donc que lebarbo ne les a pas cochées... peut-être à tort ?
Effectivement, et moi, je l'ai cochée par habitude, ne serait-ce que parce que ça active la saisie intelligente :rolleyes:...
Merci de la réponse :cool:
 

lebarbo

XLDnaute Occasionnel
Re : Code VBA dans Outlook qui ne fonctionne pas ?

Bonjour à tous,
Merci tototiti2008 le -4121 fonctionne, en fait j'enregistre bien le fichier mais j'ai allégé le code sur le forum. Sais-tu où trouver la table de correspondance pour les constantes.
JPN, je ne vois pas ce que je peux cocher pour que ça fonctionne : j'en ai 5 de cochés VB For Applications; Microsoft Outlook 11.0 Object Library, OLE Automation, Microsoft Office 11.0 Object Library et Microsft Scripting Runtime.
 

tototiti2008

XLDnaute Barbatruc
Re : Code VBA dans Outlook qui ne fonctionne pas ?

Bonjour à tous,

Pour que xlDown soit reconnu automatiquement, tu devrais cocher
Microsoft Excel 11.0 Object Library
Mais il ne vaut mieux pas et mettre la valeur en constante

Sais-tu où trouver la table de correspondance pour les constantes

C'est une constante Excel, donc lance Excel
Visual Basic Editor - Explorateur d'objets
tapes xlDown
La valeur s'affiche en bas :)

Edit : parfaite explication de JNP, comme d'habitude :cool:
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Code VBA dans Outlook qui ne fonctionne pas ?

Re :),
Merci pour l'explication tototiti2008, pourquoi ne faut-il pas cocher Microsoft Excel 11.0 Object Library ?
L'utilisation d'une bibliothèque possède des avantages et des inconvénients :rolleyes:...
Avantages : utiliser la saisie intelligente, avoir les parents et les enfants, les constantes déclarées...
Inconvénients : problèmes de compatibilité : si la référence 11.0 passe automatiquement en 12.0 entre 2003 et 2007 par exemple, le contraire n'est pas vrai, et l'utilisation de 12.0 donne une référence manquante en 2003, problème qui ne se pose pas si on n'utilise pas de références :p...
Je pense que c'est ce que TotoTiti voulait dire :eek:.
Bonne soirée :cool:
 

Discussions similaires

Réponses
14
Affichages
670

Statistiques des forums

Discussions
312 339
Messages
2 087 408
Membres
103 539
dernier inscrit
RAPH2012