Extraction de donnée d'une date à une autre
Bonjour à tous,
Je reviens vers vous pour une énième question :
J'ai coder mon UserForm pour qu'il fasse une extraction de donnée d'un classeur fermé. Dans mon code, il va chercher le fichier, puis il va extraire les données des colonnes que j'ai choisi sous forme de ListBox. Jusqu'ici mon code marche très bien.
Maintenant, je voudrais rajouter des lignes pour qu'il extrait les données d'une date allant d'aujourd'hui à 7 jours en arrière.
mon code est le suivant :
Private Sub userform_initialize()
Dim Datedebut As Date
Dim Datefin As Date
Dim i As Integer
Dim Temp As Date
Datedebut = Format(Now, "dd/mm/yyyy")
Datefin = Format(Now - 7, "dd/mm/yyyy")
Temp = Datedebut
While Temp < Datefin
'Dim cnn As ADODB.Connection
'Microsoft ActiveX DataObject doit être coché
'BD est le nom de l'onglet ou se trouve le tableau à récupérer
Set cnn = New ADODB.Connection
With CreateObject("ADODB.Connection")
.Open = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\Outils_Pointage\Ressources\Recapitulatif_general.xlsm ;Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"""
Me.ListBox1.List = Application.Transpose(.Execute("SELECT [Date],[OS],[UO],[Préparateur],[Etat du dossier],[Temps Réalisé] FROM [Données_à_extraire$A1:AA65000]").GetRows)
.Close
Me.ListBox1.ColumnCount = 6
Me.ListBox1.ColumnWidths = "80;120;120;120;120;120"
End With
Wend
End Sub
Comme vous pouvais le voir j'ai déja commencé en y mettant les variable mais rien n'y fait il ne m'affiche plus rien. Mon UserForm s'ouvre bien mais les données ne s'affichent plus du tout...
Merci pour votre aide
Bonne journée.
Bonjour Cac0,
A essayer:
Datedebut = CLng(Now()))
Datefin = CLng(Now())-7)
While Datedebut < Datefin
C'est normal "Datedebut " est toujours inférieur à "Datedefin",
Sub test()
Dim Datedebut As Long
Dim Datefin As Long
Datedebut = CLng(Now())
Datefin = CLng(Now()) - 7
While Datefin < Datedebut
MsgBox ("Date: " & CDate(Format(Datefin, dddd)))
Datefin = Datefin + 1
Wend
End Sub
Merci,
Ton code marche mais ce n'est- pas ce que j'attendais puisque il me mets juste des message box m'indiquant la date d'il y a 6 jours jusqu'a maintenant, puis ensuite il m'affiche mon extraction ahah
Du coup si tu as une alternative je suis preneuse
Le code que je t'ai fournis n'est qu'un exemple maintenant a toi de mettre ce que tu souhaites dedans.
Merci, mais ton code ne me permet en aucun cas d'extraire mes données d'une date de début a une date de fin ?
Je veux dire même en m'aidant de ce que tu m'as envoyé ?
En ayant vu ton code de ton 1er post celui ci avait une erreur , a aucun moment tu ne rentrait dans ta boucle, je te propose une solution pour cela.
Maintenant pour ton extraction, comment veux tu que l'on t'aide, tu ne fournis même pas un fichier, car j'imagine que tu travaille avec 2 fichiers .
Que veux tu extraire? Ou ? depuis quel fichier ?
Si tu souhaites une résolution de ton problème, il faudrait à mon sens plus d'explications et matière à travailler, car sans fichier c'est travailler dans le vide
En ayant vu ton code de ton 1er post celui ci avait une erreur , a aucun moment tu ne rentrait dans ta boucle, je te propose une solution pour cela.
Maintenant pour ton extraction, comment veux tu que l'on t'aide, tu ne fournis même pas un fichier, car j'imagine que tu travaille avec 2 fichiers .
Que veux tu extraire? Ou ? depuis quel fichier ?
Si tu souhaites une résolution de ton problème, il faudrait à mon sens plus d'explications et matière à travailler, car sans fichier c'est travailler dans le vide
Et bien justement, dans mon code d'extraction (qui marche tout seul), tu peux voir que je prends un classeur fermé grâce au chemin "outilPointage\Ressource ...." Ensuite dans mon code je sélectionne les colonnes nommées "Date, os,uo " ... du classeur fermé, qui vienne de la feuille "Donnée à extraire" , pour mettre tout ca sous forme de liste box dans mon UserForm.
Tout est marqué dans mon code
Mon problème étant qu'il extrait vraiment toute les lignes de mon classeur fermé, mais moi j'aimerai qu'il prenne que les lignes se trouvant entre la date aujourd'hui et 7 jours avant.
Bonjour à tous,
Voici une proposition.
Dans le fichier code_générique.txt, du code générique ADO pour se connecter à tout xls*
Ce code est à copier/coller tel quel dans un module ordinaire quelconque de ton projet.
Dès lors le code du Userform_Initialize devient simple :
Private Sub Userform_Initialize()
Dim Requete As String
Requete = "SELECT `Date`,`OS`,`UO`,`Préparateur`,`Etat du dossier`,`Temps Réalisé` " & _
" FROM [Données_à_extraire$A:AA]" & _
" WHERE `Date` BETWEEN " & (Now - 7) & " AND " & Now
Connect_Xls "F:\Outils_Pointage\Ressources\Recapitulatif_general.xlsm"
With Me.ListBox1
.List = Select_Db(Req, 1)
.ColumnCount = 6
.ColumnWidths = "80;120;120;120;120;120"
End With
Close_Cnx
End Sub
Pierre
Bonjour à tous,
Voici une proposition.
Dans le fichier code_générique.txt, du code générique ADO pour se connecter à tout xls*
Ce code est à copier/coller tel quel dans un module ordinaire quelconque de ton projet.
Dès lors le code du Userform_Initialize devient simple :
Private Sub Userform_Initialize() Dim Requete As String Requete = "SELECT `Date`,`OS`,`UO`,`Préparateur`,`Etat du dossier`,`Temps Réalisé` " & _ " FROM [Données_à_extraire$A:AA]" & _ " WHERE `Date` BETWEEN " & (Now - 7) & " AND " & Now Connect_Xls "F:\Outils_Pointage\Ressources\Recapitulatif_general.xlsm" With Me.ListBox1 .List = Select_Db(Req, 1) .ColumnCount = 6 .ColumnWidths = "80;120;120;120;120;120" End With Close_Cnx End Sub
Pierre
Bonjour, merci pour ta réponse
Lorsque je mets le code que tu m'as donner, il ne compile pas.... j'ai donc fais F8 pour voir et voila ce que ca me donne :
Ce message s'affiche pour le mot "Req"
Merci !