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 :

Macro qui fonctionne sous Excel, mais pas sous Outlook


Sujet :

VBA Outlook

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Macro qui fonctionne sous Excel, mais pas sous Outlook
    Bonjour,

    J'ai récupéré une macro qui permet de remplir un combobox à partir d'un fichier Excel fermé.
    Sous Excel ça fontionne très bien.
    Sous Outlook, j'ai erreur d'exécution 438 : Propriété ou méthode non gérée par cet objet.

    Voici le code :

    Code vba : 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
    Option Explicit
     
    Const NDF = "C:\test.xlsx"
     
    Private RcdSt() As Variant
    Private Req As String
     
    Private Sub UserForm_Initialize()
     
    ComboBox1.List = Get_Combo("Nom", "Clients")
     
    End Sub
    ' *************************************************************************************************
    Function Query(Req As String) As Long
    Dim Cnx As Object, Rst As Object
    Dim i As Long, j As Long
     
        On Error GoTo errhdlr
     
        Set Cnx = CreateObject("ADODB.Connection")
        Cnx.Provider = "MSDASQL"
     
        Cnx.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
                 "DBQ=" & NDF & "; ReadOnly=False;"
     
        If Left(Req, 6) = "SELECT" Then
            Set Rst = CreateObject("ADODB.Recordset")
            Rst.Open Req, Cnx, 3
     
            Query = Rst.RecordCount
            If Not Query = 0 Then
                ReDim RcdSt(Rst.Fields.Count - 1, Query - 1)
                Rst.MoveFirst
                RcdSt = Rst.GetRows
                For i = 0 To UBound(RcdSt, 1) - 1
                    For j = 0 To UBound(RcdSt, 2) - 1
                        If IsNull(RcdSt(i, j)) Then RcdSt(i, j) = ""
                    Next j
                Next i
            End If
        Else
            Cnx.Execute Req
            Query = 0
        End If
     
        Cnx.Close
        Set Rst = Nothing
        Set Cnx = Nothing
        Exit Function
     
    errhdlr:
        If Not Rst Is Nothing Then If Rst.State = 1 Then Rst.Close
        If Not Cnx Is Nothing Then If Cnx.State = 1 Then Cnx.Close
        Set Rst = Nothing
        Set Cnx = Nothing
        Query = -1
        MsgBox (Err.Description)
    End Function
     
     
    ' *************************************************************************************************
    Function Get_Combo(Chps As String, Ong As String) As Variant()
        Req = "SELECT DISTINCT " & Chps & " FROM [" & Ong & "$] ORDER BY " & Chps
        Erase Get_Combo
        If Query(Req) > 0 Then Get_Combo = Application.Transpose(RcdSt)
     
    End Function


    J'ai l'impression que c'est la ligne suivante qui pose problème d'après exécution pas à pas (F8) :
    ComboBox1.List = Get_Combo("Nom", "Clients")

    Je vous remercie de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je ne suis pas un pro du VBA Outlook, mais je pense que cette ligne pose un problème.



    Je ne pense pas que ce soit dans le modèle objet Outlook.

    Philippe

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bien vu !
    Effectivement Application.Transpose n'existe pas sous Outlook.

    C'est dommage, ce code était exactement ce que je voulais...

  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
    Bonjour,

    Exact il s'agit d'une fonction de Excel

    voici une autre façon de faire

    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
    68
    69
    70
    71
    Option Explicit
     
    Const NDF = "C:\temp\test.xlsx"
     
    Private Req As String
     
     
    Private Sub UserForm_Initialize()
     
        Call Get_Combo("Nom", "Clients")
     
    End Sub
    ' *************************************************************************************************
    Function Query(Req As String) As Long
     
        Dim i As Long
     
        On Error GoTo errhdlr
    Dim Rst As Object
    Dim Cnx As Object
        Set Cnx = CreateObject("ADODB.Connection")
        Cnx.Provider = "MSDASQL"
     
        Cnx.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
                 "DBQ=" & NDF & "; ReadOnly=False;"
     
        If Left(Req, 6) = "SELECT" Then
            Set Rst = CreateObject("ADODB.Recordset")
            Rst.Open Req, Cnx, 3
     
            Query = Rst.RecordCount
            If Not Query = 0 Then
                Rst.MoveFirst
                With ComboBox1
                    While Not Rst.EOF
                        .AddItem (Rst.Fields("Nom"))
                        '.List(i, 1) = Rst.Fields("idOperateur")
                        Rst.MoveNext
                        'i = i + 1
                    Wend
                End With
            End If
        Else
            Cnx.Execute Req
            Query = 0
        End If
     
     
         Cnx.Close
        Set Rst = Nothing
        Set Cnx = Nothing
        Exit Function
     
    errhdlr:
        If Not Rst Is Nothing Then If Rst.State = 1 Then Rst.Close
        If Not Cnx Is Nothing Then If Cnx.State = 1 Then Cnx.Close
        Set Rst = Nothing
        Set Cnx = Nothing
        Query = -1
        MsgBox (Err.Description)
    End Function
     
     
    ' *************************************************************************************************
    Function Get_Combo(Chps As String, Ong As String) As Boolean
        Req = "SELECT DISTINCT " & Chps & " FROM [" & Ong & "$] ORDER BY " & Chps
        Get_Combo = False
        If Query(Req) > 0 Then
            Get_Combo = True
        End If
    End Function

Discussions similaires

  1. [XL-2010] Google Sheet - Formule qui fonctionne sur excel mais pas en ligne
    Par kyros21 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/02/2016, 10h50
  2. [LibreOffice][Tableur] Une macro qui fonctionne sous Linux mais pas sous windows
    Par ludox62 dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 07/01/2014, 21h26
  3. Réponses: 5
    Dernier message: 13/04/2009, 23h12
  4. Réponses: 10
    Dernier message: 17/02/2009, 15h51
  5. Script qui fonctionne sous FireFox mais pas sous IE
    Par Sebastien14 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 27/01/2009, 10h32

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