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 :

Macro écrire date dans cellule


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 Macro écrire date dans cellule
    Bonjour,

    J'ai un tableau croisé dynamique issu d'une requête vers une source de données externe, j'aimerais récupérer la date de dernière actualisation de cette requête dans une cellule.

    A l'aide de cette doc : https://docs.microsoft.com/fr-fr/off...le.refreshdate j'ai créé cette Sub dans la feuille ou se situe le TCD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub RecupDateActua(ByVal Target As PivotTable)
     
        Set pvtTable = Worksheets("Données Brutes").PivotTable("Rondes__2")
        dateString = Format(pvtTable.RefreshDate, "Long Date")
        Range("M1") = dateString
     
    End Sub
    Il ne se passe pourtant rien alors que la date devrait se copier dans la cellule M1 de cette même feuille, alors ma question est que manque-t-il à mon code ? Que dois-je corriger ?

    Merci pour votre aide.

  2. #2
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Bonjour Js,
    dans votre procédure, ce n'est plus la peine de nommer votre tableau puisque vous passez le nom en paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub RecupDateActua(ByVal Target As PivotTable)
        Set pvtTable = Target
        dateString = Format(pvtTable.RefreshDate, "Long Date")
        Range("M1") = dateString
    End Sub
     
    Public Sub test()
        Call RecupDateActua(ActiveSheet.PivotTables("Rondes__2"))
    End Sub
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour Filippo,
    Vous avez entièrement raison mais il n'y a pas d'avantage besoin de cette instruction Set pvtTable = Target
    En revanche, soit il y a lieu de modifier pvtTable.RefreshDate par Target.RefreshDate soit modifier le nom de l'argument par PvtTable ce qui me semble plus approprié
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Bonjour Philippe,
    vous avez raison,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub RecupDateActua(ByVal Target As PivotTable)
        dateString = Format(Target.RefreshDate, "Long Date")
        Range("M1") = dateString
    End Sub
     
    Public Sub test()
        Call RecupDateActua(ActiveSheet.PivotTables("Rondes__2"))
    End Sub

    Fonctionne aussi bien.

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  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
    Salut Filippo,

    Merci pour ta réponse,

    J'ai copié ton code dans ma feuille, j'exécute la Sub "test" et ça me renvoie ce message d'erreur :

    Nom : capture.png
Affichages : 162
Taille : 57,7 Ko

    J'ai entouré la feuille où j'ai copié le code, peut être que c'est lié à ça.

    Le truc c'est quand je met ce code dans un module on me renvoie aussi une erreur :

    Nom : 1004module.png
Affichages : 151
Taille : 5,4 Ko

    Qu'est ce qu'il me manque pour que ça marche ?

  6. #6
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    C'est parce que tu lances la procédure d'une autre feuille.
    Quand tu fais ActiveSheet, vb cherche le tableau dynamique dans cette feuille. S'il n'y est pas, ça coince.

    Si tu veux pouvoir lancer la procédure d'une autre feuille il faut lui indiquer que tu veux la lancer sur un tableau dynamique de cette feuille, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub test2()
        Call RecupDateActua(Sheets("Données Brutes").PivotTables("Rondes__2"))
    End Sub
    Indique que tu veux lancer la procédure RecupDateActua sur le tableau dynamique "Rondes__2" qui est situé dans l'onglet "Données Brutes".

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  7. #7
    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
    J'ai corrigé et ça me met toujours la même erreur... c'est incompréhensible,

    On est d'accord je dois bien mettre ces procédures dans la feuille "Données Brutes" et pour que la date se copie je dois bien lancer la sub test ?

    est-ce que tu as pu tenter de ton côté sur une source de données quelconque ? Histoire de voir si ce code marche bien chez quelqu'un...

  8. #8
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Tu peux mettre le code où tu veux (feuille, classeur, module).
    Mais il faut bien indiquer le cas échéant où trouver le tableau.

    J'ai fait un petit exemple fictif qui marche.
    J'ai mis le code dans "Données Brutes" (Feuil2).

    Si le focus est dans Données Brutes" (Feuil2), alors dans le vb on peut lancer test qui utilise ActiveSheet.
    Sinon dans vb il faut utiliser test2 qui utilise Sheets("Données Brutes").

    Dans mon exemple, ça recopie bien "mercredi 16 septembre 2020" en M1.
    Fichiers attachés Fichiers attachés
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  9. #9
    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
    ça marche très bien sur ton fichier, j'avais fait une petite erreur de frappe que j'ai corrigé, j'ai lancé la sub ça a marché sauf que...

    après ça j'ai relancé la sub et toujours la même erreur à la con :

    Nom : err1004.png
