A l'aide sur VBA

A l'aide sur VBA - VB/VBA/VBS - Programmation

Marsh Posté le 05-09-2005 à 11:15:20    

Bonjour,
Je suis un débutant pour le développement macro VB sur Excel,
je souhaite récuperer le nombre de lignes du résultat de la requete suivante
 

Code :
  1. With ActiveSheet.QueryTables.Add(Connection:=ma_connexion, Destination:=Range("M3" ))
  2.              .Name = "Requete2"
  3.              .FieldNames = False
  4.              .RowNumbers = False
  5.              .FillAdjacentFormulas = False
  6.              .BackgroundQuery = True
  7.              .RefreshOnFileOpen = False
  8.              .RefreshStyle = xlOverwriteCells
  9.              .SavePassword = False
  10.              .SaveData = False
  11.              .Refresh BackgroundQuery:=False
  12.          End With


 
Est-ce que qqn pourrait m'aider ???
 
merci

Reply

Marsh Posté le 05-09-2005 à 11:15:20   

Reply

Marsh Posté le 05-09-2005 à 17:11:16    

De l'expérience que j'en ai, il faut éviter de mettre le résultat de la requête directement dans une feuille (taille du classeur qui gonfle de manière démesurée).
 
Il est beaucoup plus efficace de créer un recordset à partir de la requête et de le parcourir pour remplir les lignes dans la feuille.
 
Le recordset à une propriété count qui donne le nombre de records renvoyés.

Reply

Marsh Posté le 05-09-2005 à 17:36:22    

Et comment récuperer le recordset de cette requete là ?  
 
ici ma_connexion est du genre

Code :
  1. ma_connexion="URL;http://serveur/sql.php?requete=select champ1, champ2 from table1"


 
parce que dans les exemples que j'ai, avec les recordsets, il faut un openDataBase(), openRecordSet() ...
pour moi, il suffit de passer la requete au serveur distant, il y a deja la base de données et tout.
 
 
merci

Reply

Marsh Posté le 06-09-2005 à 09:05:29    

Pourquoi as-tu enlevé ton code???


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 06-09-2005 à 09:36:53    

Désolé, je n'ai rien enlevé,  
Ca n'affiche pas quand je mets entre la balise [code], ça devient [ cpp ] maintenant ???
 
 
 
 

Code :
  1. With ActiveSheet.QueryTables.Add(Connection:=ma_connexion, Destination:=Range("M3" ))
  2.              .Name = "Requete2"
  3.              .FieldNames = False
  4.              .RowNumbers = False
  5.              .FillAdjacentFormulas = False
  6.              .BackgroundQuery = True
  7.              .RefreshOnFileOpen = False
  8.              .RefreshStyle = xlOverwriteCells
  9.              .SavePassword = False
  10.              .SaveData = False
  11.              .Refresh BackgroundQuery:=False
  12.          End With


Message édité par ikoto le 06-09-2005 à 09:39:21
Reply

Marsh Posté le 06-09-2005 à 22:39:43    

Si tu as fait un Set ma_connexion = ..., tu peux faire:

Set qd = ma_connexion.CreateQueryDef("" )
sSql = "SELECT * FROM ..."
qd.Sql = sSql
Set rs = qd.OpenRecordset
Msgbox (rs.Count)


Je te laisse le soin de faire les déclarations.

Reply

Marsh Posté le 08-09-2005 à 18:01:29    

Ok ! merci, c'est reglé maintenant ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed