Salut;
Es que vous pouvez me dire comment faire pour lancer une requête
Microsoft access avec deux paramètres [date début];[date fin] à partir
de Microsoft Excel svp jai besoin de trouver la solution
Merci
Nb: je t'aperai [date début] et [date fin] sur deux cellules Excel
--
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Steph_D
Bonjour,
Comme ceci (à adapter)
' Nom de la base de données --> MesDATAS.mdb ' Requête SQL définie dans la macro ' Le classeur doit être dans le même dossier que la base d'access ' Référencer Microsoft ActiveX Data Objects 2.6 Library (menu Outils/Référence)
Sub ImporteMesLignes()
Dim MesDonneesAccess As ADODB.Recordset Dim MaConnexionBase As String Dim MonScript As String Dim intColIndex As Integer Dim MaDateDebut, MaDateFin As String
' Critères à définir pour ma requête SQL MaDateDebut = CDate(InputBox("Saisir la date de début :")) MaDateFin = CDate(InputBox("Saisir la date de fin :"))
' Crée la chaine de connexion. Nom de l'ADO, le chemin et la base de données ' 3.51 pour access95 et 97, 4.0 pour access 2000 MaConnexionBase = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source= " & PathMyApplication & "MesDatas.mdb;"
' Crée la requête SQL MonScript = "select ... WHERE FACTURATION_DEBUT Between #" & MaDateDebut & "# And #" & MaDateFin & "#" & _ "ORDER BYFACTURES.CODE_TYPE_FACTURATION;"
' Crée l'objet Recordset et exécute la requête Set MesDonneesAccess = New ADODB.Recordset MesDonneesAccess.Open MonScript, MaConnexionBase, adLockReadOnly, adLockReadOnly, adCmdText
Application.StatusBar = "Lancement de la requête Factures ... Soyez patient ;oppp !!!"
' On s'assure qu'il y a des enregistrements à récupérer If Not MesDonneesAccess.EOF Then ' Mise en place des noms de champs comme entêtes de colonne For intColIndex = 0 To MesDonneesAccess.Fields.Count - 1 TargetRange.Offset(0, intColIndex).Value MesDonneesAccess.Fields(intColIndex).Name Next ' Vide le contenu du jeu d'enregistrements dans la feuille de calcul Excel Application.StatusBar = "Extraction des enregistrements ..." TargetRange.Offset(1, 0).CopyFromRecordset MesDonneesAccess Nbrecords = Sheets("Feuil1").Range("A65536").End(-4162).Row - 1 MsgBox "Import de " & Nbrecords & " enregistrement(s) ..." Else MsgBox "Il n'y a aucun enregistrement correspondant.", vbInformation End If
' Ferme le jeu d'enregistrements s'il est toujours ouvert ... If CBool(MesDonneesAccess.State And adStateOpen) Then MesDonneesAccess.Close Set MesDonneesAccess = Nothing
Application.StatusBar = ""
GestionErr: If Err = 13 Then MsgBox "vous avez oublié de saisir une des deux dates ou le format de date n'est pas correct ! Recommencez !!!" Exit Sub End If End Sub
Bonjour,
Comme ceci (à adapter)
' Nom de la base de données --> MesDATAS.mdb
' Requête SQL définie dans la macro
' Le classeur doit être dans le même dossier que la base d'access
' Référencer Microsoft ActiveX Data Objects 2.6 Library (menu
Outils/Référence)
Sub ImporteMesLignes()
Dim MesDonneesAccess As ADODB.Recordset
Dim MaConnexionBase As String
Dim MonScript As String
Dim intColIndex As Integer
Dim MaDateDebut, MaDateFin As String
' Critères à définir pour ma requête SQL
MaDateDebut = CDate(InputBox("Saisir la date de début :"))
MaDateFin = CDate(InputBox("Saisir la date de fin :"))
' Crée la chaine de connexion. Nom de l'ADO, le chemin et la base de
données
' 3.51 pour access95 et 97, 4.0 pour access 2000
MaConnexionBase = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source= " & PathMyApplication &
"MesDatas.mdb;"
' Crée la requête SQL
MonScript = "select ... WHERE FACTURATION_DEBUT Between #" &
MaDateDebut & "# And #" & MaDateFin & "#" & _
"ORDER BYFACTURES.CODE_TYPE_FACTURATION;"
' Crée l'objet Recordset et exécute la requête
Set MesDonneesAccess = New ADODB.Recordset
MesDonneesAccess.Open MonScript, MaConnexionBase, adLockReadOnly,
adLockReadOnly, adCmdText
Application.StatusBar = "Lancement de la requête Factures ... Soyez
patient ;oppp !!!"
' On s'assure qu'il y a des enregistrements à récupérer
If Not MesDonneesAccess.EOF Then
' Mise en place des noms de champs comme entêtes de colonne
For intColIndex = 0 To MesDonneesAccess.Fields.Count - 1
TargetRange.Offset(0, intColIndex).Value MesDonneesAccess.Fields(intColIndex).Name
Next
' Vide le contenu du jeu d'enregistrements dans la feuille de
calcul Excel
Application.StatusBar = "Extraction des enregistrements ..."
TargetRange.Offset(1, 0).CopyFromRecordset MesDonneesAccess
Nbrecords = Sheets("Feuil1").Range("A65536").End(-4162).Row - 1
MsgBox "Import de " & Nbrecords & " enregistrement(s) ..."
Else
MsgBox "Il n'y a aucun enregistrement correspondant.",
vbInformation
End If
' Ferme le jeu d'enregistrements s'il est toujours ouvert ...
If CBool(MesDonneesAccess.State And adStateOpen) Then
MesDonneesAccess.Close
Set MesDonneesAccess = Nothing
Application.StatusBar = ""
GestionErr:
If Err = 13 Then
MsgBox "vous avez oublié de saisir une des deux dates ou le format
de date n'est pas correct ! Recommencez !!!"
Exit Sub
End If
End Sub
' Nom de la base de données --> MesDATAS.mdb ' Requête SQL définie dans la macro ' Le classeur doit être dans le même dossier que la base d'access ' Référencer Microsoft ActiveX Data Objects 2.6 Library (menu Outils/Référence)
Sub ImporteMesLignes()
Dim MesDonneesAccess As ADODB.Recordset Dim MaConnexionBase As String Dim MonScript As String Dim intColIndex As Integer Dim MaDateDebut, MaDateFin As String
' Critères à définir pour ma requête SQL MaDateDebut = CDate(InputBox("Saisir la date de début :")) MaDateFin = CDate(InputBox("Saisir la date de fin :"))
' Crée la chaine de connexion. Nom de l'ADO, le chemin et la base de données ' 3.51 pour access95 et 97, 4.0 pour access 2000 MaConnexionBase = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source= " & PathMyApplication & "MesDatas.mdb;"
' Crée la requête SQL MonScript = "select ... WHERE FACTURATION_DEBUT Between #" & MaDateDebut & "# And #" & MaDateFin & "#" & _ "ORDER BYFACTURES.CODE_TYPE_FACTURATION;"
' Crée l'objet Recordset et exécute la requête Set MesDonneesAccess = New ADODB.Recordset MesDonneesAccess.Open MonScript, MaConnexionBase, adLockReadOnly, adLockReadOnly, adCmdText
Application.StatusBar = "Lancement de la requête Factures ... Soyez patient ;oppp !!!"
' On s'assure qu'il y a des enregistrements à récupérer If Not MesDonneesAccess.EOF Then ' Mise en place des noms de champs comme entêtes de colonne For intColIndex = 0 To MesDonneesAccess.Fields.Count - 1 TargetRange.Offset(0, intColIndex).Value MesDonneesAccess.Fields(intColIndex).Name Next ' Vide le contenu du jeu d'enregistrements dans la feuille de calcul Excel Application.StatusBar = "Extraction des enregistrements ..." TargetRange.Offset(1, 0).CopyFromRecordset MesDonneesAccess Nbrecords = Sheets("Feuil1").Range("A65536").End(-4162).Row - 1 MsgBox "Import de " & Nbrecords & " enregistrement(s) ..." Else MsgBox "Il n'y a aucun enregistrement correspondant.", vbInformation End If
' Ferme le jeu d'enregistrements s'il est toujours ouvert ... If CBool(MesDonneesAccess.State And adStateOpen) Then MesDonneesAccess.Close Set MesDonneesAccess = Nothing
Application.StatusBar = ""
GestionErr: If Err = 13 Then MsgBox "vous avez oublié de saisir une des deux dates ou le format de date n'est pas correct ! Recommencez !!!" Exit Sub End If End Sub