Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Query et vba] comment prévoir à l'avance des données d'une bdd

11 réponses
Avatar
aravis
bonjour, c'est encore. Je ne vous embéterai plus pour longtemps.

J'ai des tables d'une base de données, avec date,defaut,durée,heure,nombre.
Dans query a chaque fois je fait un filtre pour mettre la date du jour , et
je n'affiche que l'ensemble des nombres de tels défaut dans tel colonnes (
j'aditionne les défaut à l'état 1 en fait).
Peut t'on directement prévoir cela sur vba ?
Vu que dans mon filtre, c'est la date qui change à chaques fois.

voici un exemple de tableau de ma bdd : http://cjoint.com/?fdjh3sSIIe

merci d'avance

10 réponses

1 2
Avatar
aravis
j'ai enregistrer une macro de ce que j'ai réaliser :


Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 03/05/2006 par artoisa
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSNÛASE Files;DefaultDir=C:Documents and
SettingsartoisaMy Documents;DriverIdS3;MaxBufferSize 48;PageTimeout=5;"
_
, Destination:=Range("D12"))
.CommandText = Array( _
"SELECT Sum(TE_PROCE.NOMBRE) AS 'Somme sur NOMBRE'" & Chr(13) & "" &
Chr(10) & "FROM `C:Mélodie`TE_PROCE.DBF TE_PROCE" & Chr(13) & "" & Chr(10)
& "WHERE (TE_PROCE.DATE={d '2006-05-02'}) AND (TE_PROCE.DEFAUT5) AND
(TE_PROCE.NOMBRE=1) AND (TE_PROCE.POSTE" _
, "0)")
.Name = "Lancer la requête à partir de dBASE Files"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With
With Selection.QueryTable
.Name = "Lancer la requête à partir de dBASE Files"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
End With
Selection.QueryTable.Refresh BackgroundQuery:úlse
End Sub
Avatar
aravis
personne pour m'aider
Avatar
isabelle
bonjour aravis,

essaie en modifiant cette parti :

"WHERE (TE_PROCE.DATE={d '2006-05-02'}) AND (TE_PROCE.DEFAUT5) AND
(TE_PROCE.NOMBRE=1) AND (TE_PROCE.POSTE" _
, "0)")

comme ca,

VarDate = 2006-05-02
...
"WHERE (TE_PROCE.DATE={d '" & VarDate & "'}) AND (TE_PROCE.DEFAUT5) AND
(TE_PROCE.NOMBRE=1) AND (TE_PROCE.POSTE" _
, "0)")

isabelle


bonjour, c'est encore. Je ne vous embéterai plus pour longtemps.

J'ai des tables d'une base de données, avec date,defaut,durée,heure,nombre.
Dans query a chaque fois je fait un filtre pour mettre la date du jour , et
je n'affiche que l'ensemble des nombres de tels défaut dans tel colonnes (
j'aditionne les défaut à l'état 1 en fait).
Peut t'on directement prévoir cela sur vba ?
Vu que dans mon filtre, c'est la date qui change à chaques fois.

voici un exemple de tableau de ma bdd : http://cjoint.com/?fdjh3sSIIe

merci d'avance


Avatar
aravis
en fait j'aimerai ne pas retapé la date a chaque fois.

Dans l'exemple que tu m'as donnée, ca revien au meme que ma macro, en fait
j'aimerai avoir la fonction pour mettre la date automatiquement dans ce
format là (la date de windows)

merci d'avance
Avatar
isabelle
tout dépend de ton système (panneau de configuration)
sur mon poste, si j'exécute cette ligne :
VarDate = Date
VarDate est égal à 2006-05-03 (écrit exactement comme ce format).

isabelle

en fait j'aimerai ne pas retapé la date a chaque fois.

Dans l'exemple que tu m'as donnée, ca revien au meme que ma macro, en fait
j'aimerai avoir la fonction pour mettre la date automatiquement dans ce
format là (la date de windows)

merci d'avance


Avatar
aravis
voici mon code, peut etre qu'il est mal structure :

Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 03/05/2006 par artoisa
'

vardata = Date
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSNÛASE Files;DefaultDir=C:Documents and
SettingsartoisaMy Documents;DriverIdS3;MaxBufferSize 48;PageTimeout=5;"
_
, Destination:=Range("D12"))
.CommandText = Array( _
"SELECT Sum(TE_PROCE.NOMBRE) AS 'Somme sur NOMBRE'" & Chr(13) & "" &
Chr(10) & "FROM `C:Mélodie`TE_PROCE.DBF TE_PROCE" & Chr(13) & "" & Chr(10)
& "WHERE (TE_PROCE.DATE={d '" & VarDate & "'}) AND (TE_PROCE.DEFAUT5) AND
(TE_PROCE.NOMBRE=1) AND (TE_PROCE.POSTE" _
, "0)")
.Name = "Lancer la requête à partir de dBASE Files"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With
End Sub


cordialement
Avatar
isabelle

voici mon code, peut etre qu'il est mal structure :


je ne pense pas, j'ai seulement refait les retours à la ligne,
mais je crois qu'il vaut mieux vérifier le format de date directement dans la base de données.
la variable doit être mit à ce format.

Sub Macro2()
' Macro enregistrée le 03/05/2006 par artoisa

Mondir = "C:Documents and SettingsartoisaMy Documents"
vardata = Date
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSNÛASE Files;DefaultDir=" & Mondir & _
";DriverIdS3;MaxBufferSize 48;PageTimeout=5;", Destination:=Range("D12"))
.CommandText = Array( _
"SELECT Sum(TE_PROCE.NOMBRE) AS 'Somme sur NOMBRE'" & _
Chr(13) & "" & Chr(10) & _
"FROM `C:Mélodie`TE_PROCE.DBF TE_PROCE" & _
Chr(13) & "" & Chr(10) & _
"WHERE (TE_PROCE.DATE={d '" & VarDate & "'}) AND" & _
"(TE_PROCE.DEFAUT5) AND (TE_PROCE.NOMBRE=1) AND (TE_PROCE.POSTE0)")

.Name = "Lancer la requête à partir de dBASE Files"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With
End Sub

isabelle

Avatar
aravis
quand j'écrit ton code ça me mets erreur de synthaxe sql, et lorsque je
clique sur débloger ca me redirige à la ligne .

.Refresh BackgroundQuery:úlse

aurais-tu une solution ?
Avatar
isabelle
bonjour aravis,

voici un extrait de l'aide :

Lors de l'enregistrement d'une macro comprenant une requête, Excel ne
peut pas exécuter la requête en arrière-plan, même si vous avez
sélectionné cette option. Pour modifier la macro enregistrée de manière
à ce qu'elle s'exécute en arrière-plan, remplacez la méthode
d'actualisation de l'objet « BackgroundQuery := False » par «
BackgroundQuery := True ».


isabelle




quand j'écrit ton code ça me mets erreur de synthaxe sql, et lorsque je
clique sur débloger ca me redirige à la ligne .

.Refresh BackgroundQuery:úlse

aurais-tu une solution ?


Avatar
aravis
j'ai bien essayer, mais ca ne change rien . :(
1 2