| ||||||||
Petit astucien | Bonjour a tous!
j'ai une base de donnée access dans laquelle des enregistrements tous differenciés par une date sont inscrit.
j'arrive a partir d'excel à importer la base de donnée en faisant une requete.
par contre, ce que je voudrais, c'est mettre sur mon formulaire (un userform excel), c'est 2 textbox, une pour la date de debut de periode, une pour la fin, et extraire de la base, seulement les données entre ces 2 dates.
dans la requete, je n'y arrive pas, j'y parviens seulement sous access.
Comment pourrais-je faire?
je vous remercie!
Modifié par Devilredfield le 23/06/2005 13:55 | |||||||
Publicité | ||||||||
| ||||||||
Astucien | en utilisant le filtre automatique et personnalisÚ
| |||||||
Astucien | Bonsoir Ritchi92,
Le filtre automatique est parfois une solution, mais pas dans tous les cas.
Par exemple si Devilredfield importe une base de donnÚes comprenant plusieurs milliers d'enregistrements pour un historique d'un an ou plus, alors qu'il ne veut utiliser que ceux concernant le mois prÚcÚdent par exemple, ce n'est pas obligatoirement la meilleure solution.
Mais je ne peux lui donner la solution ce soir.
Alors, si le filtre lui convient, c'est trÞs bien, sinon il faut qu'il attende une autre solution (qui viendra peut-Ûtre avant la mienne). | |||||||
Petit astucien | je vous remercie les gars, mais c'est vrai que le filtre auto ne convient pas dans ce type de travail que je dois realiser... | |||||||
Astucien | exemple de mes propos:
[img]http://ritchi92.free.fr/Special/PCastucesExcel1.JPG[/img]
et cela sÚlectionnes entre 2 dates
ou je n'ai pas compris la question[boom]
[hello] | |||||||
Astucien | Bonjour Ritchi92,
En fait c'est Ó travers la requÛte que Devilredfield ne veut importer dans Excel que les enregistremets concernÚs et non pas tous les enregistrements. | |||||||
Petit astucien | bingo Yora! tu as tout devinÚ, et ce matin, je suis encore bloquÚ, pourtant voila mon code source:
[code]
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.connectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data source=Y:\logistique\R2\reception.mdb;"
cnn.Open
Dim rstCurr As New ADODB.Recordset
Dim strSQL As String
i = 1
strSQL = "SELECT count(*) as nb from reception"
rstCurr.Open strSQL, cnn, adOpenStatic, adLockPessimistic
nbc = rstCurr![nb]
ReDim periode(nbc) As String
ReDim secteur(nbc) As String
ReDim quantite(nbc) As Integer
ReDim tipe(nbc) As String
ReDim nb_colis(nbc) As Integer
ReDim observation(nbc) As String
date1 = "01/01/01"
date2 = "12/12/07"
rstCurr.Close
strSQL = "SELECT date, secteur, type, 50*[nbpal]+[nbcol] AS Nb_colis, observation FROM reception GROUP BY date, secteur, type, 50*[nbpal]+[nbcol], observation HAVING ((date Between [01/01/01] And [31/01/08]))"
rstCurr.Open strSQL, cnn, adOpenStatic, adLockPessimistic
Do While Not (rstCurr.EOF)
periode(i) = rstCurr![Date]
secteur(i) = rstCurr![secteur]
tipe(i) = rstCurr![Type]
nb_colis(i) = rstCurr![nb_colis]
observation(i) = rstCurr![observation]
s = periode(i)
Cells(1 + i, 2).Value = s
Cells(1 + i, 3).Value = secteur(i)
Cells(1 + i, 4).Value = quantite(i)
Cells(1 + i, 5).Value = observation(i)
i = i + 1
rstCurr.MoveNext
Loop
rstCurr.Close
End Sub
[/code]
et comme message d'erreur:
"Aucune valeur donnÚe pour un ou plusieurs des parametres requis" | |||||||
Astucien | Bonjour Devilredfield,
Je n'avais jamais fait de requÛte SQL sur Excel mais seulement sur Access et il me semblait bien me souvenir que je ne pouvais utiliser que le format de date indiquÚ ci-dessous (Ó travers une requÛte que je viens de faire sur Excel, cette fois et Ó titre d'exemple):
WHERE (RPrestations.Datj>={ts '2004-06-19 00:00:00'} And RPrestations.Datj<={ts '2004-11-05 00:00:00'}) | |||||||
Petit astucien | Arghhh, þa ne fonctionne pas....
je ne trouve rien sur ce sujet sur le net en plus, þa me gonfle | |||||||
Astucien | Bonjour Devilredfield,
Bizarre, chez moi cela fonctionnait.
Une question toute bÛte (vous y avez s¹rement pensÚ, mais on ne sait jamais) :
vous avez tapÚ ces instructions directement dans votre procÚdure ?
strSQL = "SELECT date, secteur, type, 50*[nbpal]+[nbcol] AS Nb_colis, observation FROM reception GROUP BY date, secteur, type, 50*[nbpal]+[nbcol], observation HAVING ((date Between [01/01/01] And [31/01/08]))"
si oui, avez-vous essayÚ de construire votre requÛte directement sur Excel, puis si elle donne les bons rÚsultats, de passer Ó l'affichage SQL et copier puis coller dans votre procÚdure ? | |||||||
Petit astucien | Bonjour,
tout d'abord, merci pour votre aide!
le probleme, c'est que le module pour faire des requete depuis excel n'est pas installÚ et je n'ai pas les droits pour le faire. j'ai reussi a avancer un peu, mais c'est pas encore þa. je cherche toujours. J'ai mis directement les dates dans ma requete afin d'eviter de les retaper a chaque fois.
[code]
Private Sub CommandButton2_Click()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.connectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data source=Y:\logistique\R2\temp\reception.mdb;"
cnn.Open
Dim rstCurr As New ADODB.Recordset
Dim strSQL As String
i = 1
strSQL = "SELECT count(*) as nb from reception"
rstCurr.Open strSQL, cnn, adOpenStatic, adLockPessimistic
nbc = rstCurr![nb]
ReDim periode(nbc) As Date
ReDim secteur(nbc) As String
ReDim sorte(nbc) As String
ReDim nbcolis(nbc) As Integer
ReDim obs(nbc) As String
rstCurr.Close
debut = "17/06/2005"
'InputBox("Entrez la date de dÚbut de pÚriode", "DÚbut de pÚriode")
fin = "20/06/2005"
'InputBox("Entrez la date de fin de pÚriode", "Fin de pÚriode")
strSQL = "SELECT date,secteur,type,50*[nbpal]+[nbcol] AS nbcolis,observation FROM reception GROUP BY date,secteur,type,50*[nbpal]+[nbcol], observation HAVING date Between " & debut & " AND " & fin & ";"
rstCurr.Open strSQL, cnn, adOpenStatic, adLockPessimistic
Do While Not (rstCurr.EOF)
periode(i) = rstCurr![Date]
secteur(i) = rstCurr![secteur]
sorte(i) = rstCurr![Type]
nbcolis(i) = rstCurr![nbcolis]
obs(i) = rstCurr![observation]
Cells(i, 1).Value = periode(i)
i = i + 1
rstCurr.MoveNext
Loop
rstCurr.Close
End Sub
[/code]
Pourtant, je ne vois pas ce qui cloche dans mon code... Modifié par Devilredfield le 23/06/2005 11:09 | |||||||
Petit astucien | Bon voila, j'ai trouvÚ ce midi grace a toi. en rentrant chez moi, j'ai essayÚ de faire une requete et j'ai simplement recopiÚ en revenant au boulot.
je te remercie Yora_senior pour ton aide!
[code]debut = "20/06/2005"
fin = "20/06/2005"
strSQL = "SELECT date,secteur,type,50*[nbpal]+[nbcol] AS nbcolis,observation FROM reception GROUP BY date,secteur,type,50*[nbpal]+[nbcol], observation HAVING date=" & "'" & debut & "'"
rstCurr.Open strSQL, cnn, adOpenStatic, adLockPessimistic[/code] | |||||||
Publicité | ||||||||
| ||||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | ||||||||||||||||||
|