Excel Downloads
Forum

Précédent   Excel Downloads Forums > Archives > Forum Excel Downloads - Archives


 
 
LinkBack Outils de la discussion
Vieux 15/07/2004, 11h38   #1 (permalink)
Etudiant en détresse
Guest
 
Messages: n/a
Par défaut vba - filtre automatique - problème avec les dates

Salut à tous! Voilà je suis en stage pr mes études et il m'a été demandé de faire un programme VBA pr piloter excel. En fait, il faut que je traite les valeurs d'un fichier excel de la forme :
- colonne A : date de la mesure au format jj/mm/aaaa
- colonne B : heure de la mesure au format hh/mm/ss
- colonne C : mesure au format standard
en plus faut ke j'ai fini d'ici deux semaines... je suis mal!

il faut modéliser les valeurs pr des intervalles choisis par l'utilisateur, dc j'ai choisi de faire une boite de dialogue pr entrer les choix de l'utilisateur en mémoire, et après faire un filtre automatique... mais rien ne marche et je comprends rien!!!!
ca me tri rien... et en plus y a des pb de compatibilité jj/mm/aaaa et mm/jj/aaaa avec VBA...

voilà le programme ke j'ai fait,
Code:


Dim c1 As Date
Dim c2 As Date

Private Sub CommandButton1_Click()


TextBox1.Value = Format(TextBox1.Value, "dd/mm/yyyy")
TextBox2.Value = Format(TextBox2.Value, "dd/mm/yyyy")


If UserForm1.TextBox1.Text = "" Then
MsgBox "Vous n'avez rien saisi," & Chr(10) & "recommencez!"
Exit Sub

Else
TextBox1.Value = Format(TextBox1.Value, "dd/mm/yyyy")
Range("E1").Value = TextBox1.Value
ActiveCell.Offset(1, 0).Select
End If

If UserForm1.TextBox2.Text = "" Then
MsgBox "Vous n'avez rien saisi," & Chr(10) & "recommencez!"
Exit Sub

Else
TextBox2.Value = Format(TextBox2.Value, "dd/mm/yyyy")
Range("E2").Value = TextBox2.Value
ActiveCell.Offset(1, 0).Select
End If

Range("E1") = Format(Range("E1").Value, "dd/mm/yyyy")
Range("E2") = Format(Range("E2").Value, "dd/mm/yyyy")

c1 = Format(Range("E1").Value, "dd/mm/yyyy")
c2 = Format(Range("E2").Value, "dd/mm/yyyy")

Range("A:C").AutoFilter field:=1, Criteria1:=">=" & c1, Operator:=xlAnd, Criteria2:="<=" & c2
Sheets("Feuil1").AutoFilter.Range.Copy Sheets("Feuil2").Range("A1:C1")

Sheets("Feuil2").Range("1:1").Delete Shift:=xlShiftToLeft
Sheets("Feuil2").Columns("A").Delete Shift:=xlShiftToLeft


'Graphique
'Sheets("feuil2").Range("A1").EntireColumn.Special Cells(xlCellTypeConstants).Select
'Sheets("feuil2").Range("B1").EntireColumn.Special Cells(xlCellTypeConstants).Select

'Dim objChart As Chart, objRange As Range

' Set objRange = Worksheets("Feuil2").Range(Range("A1").EntireColum n.SpecialCells(xlCellTypeConstants), Worksheets("Feuil2").Range("B1").EntireColumn.Spec ialCells(xlCellTypeConstants))
' Set objChart = ThisWorkbook.Charts.Add
'objChart.ChartType = xlLine
' objChart.SetSourceData objRange, xlColumns

Unload Me

End Sub




Merci d'avance pour votre aide
j'espère que vous trouverez une solution à mon pb.... ++
 
ANNONCES
Vieux 15/07/2004, 23h53   #2 (permalink)
Ronan
Guest
 
Messages: n/a
Par défaut Re: vba - filtre automatique - problème avec les dates

Bonsoir,

La solution est toute trouvée.
Dans Excel, impossible de faire des filtres contenant des dates avec VBA.
La seule solution, est de convertir avant de faire le filtre, toute la colonne contenant les dates en numéro de série.
Puis, de convertir en numéro de série, également, la date saisie dans le textbox et de faire le filtre automatique.
Une fois le filtre exécuté, reformater les cellules au format date.
Et le tour est joué. Ni vu, ni connu, j't'embrouille.

Voici un exemple avec un tableau en A1:C21. Une colonne contenant des dates située dans la colonne A. Un userform nommé userform1, contenant un textbox nommé textbox1 et un bouton de commande nommé commandbutton1 :

Private Sub CommandButton1_Click()
Dim DateSaisie As Date
Dim NumDate As Long
If Me.TextBox1 = "" Then
Fin:
MsgBox "Aucune valeur saisie ou date erronée"
Me.TextBox1.Value = ""
Me.TextBox1.SetFocus
Exit Sub
End If
On Error GoTo Fin
DateSaisie = DateValue(Me.TextBox1.Value)
NumDate = DateSerial(Year(DateSaisie), Month(DateSaisie), Day(DateSaisie))
Range("a2:a" & Cells(65536, 1).End(xlUp).Row).NumberFormatLocal = "0"
Selection.AutoFilter Field:=1, Criteria1:=NumDate
Range("a2:a" & Cells(65536, 1).End(xlUp).Row).NumberFormatLocal = "jj/mm/aa"
End Sub

Private Sub UserForm_Initialize()
Range("a1").Select
Me.TextBox1.SetFocus
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Selection.AutoFilter Field:=1
Range("a2:a" & Cells(65536, 1).End(xlUp).Row).NumberFormatLocal = "jj/mm/aa"
End Sub

@+

Ronan
Fichiers attachés
Type de fichier : zip Classeur1.zip (9,2 Ko, 10 affichages)
 
Vieux 16/07/2004, 10h29   #3 (permalink)
Etudiant en détresse
Guest
 
Messages: n/a
Par défaut Re: vba - filtre automatique - problème avec les dates

Merci beaucoup ca marche super!



encore merci, maintenant je sais à qui m'adresser en cas de pb!
a+
 
Vieux 16/07/2004, 11h22   #4 (permalink)
@+Thierry
Guest
 
Messages: n/a
Par défaut Re: vba - filtre automatique - problème avec les dates

Bonjour Ronan, Xavier, le Forum

Je suis content que la solution proposée à Xavier lui convienne mais par contre je ne suis pas d'accord avec cette affirmation catégorique et un peu expéditive "Dans Excel, impossible de faire des filtres contenant des dates avec VBA."

Il n'y a qu'à faire quelques recherches sur ce Forum car c'est une question qui est revenue souvent de faire des AutoFilter sur un critère de date et même entre deux dates inclusives et où j'ai trouvé une solution "paliative" bien plus simple... Sans convertir tout le tableau en en numéro de série...

Bonne Journée
@+Thierry
 
ANNONCES
 

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 02h55.


(C) 2006 Excel Downloads