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 :

Suppression requête par VBA [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Acheteur
    Inscrit en
    Juillet 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Acheteur

    Informations forums :
    Inscription : Juillet 2017
    Messages : 43
    Points : 17
    Points
    17
    Par défaut Suppression requête par VBA
    Bonjour à tous,

    J'exploite une base de données dans Excel 2019 par une requête SQL afin de travailler dessus.

    J'ai crée une macro pour sauvegarder dans un nouvel onglet à la date du jour les données avant de réactualiser la requête.
    Ce qui donne cette petite macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Mise_à_jour_stock()
    'on actualise la requête à la bonne date
     ActiveWorkbook.Connections("Requête*-*DP_STOCKS").Refresh
    'on sauvegarde le tableau dans un nouvel onglet à la date du jour
     Sheets("SQL").Copy after:=Sheets("SQL")
     Sheets("SQL (2)").Name = Format(Date, "dd-mmm")
     'on retourne au premier onglet
     Sheets("Synthèse").Select
     
    End Sub

    Je ne trouve pas le moyen de supprimer la requête dans le nouvel onglet crée.
    En effet, ce dernier reste.
    Ce qui fait que quand j'actualise la requête SQL, les onglets à la date antérieur s'actualisent aussi avec les données du jour.
    J'ai essayé plusieurs solutions sans que cela ne fonctionne.

    Je pensais que cette solution simple pouvait marcher mais ce n'est pas le cas. Auriez-vous une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Mise_à_jour_stock()
     
     ActiveWorkbook.Connections("Requête*-*DP_STOCKS").Refresh
     
     Sheets("SQL").Copy after:=Sheets("SQL")
     Sheets("SQL (2)").Name = Format(Date, "dd-mmm")
     
     Activesheets.Querytables(1).Delete
     
     Sheets("Synthèse").Select
     
    End Sub
    Par avance merci

    Cordialement

  2. #2
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut Bonsoir
    Bonsoir,,

    Assez bizarre comme soucis.

    Peut-être une piste ou même deux:
    Faire un copier coller valeur vers une feuilles, ou envois de la feuille vers un classeur 'archive'


    Sinon pour supprimer toutes les connections au classeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Sub DeleteAllConnectionsInWorkbook()
        Dim aConn as Object
        For Each aConn in ActiveWorkbook.Connections
            aConn.Delete
        Next aConn
    End Sub
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  3. #3
    Membre à l'essai
    Homme Profil pro
    Acheteur
    Inscrit en
    Juillet 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Acheteur

    Informations forums :
    Inscription : Juillet 2017
    Messages : 43
    Points : 17
    Points
    17
    Par défaut
    Bonsoir,

    Merci pour votre retour

    Je suis parti sur un ajout à la suite dans une feuille "Archives" et je fais un tableau croisé dynamique pour appeler la date de chaque ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nbLignes = Sheets("SQL").Cells(Rows.Count, "A").End(xlUp).Row
    Sheets("SQL").Range("A2:J" & nbLignes).Copy Destination:=Sheets(4).Range("D1048576").End(xlUp)(2)

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

Discussions similaires

  1. Mise à jour requête par VBA
    Par Goube dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/05/2018, 15h35
  2. [AC-2010] Modifier un paramètre de type "text" d'une requête par VBA
    Par metalleuse dans le forum VBA Access
    Réponses: 8
    Dernier message: 22/06/2015, 09h47
  3. Pilotage d'une requête par VBA
    Par arnaud03 dans le forum VBA Access
    Réponses: 9
    Dernier message: 17/06/2014, 00h28
  4. Modifier propriété <source base> d'une requête par VBA ou SQL?
    Par 1010titi dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 26/11/2008, 21h16
  5. exécution de requête par VBA
    Par nadia123456 dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/09/2008, 12h31

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