Affichages : 144
Taille : 5,8 Ko

    ça va maintenant faire 2 jours que je suis sur ce putain de problème.

  10. #10
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Tu veux mettre ton fichier (ou un extrait) en pièce-jointe ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  11. #11
    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
    Voici mon fichier :

  12. #12
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Je ne peux pas voir le code, il est protégé par mot de passe.
    Mais le tableau dans l'onglet "Données Brutes" ne me semble pas être un tableau croisé dynamique.

    Quand je clique sur celui de mon exemple ça fait apparaitre un encart à droite de l'écran avec "Liste des champs de tableau croisé dynamique", ça n'apparait pas sur le tien.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  13. #13
    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
    Ah oui désolé j'ai oublié d'enlever le MDP,

    Si le tableau n'est pas un croisé dynamique c'est qu'il est simple ? Comment adapter le code pour un tableau simple ?

  14. #14
    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
    Citation Envoyé par js777 Voir le message
    Ah oui désolé j'ai oublié d'enlever le MDP,

    Si le tableau n'est pas un croisé dynamique c'est qu'il est simple ? Comment adapter le code pour un tableau simple ?
    Après ça avec quand même marché la première fois que j'ai lancé la sub comme tu as pu le voir la cellule M1 contenait une date.

  15. #15
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Ta zone "Rondes__2" devait être un TCD la première fois que tu as utilisé la procédure.
    Je ne sais pas ce que tu as fait mais maintenant c'est juste un range (une collection de cellules). On ne peut donc plus appliquer dessus les fonctions de TCD comme RefreshDate.

    Je ne sais pas comment modifier le code, je ne sais pas ce que fait exactement la fonction RefreshDate.

    Le plus simple serait que tu refasses ton TCD comme la 1ère fois pour pouvoir appliquer RefreshDate dessus.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  16. #16
    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 Filippo,

    Je viens de généré un TCD sur une autre feuille en utilisant la même requête, par contre je n'arrive pas à reproduire la même disposition que sur l'ancien tableau, avec des colonnes côte à côte,

    Voilà ce qu'il me donne comme affichage quand je met tous les champs dans lignes :

    Nom : creation_tcd.png
Affichages : 137
Taille : 61,4 Ko

    Pourrais-tu m'éclairer sur la manière dont je pourrais réaliser cela ?

    Merci à toi.

  17. #17
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Comme tu l'as fait la première fois, je pense qu'il faut mettre les champs en colonne et pas en ligne.
    Je te conseille la lecture de cet article sur les tableaux croisés dynamiques : https://silkyroad.developpez.com/excel/tcd/

    Bonne fin de journée.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  18. #18
    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
    J'ai le même probleme en colonne ça me donné quelque chose comme ça :

    Nom : tcd.png
Affichages : 132
Taille : 45,8 Ko

    Voici mon fichier si tu veux jeter un coup d'oeil

    fichier_suivi_rondes.xlsm

    Merci pour la doc je vais regarder ça attentivement

  19. #19
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    J'ai l'impression que tu essaies de repartir de "Données brutes" pour refaire un TCD.
    L'onglet "Données brutes" présente visiblement des données déjà agrégées. Le principe du TCD est de lire des données non agrégées pour les présenter de façon synthétique.
    Il faut que tu repartes des données sources (je ne sais pas où elles se trouvent).
    Ensuite tu mets les entêtes des colonnes qui t'intéressent dans la zone colonnes du TCD.
    Je suis désolé mais je ne peux pas le faire à ta place, documente-toi sur le TCD et repars des données sources.

    Bon courage.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  20. #20
    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
    J'ai pu lire la doc sur le TCD, c'est pas du tout ce que je recherche le TCD permet d’effectuer des calculs mathématiques (somme, nombre, moyenne, maximum, minimum, produit, écart-type…) en regroupant des données en fonction de catégories.

    Moi je veux juste afficher les données de chaque colonne comme je le fais déjà avec Power Query, j'ai pas besoin d'utiliser un TCD, c'est pas approprié à mon besoin.

    Je veux juste pouvoir récupérer la date d'actualisation des données externes de la requête, rien de plus.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2010] Pb macro modification formule dans cellule
    Par stilan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/01/2014, 15h57
  2. [XL-2010] Auto changement date dans cellule
    Par Gatchan34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/09/2011, 18h59
  3. lire date dans cellule et compter les jours
    Par biche1 dans le forum Excel
    Réponses: 6
    Dernier message: 29/09/2008, 16h41
  4. Stocker Date dans cellule
    Par limofab dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/01/2008, 17h31

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