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

Macros et VBA Excel Discussion :

Erreur d'exécution 438


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 107
    Points : 52
    Points
    52
    Par défaut Erreur d'exécution 438
    Bonjour à tous,

    J'ai mis du code dans une feuille de mon classeur contenant une requête vers une liste SharePoint s'affichant sous la forme d'un tableau :

    Nom : requete_actua.png
Affichages : 104
Taille : 98,9 Ko

    Pour récupérer la date de dernière actualisation de ce tableau et l'afficher dans une cellule de la feuille j'ai mis ce code dans la feuille en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub RecupDateActua(ByVal Target As ListObject)
    dateString = Format(Target.RefreshDate, "dd/mm/yyyy hh:mm:ss")
    Range("M1") = dateString
    End Sub
     
    Public Sub test()
    Call RecupDateActua(Sheets("Feuil1").ListObjects("Rondes__2"))
    End Sub
    Le problème c'est qu'à l'exécution de la macro "test" j'obtient cette erreur :

    Nom : err438.png
Affichages : 109
Taille : 4,8 Ko

    Si vous avez des pistes je suis preneur,

    Je vous laisse mon fichier en PJ

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Dans la pièce jointe il manque la colonne "Created".

    Si j'ai bien compris:
    Il semblerait d'après l'image déposée, que les dates de la colonne "Created" soient dégressives et donc que la plus récente soit en "K2", si c'est le cas, une simple formule en M1: =K2

    Si ce n'est pas toujours le cas, il suffit de rechercher la date max, en M1: =MAX(K:K)

    En vba dans un module standard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub RecupDateActua()
        Range("M1").Value = Format(Application.WorksheetFunction.Max(Range("K2:K" & Range("K" & Rows.Count).End(xlUp).Row)), "dd/mm/yyyy hh:mm:ss")
    End Sub
    Cdlt

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 107
    Points : 52
    Points
    52
    Par défaut
    Salut Arturo,

    J'ai essayé ton code, j'ai eu un dépassement de capacité,

    Et ce n'est pas exactement ce que je recherche, je veux afficher la date de dernière actualisation de la source de données, celle-ci étant sensée s'actualiser régulièrement cela permettrait un suivit sur son actualisation par des utilisateurs novice en excel,

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Essayez ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        ActiveSheet.ListObjects("Rondes__2").Unlink 'on rompt les liaisons
        ActiveWorkbook.RefreshAll 'on rafraîchit le classeur
        Range("M1").value = Now()'on relève la date et l'heure et on l'applique à la cellule M1
       'recréer les liaisons
    End Sub
    Cdlt

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 107
    Points : 52
    Points
    52
    Par défaut
    Update,

    Voici la façon de faire que j'ai décidé d'adopter et qui me permet de récupérer la date à chaque actualisation des données de la source,

    (Le code ci-dessous permet dans mon cas d'écrire la date de dernière actualisation dans la cellule R4 de la feuille Suivi journalier air)

    Merci à Jean-Eric

    Dans ThisWorkbook :

    Option Explicit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Call InitializeQueries
    End Sub
    Dans un module standard :

    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
    Option Explicit
     
    Dim colQueries As New Collection
     
    Sub InitializeQueries()
    Dim clsQ As clsQuery
    Dim WS As Worksheet
    Dim QT As QueryTable
    Dim lo As ListObject
        For Each WS In ThisWorkbook.Worksheets
            For Each QT In WS.QueryTables
                Set clsQ = New clsQuery
                Set clsQ.MyQuery = QT
                colQueries.Add clsQ
            Next QT
            On Error Resume Next
            For Each lo In WS.ListObjects
                Set QT = lo.QueryTable
                Set clsQ = New clsQuery
                Set clsQ.MyQuery = QT
                colQueries.Add clsQ
            Next lo
        Next WS
    End Sub
    Dans un module de classe (clsQuery) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit
     
    Public WithEvents MyQuery As QueryTable
     
    Private Sub MyQuery_AfterRefresh(ByVal Success As Boolean)
        If Success Then Sheets("Suivi journalier air").Range("R4").Value = Format(VBA.Now, "yyyy-MM-dd hh:mm")
    End Sub
    

    

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

Discussions similaires

  1. erreur d'exécution 438
    Par Rémi GAUDINAT dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/08/2011, 11h21
  2. [OL-2007] Macro : Erreur d'exécution 438.
    Par roidurif dans le forum VBA Outlook
    Réponses: 8
    Dernier message: 15/10/2010, 23h17
  3. Erreur d'exécution 438 lorsque je mets mon application sur serveur
    Par amirad dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 04/12/2008, 16h24
  4. Erreur d'exécution '438'
    Par gbzmt dans le forum VBA Access
    Réponses: 3
    Dernier message: 09/03/2008, 18h41
  5. Erreur d'exécution 438 : pourquoi ?
    Par The_Super_Steph dans le forum VBA Access
    Réponses: 5
    Dernier message: 25/06/2007, 11h49

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