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 :

GoTo avec retour [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 148
    Par défaut GoTo avec retour
    Bonjour à tous,

    voila mon problème:

    J'ai une macro comprenant une requête SQL que je dois effectuer plusieurs fois mais avec des paramètres différents. Donc pour simplifier le code je souhaite faire une sorte de GoTo mais qui revient la ou ça en était.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SQL= "SELECT * FROM variable"
     
    variable = A
    Set Result = Connect.Execute(SQL)
    Range("A1").value =  Result.Fields(0).Value
     
    variable = B
    Set Result = Connect.Execute(SQL)
    Range("A2").value =  Result.Fields(0).Value
    ....
    Cependant, ceci ne marche pas car j'obtient toujours le résultat de la requête ou variable = A.
    Pour que ça fonctionne, il faudrait que je fasse ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL= "SELECT * FROM variable"
    
    variable = A
    Set Result = Connect.Execute(SQL)
    Range("A1").value =  Result.Fields(0).Value
    
    SQL= "SELECT * FROM variable"
    
    variable = B
    Set Result = Connect.Execute(SQL)
    Range("A2").value =  Result.Fields(0).Value
    Or ma requête est assez lourde et le code va rapidement être long, c'est pour ça que je cherche quelque chose comme:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SQL:SQL= "SELECT * FROM variable"
    
    variable = A
    Set Result = Connect.Execute(SQL)
    Range("A1").value =  Result.Fields(0).Value
    
    GoTo SQL
    variable = B
    ' (une fois le GoTo effectué je reviens où le code en était)
    Set Result = Connect.Execute(SQL)
    Range("A2").value =  Result.Fields(0).Value
    ....
    
    SQL:SQL= "SELECT * FROM variable"
    Merci de votre aide !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 94
    Par défaut
    Tu ne peux pas revenir en arrière juste pour effectuer une seule action. Si tu le fais, tu referas tout du label ("SQL") au GoTo, ce qui risque d'entrainer une boucle infinie si tu ne mets aucune condition au retour.

    Si tu tiens à ne pas écrire ta requête à chaque fois, tu peux la déporter dans une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function Requete(byval variable as string) as string
        Requete = "SELECT * FROM " & variable
    end function
    ainsi tu n'auras plus qu'à écrire dans ta macro que :
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL= "SELECT * FROM variable"
    variable = A

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 148
    Par défaut
    Merci beaucoup de la réponse, je sais pas comment j'ai fait pour pas y penser...

    Juste j'ai le message d'erreur "command text was not set for the command object" sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Result = Connect.Execute(SQL)
    ça vient d'ou ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 94
    Par défaut
    à vrai dire je n'ai jamais fait de sql via VBA, essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function Requete() as string
        Requete = "SELECT * FROM variable"
    end function 
     
     
    '...ton code
    SQL=Requete()
    variable = A
    ...
    Mais à mon goût on perd tout l'intérêt de faire une fonction. A moins que ta requête soit très longue.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 148
    Par défaut
    C'est bon en faite fallait juste que je mette mes variables dans la fonction et non dans le sub()...

    Cependant, comment je fais du coup pour que le résultat de ma requête (contenu dans une variable) soit pris en compte dans mon sub() ?
    Merci !


    PS: C'est bon il suffisait de déclarer la variable en Public...

    Encore merci

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

Discussions similaires

  1. show_hide un div: problème avec retour
    Par -DeN- dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/02/2006, 12h16
  2. Requête avec retour d'1 seule ligne de la seconde table
    Par Fred_76 dans le forum Requêtes
    Réponses: 16
    Dernier message: 09/11/2005, 13h46
  3. Procédure stockée avec retour de curseur
    Par Oufti dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/11/2005, 22h40
  4. Concatérner chaine avec retour à la ligne
    Par nebule dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/11/2004, 11h55
  5. afficher texte avec retour chariot aprèq requète sql
    Par frenchy371 dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 17h33

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