• Initiateur de la discussion Initiateur de la discussion vinzopus
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

vinzopus

XLDnaute Nouveau
Bonjour,

Je rencontre un problème lors de requête ODBC.

Je cherche à effectuer plusieurs requêtes, en traitant à chaque fois les données fournies par ces requêtes et en passant à la suivante.

Le paramètre est naff.
Il y a des "bons" naff, pour lesquels la requête retourne des données, et des "mauvais" naff, pour lesquels la requête ne retourne rien.

Voici le bout de mon code qui pose problème:

Code:
Sub requeteMultiple()
'
' requeteMultiple Macro
' Macro enregistrée le 12/03/2008 par SCAFFHOLDING
'
    naff = 9001
        Worksheets("requete").Select
        Cells.Select
        Selection.ClearContents
        'Selection.QueryTable.Delete
        Range("A1").Select
        
        If ActiveSheet.QueryTables.Count = 0 Then
            With ActiveSheet.QueryTables.Add(Connection:= _
                "ODBC;DSN=Base de données WCLIP;;ANA=c:\wclipper\WCLIP.wd5\WCLIP.wdd;;REP=T:\FICHIERS\GALVA-AFA\;" _
                , Destination:=Range("A1"))
                .CommandText = Array( _
                "SELECT POINT.COFRAIS, POINT.TPSPASSE" & Chr(13) & "" & Chr(10) & "FROM c:\wclipper\WCLIP.wd5\WCLIP.wdd~POINT POINT" & Chr(13) & "" & Chr(10) & "WHERE (POINT.NAF=" & naff & ")" & Chr(13) & "" & Chr(10) & "ORDER BY POINT.COFRAIS")
                .Refresh BackgroundQuery:=True
            End With
            MsgBox "ok1 " & naff
        
        Else
            With ActiveSheet.QueryTables.Item(1)
            
            'With ActiveSheet.QueryTables.Add(Connection:= _
             '   "ODBC;DSN=Base de données WCLIP;;ANA=c:\wclipper\WCLIP.wd5\WCLIP.wdd;;REP=T:\FICHIERS\GALVA-AFA\;" _
              '  , Destination:=Range("A1"))
                .CommandText = Array( _
                "SELECT POINT.COFRAIS, POINT.TPSPASSE" & Chr(13) & "" & Chr(10) & "FROM c:\wclipper\WCLIP.wd5\WCLIP.wdd~POINT POINT" & Chr(13) & "" & Chr(10) & "WHERE (POINT.NAF=" & naff & ")" & Chr(13) & "" & Chr(10) & "ORDER BY POINT.COFRAIS")
                .Refresh BackgroundQuery:=True
            End With
            MsgBox "ok2 " & naff
        End If
    MsgBox "c fini!"
End Sub

Mon problème est le suivant:
- dans l'état actuel des choses la requête ne s'effectue que lorsque le reste de mon programme est fini (et donc je ne peux pas traiter les données de la requête)
- si je passe à .Refresh BackgroundQuery:=False, alors la requête bloque pour les "mauvais" naff.
Il me faut donc trouver un moyen:
- soit de forcer la requête à s'achever, même si .Refresh BackgroundQuery:=True, avant de poursuivre la suite du programme
- soit arriver à faire fonctionner la requête avec .Refresh BackgroundQuery:=False lorsqu'à la requête ne correspondent pas de données.

Des idées?
Merci beaucoup!

Vincent
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
711
Réponses
33
Affichages
4 K
  • Question Question
Power Query power query
Réponses
22
Affichages
4 K
  • Question Question
Microsoft 365 Programme trop lent
Réponses
12
Affichages
883
Réponses
2
Affichages
1 K
Retour