GD RDC,
J'ai Putten un peu plus d'efforts dans votre problème et je pense que je l'ai compris pourquoi vous obtenez l'incompatibilité de type.
Vous avez probablement ajouté des mots-clés à la condition "body" ainsi qu'à la condition "messageheader"? Ces entrées individuelles sont ajoutées à un tableau, le tableau "olRule.Conditions.Body.Text".
Vos lignes de code ci-dessous;
olRule.Conditions.Body.Text
Debug.Print olRule.Conditions.MessageHeader.Text
demandent en substance le « Debug.Print » mehtod d'imprimer un tableau, mais il ne sait pas comment faire. Comme il ne comprend pas quelle partie du tableau à imprimer. En fonction de la quantité d'entrées que vous avez créées, l'identifiant de chaque entrée nécessitera nécessairement un identifiant pour pointer vers l'entrée de tableau unique.
Alors:
- olRule.Conditions.Body.Le texte (0) pointe vers la première entrée dans le tableau . Ol12.Conditions.Body.Text (1) pointera vers la deuxième entrée dans le tableau.
Il y a deux façons de résoudre votre problème de codage:
Définissez un point d'arrêt sur la ligne:
olRule.Conditions.Body.Text
Donc, cette exécution s'arrête juste avant l'exécution de la ligne de code. Ouvrez votre 'Locals Window' (fenêtre View Locals) et ouvrez olRule.Text et vous verrez autant d'entrées de tableau que vous avez ajouté.
- Modifier votre code pour lire comme ci-dessous
sous-programme principal
Sub TestRule()
Dim olRules As Outlook.Rules
Dim olRule As Outlook.Rule
Set olRules = Application.Session.DefaultStore.GetRules
Set olRule = olRules.Item("TestRule")
Debug.Print TypeName(olRule)
printArray olRule.Conditions.Body.Text
printArray olRule.Conditions.MessageHeader.Text
End Sub
sous-routine printArray
Private Sub printArray(ByRef pArr As Variant)
Dim readString As Variant
If (IsArray(pArr)) Then 'check if the passed variable is an array
For Each readString In pArr
If TypeName(readString) = "String" Then 'check if the readString is a String variable
Debug.Print readString
End If
Next
End If
End Sub
Vous pourrait également intégrer le deuxième sous-programme dans la première mais c'est une meilleure pratique de codage effectuer des tâches répétitives soit dans une fonction ou dans un sous-programme séparé (vous pouvez alors l'utiliser pour d'autres méthodes du même module :-))
vous fournir la solution!
Goodluck!
Brillant! C'était la résolution! Je n'avais aucune idée que c'était un tableau, mais c'est tout à fait logique quand on y pense. Merci beaucoup. – DRC