Filtrer entre deux dates dans LibreOffice calc
Bonjour
Je retourne a vous pour demander votre aide et Merci avant tout.
J'ai crée un fichier LibreOffice calc(ci-joint) pour suivi des Entrees et Sorties d'un Compte.
je veux filtrer entre deux dates choisies dans la colonne A de la feuille nommée "Compte"; ces 2 dates sont écrites au préalale dans les cellules "I2''; Date de Debut et "I3"; Date de Fin. avec leur limites affichees par formules Date Min et Date Max de la colonne A; dans les cellules "K2" eT "K3".
Le résultat sera envoye vers la feuille nommee "Relevé" par clic sur le bouton de commande vert nommé "FiltrerEntre2Dates;cliquerICI "
Abdu.
Hello,
voici une solution en utilisant des plages nommées et un balayage des données Source en Basic :
Sub FiltreDates()
Dim oSource As Object, oDest As Object, oTableSrc As Object, oTableDest As Object
Dim i As Integer, j As Integer, k as Integer
Dim mondocument As Object, dateDebut, dateFin
monDocument = ThisComponent
oSource = monDocument.Sheets.getByName("Compte")
oDest = monDocument.Sheets.getByName("Relevé")
dateDebut = monDocument.NamedRanges.getByName("dateDébut").getReferredCells().getCellByPosition(0, 0).getValue()
dateFin = monDocument.NamedRanges.getByName("dateFin").getReferredCells().getCellByPosition(0, 0).getValue()
oTableSrc = monDocument.NamedRanges.getByName("DataSrc").getReferredCells() ' données de départ
oTableDest = monDocument.NamedRanges.getByName("DataDest").getReferredCells() ' table de destination
oTableDest.clearContents(7) 'Effacement table destination
k=0
For i = 0 To oTableSrc.Rows.Count - 1
if oTableSrc.getCellByPosition(0, i).getValue() >= datedebut And _
oTableSrc.getCellByPosition(0, i).getValue() <= datefin then
For j = 0 To oTableSrc.Columns.Count - 1
if oTableSrc.getCellByPosition(j, i).getType() = com.sun.star.table.CellContentType.TEXT then
oTableDest.getCellByPosition(j,k).String = oTableSrc.getCellByPosition(j, i).getString()
else
oTableDest.getCellByPosition(j, k).Value = oTableSrc.getCellByPosition(j, i).getValue()
end if
Next j
k=k+1
end if
Next i
ThisComponent.CurrentController.setActiveSheet oDest
End SubJ'ai essayé une autre méthode en passant par un filtre mais cela ne fonctionne pas car tu as des formules qui dépendent de la ligne précédente qui dans un filtre n'est pas forcément la bonne.
Pour poser des questions concernant LibreOffice ou OpenOffice , tu as intérêt à utiliser un autre forum (par exemple forum.openoffice.org/fr) parce qu'ici cela n'a pas l'air d'intéresser grand monde vu le peu de réponse quand une question est posée.
Ami calmant, J.P
Bonjour "Jurassic Ami calmant, J.P"
Merci pour ta reponse ton aide et conseil.
Je vais voir et te repondrais, je vais verifie. A1ere vue j'ai constate le format de la date pas celle en jj/mm/aaaa
Mais cela n'est pas un grand probleme je vais me debrouiller.
Abdu
Bonjour
J'ai fait une petite modif sur une macro VBA Excel;sans la convertir en VB calc où je l'ai collée.
Elle est plus rapide et marche bien.
Cordialement