IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Compile Error: Type mismatch (Error 13) - .Recipients.Add avec olAppointmentItem [OL-2010]


Sujet :

VBA Outlook

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 30
    Points : 23
    Points
    23
    Par défaut Compile Error: Type mismatch (Error 13) - .Recipients.Add avec olAppointmentItem
    Hello à tous,

    J'ai fais un petit bout de code (cf ci-dessous) qui a pour but de créer un "appointment" dans outlook 2010.

    Or, j'aimerai faire 1 seul et même envoi à plusieurs destinataires.

    J'ai donc ma petite liste d'emails, ma petite boucle qui remplie mon tableau mais lorsque j'essaye de le décharger sur la propriété .Recipients.Add j'ai une erreur "Compile Error: Type mismatch (Error 13)."

    Je pense que cala vient d'un problème de compatibilité sur le type de donnée attendue par .Recipients.Add sachant que mon tableau est en "string"...


    ==> Pouvez-vous svp m'aider à résoudre cette erreur pour que je puisse faire un seul envoi de l'appointment à plusieurs destinataires ?

    Merci !!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
                Dim cell As Range
                Dim tablo_mail() As String
                Dim nbmail As Integer
     
                Dim outobj As Outlook.Application
                Dim outappt As Outlook.AppointmentItem
                Set outobj = CreateObject("outlook.application")
                Set outappt = outobj.CreateItem(olAppointmentItem)
     
                For Each cell In ActiveWorkbook.Worksheets("zzzz").Columns("J").Cells.SpecialCells(xlCellTypeConstants)
                    If cell.Value Like "?*@?*.?*" Then
                        ReDim Preserve tablo_mail(nbmail)
                        tablo_mail(nbmail) = cell.Value
                        nbmail = nbmail + 1
                    End If
                Next cell
     
                With outappt
                    .Start = "9:00 AM" & Now
                    .End = "9:30 AM" & Now
                    .Importance = olImportanceHigh
                    .Subject = "A FAIRE"
                    .Location = "blue room"
                    .Body = .Location
                    .AllDayEvent = False
                    .ReminderSet = False
                    .MeetingStatus = olMeeting
                    .Recipients.Add tablo_mail '<<<< Ligne ou est l'erreur Mismatch
                    .Display
                    '.Send
                End With
     
                Set outappt = Nothing
                Set outobj = Nothing

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    As-tu essayé de construire ta liste de destinataires comme ça (au lieu d'un tableau d'adresses) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                For Each cell In ActiveWorkbook.Worksheets("zzzz").Columns("J").Cells.SpecialCells(xlCellTypeConstants)
                    If cell.Value Like "?*@?*.?*" Then
                        tablo_mail = tablo_mail & cell.Value & ";"
                        nbmail = nbmail + 1
                    End If
                Next cell
                ' Enlever le dernier point-virgule
                tablo_mail = mid(tablo_mail, 1, Len(tablo_mail) - 1)

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Bonjour pc75,

    Merci pour ta réponse, je n'avais pas pensé à cette syntaxe pour l'ajout des mails.

    Par contre, impossible d’exécuter la macro avec ton code car j'ai une erreur "Compile Error: Type mismatch (Error 13)" sur le caractère "&" de la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tablo_mail = tablo_mail & cell.Value & ";"

    J'ai d’ailleurs essayer de le remplacer par "and" et "+" mais rien n'y fait.

    Si quelqu'un peu nous aider à passer outre ce "mismatch" tout en faisant 1 seul et même envoi à plusieurs destinataires... n'hésitez pas !

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonsoir
    Il faut remplacer ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Dim tablo_mail() As String
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Dim tablo_mail As String
    Ou tu peux aussi écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    62
    63
    64
    65
    66
    67
     
                Dim cell As Range
                Dim tablo_mail() As String
                Dim nbmail As Integer
     
                Dim outobj As Outlook.Application
                Dim outappt As Outlook.AppointmentItem
                Set outobj = CreateObject("outlook.application")
                Set outappt = outobj.CreateItem(olAppointmentItem)
     
     
                Dim cell As Range
                Dim tablo_mail() As String
                Dim nbmail As Integer
     
                Dim outobj As Outlook.Application
                Dim outappt As Outlook.AppointmentItem
                Set outobj = CreateObject("outlook.application")
                Set outappt = outobj.CreateItem(olAppointmentItem)
     
     
     
                With outappt
                    .Start = "9:00 AM" & Now
                    .End = "9:30 AM" & Now
                    .Importance = olImportanceHigh
                    .Subject = "A FAIRE"
                    .Location = "blue room"
                    .Body = .Location
                    .AllDayEvent = False
                    .ReminderSet = False
                    .MeetingStatus = olMeeting
     
       For Each cell In ActiveWorkbook.Worksheets("zzzz").Columns("J").Cells.SpecialCells(xlCellTypeConstants)
                    If cell.Value Like "?*@?*.?*" Then
        .Recipients.Add cell.Value
                        nbmail = nbmail + 1
                    End If
                Next cell
                 '<<<< Ligne ou est l'erreur Mismatch
                    .Display
                    '.Send
                End With
     
                Set outappt = Nothing
                Set outobj = Nothing(nbmail) = cell.Value
                        nbmail = nbmail + 1
                    End If
                Next cell
     
                With outappt
                    .Start = "9:00 AM" & Now
                    .End = "9:30 AM" & Now
                    .Importance = olImportanceHigh
                    .Subject = "A FAIRE"
                    .Location = "blue room"
                    .Body = .Location
                    .AllDayEvent = False
                    .ReminderSet = False
                    .MeetingStatus = olMeeting
                    .Recipients.Add tablo_mail '<<<< Ligne ou est l'erreur Mismatch
                    .Display
                    '.Send
                End With
     
                Set outappt = Nothing
                Set outobj = Nothing

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Hello Oliv-,

    Merci pour ta réponse et désolé pour la mienne qui arrive un peu tardivement...

    Effectivement, cela va de soit qu'il faut enlever les "()" ! Parcontre cela créer une nouvelle erreur :

    Erreur d'exécution '-2147221233 (8004010f)'
    Echec de l'opération. Impossible de trouver un objet.



    La seconde solution que tu proposes fonctionne niquel, je n'y avais pas pensé, thanks !

    Bon week-end à tous !

    Daddy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Error: type mismatch; again :s on doubleArray
    Par xoum89 dans le forum Scala
    Réponses: 0
    Dernier message: 30/11/2011, 12h08
  2. error: type mismatch;
    Par xoum89 dans le forum Scala
    Réponses: 4
    Dernier message: 23/11/2011, 08h52
  3. Microsoft VBScript runtime error Type mismatch
    Par Fiona08 dans le forum VBScript
    Réponses: 7
    Dernier message: 19/09/2011, 21h46
  4. TYPE MISMATCH ERROR
    Par GARCIAPAT dans le forum Lotus Notes
    Réponses: 1
    Dernier message: 28/05/2009, 12h28
  5. [VBA-E] - run-time error "Type mismatch"
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/02/2007, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo