Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 02/07/2009, 09h05   #1
Nouveau membre du Club
 
Date d'inscription: juin 2009
Messages: 67
Par défaut Compter les lignes d'une requête SQL

Bonjour,

Je cherche à récupérer le nombre de lignes d'une requête SQL, le tout en VBA.
J'ai essayé d'utiliser un RecordCount, cependant il me renvoie systématiquement -1...

En espérant avoir une lumière sur ce RecordCount qui me pose un problème...

EDIT :

Code :
Sub CompleteTableauCommandeProvisoire()
 
    'Déclaration des variables
    Dim cnx As ADODB.Connection
    Dim rst As ADODB.Recordset
 
    'Instanciation des variables
    Set cnx = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    Dim sql1 As String
    Dim debutperiode As Date
    Dim ddeb As String
    Dim dfin As String
    Dim Ligne As Integer
    Dim j As Integer
    Dim result_sql
    Dim Col
    Dim cptLigne As Integer
    
    cnx.ConnectionString = "DSN=Stats;UID=***;PWD=***;"
    cnx.Open
    
    cptLigne = 6
    
    'Changer la date de début d'année
    For cptLigne = 6 To 263
        For debutperiode = DateSerial(2008, 12, 29) To Now() - 6 Step 7
            ddeb = Format(debutperiode, "dd/mm/yyyy")
            dfin = Format(debutperiode + 6, "dd/mm/yyyy")
            'Nombre total d'envois périodique (courrier ):
             sql1 = "select m.mp_l, count(*), sum(c.cde_tot_ttc)" + _
                " from   e_cde c, e_mode_paiement m" + _
                " where  c.cde_ty_se_c = 'WV2'" + _
                " and    c.cde_mp_c in ('KM','KI','KW','KT', 'KA','KC', 'CA')" + _
                " and    c.cde_mp_c = m.mp_c" + _
                " and    c.cde_d between" + _
                " to_date('" + ddeb + " 00:00:00' , 'dd/mm/yyyy hh24:mi:ss')" + _
                " and to_date('" + dfin + " 23:59:59', 'dd/mm/yyyy hh24:mi:ss') " + _
                " group by m.mp_l" + _
                " order by 1"
 
            rst.Open sql1, cnx
            rst.MoveFirst
            j = 0
 
            result = rst.RecordCount
            
 
            Do
                For Ligne = cptLigne To cptLigne + result
                    For Col = 65 To 67
                    'Lecture en ligne
                    Range(Chr(Col) & Ligne).Select
                    'Récupère résultat
                    result_sql = rst.Fields(j).Value
                    'Transfert le résultat dans la cellule
                    ActiveCell.FormulaR1C1 = result_sql
                    j = j + 1
                    Next
                j = 0
                rst.MoveNext
                Next
            Loop While rst.BOF
            cptLigne = cptLigne + 12
            rst.Close
            
        Next
    Next
End Sub

Cordialement,
Clément.
exqo77 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 09h58   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: London
Âge: 26
Messages: 5 335
Envoyer un message via MSN à jpcheck
Par défaut

salut,
ton recordcount correspond au numéro de l'enregistrement en cours.
Or ici tu testes sa valeur après un MoveFirst...
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 10h29   #3
Nouveau membre du Club
 
Date d'inscription: juin 2009
Messages: 67
Par défaut

Ce qui veut dire que je dois le placer après un MoveLast ?

Si c'est le cas, on m'indique une erreur : "L'ensemble des lignes ne prend pas en charge les récupérations arrière"
exqo77 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 13h32   #4
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: London
Âge: 26
Messages: 5 335
Envoyer un message via MSN à jpcheck
Par défaut

les deux parties à regarder sont dans cet article :
http://vb.developpez.com/bidou/recor...rseurs#LIV-B-2
et
http://vb.developpez.com/bidou/recor...ordset#LVI-A-9
voir les types de curseurs pour avoir un recordcount qui "fonctionne"

solution trouvée juste ici :
http://www.developpez.net/forums/d77...recordset-1-a/
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access

Dernière modification par AlainTech ; 05/07/2009 à 08h26. Motif: Fusion de 2 messages
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 14h25   #5
Nouveau membre du Club
 
Date d'inscription: juin 2009
Messages: 67
Par défaut

Merci beaucoup pour votre aide !

Problème résolu
exqo77 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 21h08.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.