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 :

Sql et parcours de feuilles [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut Sql et parcours de feuilles
    Bonjour,

    Je pose une requette dans deux boucles imbriquées
    et lors de la deuxieme boucle externe je plante, alors
    que je remets mes parametres de connection à 0 à chaque fois.
    Je vous soumets mon code pour voir si vous avez des idées sur le sujet.
    D'avance merci de votre retour.
    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
    25
    26
    27
    28
     
    ' Premiere boucle sur les Mois
    mois = 4
    Nb = ActiveWorkbook.Sheets.Count
    While ActiveWorkbook.Sheets(mois).Index <= Nb
        For cpt_BU = 0 To 7
     
            finLigne = ActiveWorkbook.Sheets(mois).Range("A65536").End(xlUp).Row
            feuille = ActiveWorkbook.Sheets(mois).Name
            strQuery = "select Nom,Prenom,Numéro from " & "[" & feuille & "$] where [BL/BU]=" & "'" & lesBU(cpt_BU) & "'"
            Set cn = connectADO(chemin)
            If cn Is Nothing Then
                MsgBox "Impossible de se connecter" & Err.Description
                Exit Sub
                Else: MsgBox "Ca marche"
                End If
     
            Set rs = New ADODB.Recordset
            rs.Open strQuery, cn, adOpenDynamic, adLockReadOnly
                cpt = 1
            ThisWorkbook.Sheets(1).Range("A" & (cpt_BU + 1) *15).CopyFromRecordset rs
            cpt_BU = cpt_BU + 1
            Set rs = Nothing
            cn.Close
            Set cn = Nothing
        Next cpt_BU
    mois = mois + 1
    Wend
    A chaque passage sur une deuxieme feuille, sur le rs.open j'ai une erreur.
    Est ce que c'est bien un rs.open qu'il faut faire ?

    Merci de vos réponses.

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    La première idée qui vienne c'est que la deuxième feuille n'existe pas, ou ne s'appelle pas comme le contenu de la variable "feuille".

    Quelques remarques complémentaires.
    1. La connexion est ouverte toujours sur le même classeur, non? SI c'est bien le cas, pourquoi la fermer en cours de traitement?
    2. L'argument du While me semble bizarre. Quand tu auras parcouru tous les mois existant, au test suivant tu devrais avoir une erreur puisque la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Sheets(mois)
    n'existera pas.
    3. tu devrais clore chaque jeu d'enregistrement.

    En espérant que cela t'aide,

    PGZ

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    Bonsoir,

    Ok pour la connexion en fait je l'ai mise dans la boucle pour voir si
    ca changeait l'erreur...

    Au sujet des mois, j'en ai + que 12 (on passe à l'année suivante) c'est pour cela que j'ai du mettre un compteur sur le nombre total de feuilles.

    Je viens d'essayer un rs.close après mon .CopyFromRecordset rs.
    Mais c'est pas mieux.
    Est ce qu'il y a une autre facon pour clore l'enreg ?

    Au fait l'erreur est sur le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     rs.Open strQuery, cn, adOpenDynamic, adLockReadOnly
    est :
    [Microsoft. Pilote ODBC Excel] Trop peu de paramètres. 1 attendu
    Merci de votre aide

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Citation Envoyé par comme de bien entendu Voir le message
    Au sujet des mois, j'en ai + que 12 (on passe à l'année suivante) c'est pour cela que j'ai du mettre un compteur sur le nombre total de feuilles.
    Dans ce cas, mets un compteur dans la boucle, mais tu peux utiliser mois, puisque tu ne remets pas à 1 après 12.
    Citation Envoyé par comme de bien entendu Voir le message
    Est ce qu'il y a une autre facon pour clore l'enreg ?
    Non, c'est bien maintenant.
    Citation Envoyé par comme de bien entendu Voir le message
    Au fait l'erreur est sur le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     rs.Open strQuery, cn, adOpenDynamic, adLockReadOnly
    est
    [Microsoft. Pilote ODBC Excel] Trop peu de paramètres. 1 attendu
    Cela vient peut-être du WHERE. Il y a quelque chose dans lesBU(i)?
    Tu pourrais vérifier avec avant chaque requête.

    Cordialement,

    PGZ

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    Bonsoir,

    J'ai vérifié en posant des espions sur strQuery, je comprends pas pourquoi lorsque je change de feuille ca marche plus...
    Si y a des idées...
    Bonne nuit.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Difficile de tester sans fichier, mais au moins modifie le début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Mois = 4
    Nb = ThisWorkbook.Worksheets.Count
    While Mois <= Nb
         Set Sh = ThisWorkbook.Worksheets(Mois)
         With Sh
              For cpt_BU = 0 To 7
                   FinLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
                   strQuery = "select Nom,Prenom,Numéro from " & "[" & .Name & "$] where [BL/BU]='" & lesBU(cpt_BU) & "'"
    '.....
    Plus bas tu as une incrémentation superflue cpt_BU = cpt_BU + 1 dans une boucle For cpt_BU.

  7. #7
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Citation Envoyé par comme de bien entendu Voir le message
    Bonsoir,

    J'ai vérifié en posant des espions sur strQuery, je comprends pas pourquoi lorsque je change de feuille ca marche plus...
    Si y a des idées...
    Bonne nuit.
    Tu pourrais nous donner la valeur se strQuery contrôlée juste avant le bug. Et tu as bien vérifié que la feuille existe bien dans le classeur source?

    Cordialement,

    PGZ

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

Discussions similaires

  1. Création d'une matrice carrée avec SQL et parcours de table SQL server
    Par ismahane.silhadi dans le forum Développement
    Réponses: 4
    Dernier message: 03/12/2014, 15h07
  2. Performances requête SQL et parcours de ResultSet
    Par El Saigneur dans le forum JDBC
    Réponses: 9
    Dernier message: 17/05/2010, 15h54
  3. Réponses: 9
    Dernier message: 30/05/2006, 17h55
  4. [ SQL - proc stockée ] optimisation du code parcours curseur
    Par luimême dans le forum Langage SQL
    Réponses: 1
    Dernier message: 06/10/2005, 16h20
  5. [PL/SQL] parcours de curseur
    Par NPortmann dans le forum Oracle
    Réponses: 20
    Dernier message: 20/05/2005, 21h51

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