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 :

[VBA] recherche fonction qui annonce la fin d'une requete


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut [VBA] recherche fonction qui annonce la fin d'une requete
    Bien le Bonjour

    Je suis à la recherche d'une fonction qui permette de me dire quand une requete se finie.
    J ai besoin de rendre un bouton inaccessible pendant un certain lapse de temps (variable).
    Est ce possible, existe t il une telle fonction/procedure/script ?

    Merci

  2. #2
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour
    et cette requete, elle viens d'où?
    qui l'execute?
    comment?

    etc...
    Alleï Bonjour chez vous!

  3. #3
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 104
    Points : 124
    Points
    124
    Par défaut
    Bonjour,
    Qu'est-ce que tu entends pas "une requête se finit ?

    N'est-ce pas simplement le moment où VBA passe à l'instruction suivant celle qui a lancé la requête ?

  4. #4
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    Sois plus précis :
    * Quel est le contexte
    * Qu'as-tu déjà fait (code ?)

    Sinon, d'après ton post, voici ma réponse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CommandButton1.Enabled = False
    'ta requete et ton traitement
    Commandbutton1.Enabled = True
    Moi, j'aime pas facebook.

    Musiciens de France

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    en fait c'est une requete qui s execute à l'ouverture du fichier.

    par contre comme mon boss n'est pas là je ne sais pas où et comment est faite cette requete.

    La requete n'est pas en dure dans le code source VBA. si ça peut aider j ai ce message quand j ouvre le fichier.


    d apres mes souvenirs (tres vague) je crois que c est une requete en SQL.

    Quand je dis "la requete se finie", j'entend par là, quand la requete a fini de s'executer et qu elle a affiché tous ses resultats.

    Merci de votre aide

  6. #6
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    ça c'est une liaison ODBC avec une base de données.
    Le fait de cliquer sur Actualiser recharge les données dans le fichier excel pour avoir des données fraiches.
    c'est après ça que les traitements commencent.

    il y a quoi en code vba dans ton fichier ???
    Moi, j'aime pas facebook.

    Musiciens de France

  7. #7
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    il y a du code pour des fonctions, mais rien en rapport avec la requete.
    et le code du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub CommandButton1_Click()
     
        CommandButton1.Enabled = False
     
        Range("C12").Select
        Selection.QueryTable.Refresh BackgroundQuery:=False
     
        CommandButton1.Enabled = True
     
    End Sub
    Où je peux voir la requete qui s execute ? dans quel menu ?

  8. #8
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    Pour voir les liaisons odbc sur ton fichier, va dans Données/Données externes/
    Moi, j'aime pas facebook.

    Musiciens de France

  9. #9
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    Salut

    D'apres ce que mon boss m a fait voir, les requetes proviennent de MSQUERY.
    Y a t il une fonction qui permette de dire qd la requete a finie de s exécuter ?

    Autre question, est il possible de faire une temporisation, un peu comme un wait ou sleep ?


    merci

  10. #10
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour,

    ajoute ça avant de réactiver le bouton, pour voir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    do while qt.Refreshing
    loop
    Alleï Bonjour chez vous!

  11. #11
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    je ne comprends pas ta question...
    pour faire une temporisation après ta requete il suffit de mettre une msgbox ou meme une boucle qui attend une action utilisateur...
    Moi, j'aime pas facebook.

    Musiciens de France

  12. #12
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 104
    Points : 124
    Points
    124
    Par défaut
    Bonjour,
    Pourquoi ne pas contourner en lançant nous même le refresh ?
    Je m'explique. Là la mise à jour démarre à l'ouverture parce que dans :
    Données, Données externes, propriétés de la source de donnée, la case "Actualiser à l'ouverture" est cochée.

    On la décoche et on lance le refresh nous même :

    Et si tu tiens vraiment à pourvoir faire le refresh à l'ouverture tu mets dans le code du classeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
    If MsgBox("Actualiser les données ?", vbYesNo) = vbYes Then
            Sheets("LaFeuilleQuiVaBien").Range("A1").QueryTable.Refresh BackgroundQuery:=False
            'ici le code à exécuter après le refresh
    End If
    'ici le code à executer dans tous les cas à l'ouverture.
    End Sub
    Tu peux aussi mettre le refresh derrière un bouton. Profites-en pour mémoriser dans un coin la date et l'heure du dernier import et mettant après le refresh un truc comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Log").Range("A1").value = Date()+Time()
    Ça sert toujours...

  13. #13
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bon je reorend mon code et je l'explique
    bonjour,

    ajoute ça avant de réactiver le bouton, pour voir


    Code :

    do while qt.Refreshing
    loop
    en entier pour bien comprendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dim qt as querytable
    'ici il se passe ce qu'on veux avant le refresh
     
    'juste apres le refresh ou juste après l'ouverture du fichier
    'on lui dis que tant qu'il est en refresh on fait .. ben rien par exemple
    do while qt.refreshing
    loop
     
    'la main était donc bloquée et maintenant on debloque le bouton
    bouton.enabled=true
    Alleï Bonjour chez vous!

  14. #14
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    Ca marche nikel

    j ai un petit soucis par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub CommandButton1_Click()
     
        CommandButton1.Enabled = False
        CommandButton2.Enabled = False
     
        Range("C12").Select
        Selection.QueryTable.Refresh BackgroundQuery:=False
     
        CommandButton1.Enabled = True
        CommandButton2.Enabled = True
     
    End Sub
    quand j execute cette fonction, le bouton 2 se met pas à false mais ne se grise pas, pourtant le bouton 1 lui se grise bien ???

    J ai un autre soucis, je dois ajouter des lignes en bas d'une page, voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub AjoutLigne()
     
        Dim k As Integer
        nb = Feuil1.Cells(74, 12)
     
        For k = 0 To nb Step 1
            Rows(k + LigneDest).Add
        Next
     
    End Sub
    Mais ça ne marche pas :s pk ?

    Merci

  15. #15
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    et quand tu le fait au pas à pas?
    Alleï Bonjour chez vous!

  16. #16
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    C est a dire ? ( j ai rajouter un soucis dans mon message précédent je sais pas du quel tu parles)

  17. #17
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    du premier

    pour le second
    si je vois bien ou tu veux en venir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub AjoutLigne()
     
        Dim k As Integer
        nb = Feuil1.Cells(74, 12)
     
       rows(nb+1).add
     
    End Sub
    parce que ton code il en rajoute une chiée de lignes
    Alleï Bonjour chez vous!

  18. #18
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    Ok en fait pr le 1er pb, j ouvre une msgbox et il me dit bien que le 2eme bt est a enable = false mais il n est pas grisé...


    Pr le 2eme pb, en fait je veux rajouter x lignes en bas de page.

    si j ai bien compris la formule :

    rows(numero_de_la_ligne).add

    non ?

  19. #19
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    Pr le 2eme pb, en fait je veux rajouter x lignes en bas de page.

    si j ai bien compris la formule :

    rows(numero_de_la_ligne).add

    non ?
    tout à fait
    Alleï Bonjour chez vous!

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/07/2008, 15h35
  2. [VBA-E] Fonction qui ne se recharge pas
    Par iupien78 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/01/2007, 21h23
  3. Réponses: 2
    Dernier message: 13/12/2006, 13h33
  4. Réponses: 6
    Dernier message: 22/11/2006, 10h38
  5. [VBA-PP]fonction qui écrit un chiffre dans une cellule excel
    Par alpking dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/04/2006, 19h34

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