Aide pour realiser une macro de tri entre deux date

bonjour a tous

je debute en vba et j'ai énormément de mal à compiler une macro qui a pour but d'afficher des valeurs entre deux dates

dans ma feuille2, j'ai en colonne A des dates, en colonne B des valeurs (il peut y a voir plusieurs valeurs pour chaque jour)

dans ma feuille1 en case A3 je choisi la date de debut, en case B3 je choisi la date de fin dans une liste déroulante

En feuille3, je veux que les données (date et valeur) issus de la feuille2 et correspondant entre la date de début en A3 et la date de fin en B3 soient recopier sur la feuille3.

j'ai commencé une macro, mais je suis pas satisfait

je vous remercie

en pj: le fichier xlsm

112essai.xlsm (20.35 Ko)

Bonjour Tain le forum

tu as raison de ne pas être content de la macro !!!!

Voilà ton fichier en retour teste et redis moi

a+

Papou

328tain-v1.xlsm (20.67 Ko)

Salut le forum

Extraction en utilisant le filtre avancé

Sub Extraction()

' Extraction entre deux dates
' Critères de dates     - Feuil1
' Base de données       - Feuil2
' Extraction            - Feuil3

Sheets("Feuil3").Range("A1").CurrentRegion.Clear

  With Sheets("Feuil2")
    .Range("E2").Formula = _
        "=AND(Feuil2!A1>=Feuil1!A3,Feuil2!A1<=Feuil1!B3)"
    .Range("A1:B" & .Cells(Rows.Count, 1).End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=.Range("E1:E2"), CopyToRange:=Sheets("Feuil3").Range("A1"), _
            Unique:=False
    .Range("E2") = ""
  End With

End Sub

Mytå

bonjour a tous

je voudrais ouvrir le fichier que vous m'avez transmit or le pc où je suis a excel2003, et ca plante!

j'ai open office sinon sur le meme pc

merci

Re le forum

Tain. tu es dans la section du Forum Excel - VBA

La section pour Open Office c'est Calc

Mytå

bonsoir

j'ai refait le fichier sous Excel2003

la macro tourne pas rond, car la premiere date et dernière date retournée ne sont pas souhaité (en case A3 et B3) (voir pj)

dernier point, etant totalement debutant (et nul) en vba, quel bouquin me conseillez vous pour bien débuter

merci

102tain-tri.zip (8.47 Ko)

Re le forum

Pour ne pas inclure les dates saisies, il suffit d'enlever la condition égale dans la macro.

Et n'oublie pas que la ligne 1 de ton tableau doit contenir les titres des colonnes.

Remplace

        "=AND(Feuil2!A1>=Feuil1!A3,Feuil2!A1<=Feuil1!B3)"

Par

        "=AND(Feuil2!A1>Feuil1!A3,Feuil2!A1<Feuil1!B3)"

Mytå

Re

vous parlez de la 1ere ligne de la feuille2?

Dans ce cas, je suis dans l'impossibilité de nommer la 1ere ligne, car cette feuille est généré automatique de cette facon

la macro ne marche pas

elle me retourne toujours la 1ere date de la feuille 2 et me zappe les donnes des dates demandés en A3 et B3 (voir pj)


il ne faut pas oublier qu'il y a des fois plusieurs mesures le même jour (1, 2 3....) et qu'il faut toute les retourner

160tain-tri.zip (8.27 Ko)

Re le forum

Il faut déjà que tu sélectionnes autre chose pour les dates

La macro tourne pas rond, car la premiere date et dernière date retournée ne sont pas souhaité

date debut 2010-11-17

date fin 2010-11-18

Mytå

je vois pas pourquoi ces dates posent problèmes?

je demande a avoir en retour les données enregistrer entre le 17/11 inclus et 18/11 inclus

en retour j'ai les données du 21/10 ; 17/11 ; 18/11 ; 19/11

les donnes issues de la ligne (i-1) avant la date de debut et de la ligne (i+1) après la date de fin sont de trop en retour

merci

Bonsoir à tous, bonsoir Mytå,

je suis dans l'impossibilité de nommer la 1ere ligne, car cette feuille est généré automatique de cette facon

Les en-têtes sont indispensables sur la BDD (Feuil2),

dans ce cas, la macro génère cette ligne et la supprime à la fin.

Sub Extraction()

' Extraction entre deux dates
' Critères de dates     - Feuil1
' Base de données       - Feuil2
' Extraction            - Feuil3

Sheets("Feuil3").Range("A1").CurrentRegion.Clear

  With Sheets("Feuil2")
    Application.CutCopyMode = False
    .Rows(1).Insert                                                 'en-tête
    .Range("a1") = "date"                                           'en-tête
    .Range("b1") = "valeur"                                         'en-tête
    .Range("E2") = "=AND(a2>=Feuil1!A3,a2<=Feuil1!B3)"              'critères

    .Range("A1:B" & .Cells(Rows.Count, 1).End(xlUp).Row) _
    .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    .Range("E1:E2"), CopyToRange:=Sheets("Feuil3").Range("a1:b1"), Unique:=False
    .Range("E2") = ""
    .Rows(1).Delete
  End With
End Sub

Amicalement

Claude

64tain-filtredate.zip (15.25 Ko)

malheureusement, je ne vois pas comment mettre des entêtes en Feuil2

cette feuille est mis a jour quotidiennement sous cette forme, et on ne peut la changer

En tout cas votre Macro à l'air de tourner correctement et je vous remercie

PS: Connaissez vous un bon livre pouvant me faire progresser en vba (je démarre de zero!)

encore merci à tout le forum

re,

malheureusement, je ne vois pas comment mettre des entêtes en Feuil2

c'est ce que je disais + haut, la macro s'en charge,

donc, tu ne t'en occupe pas !

Claude

Re le forum

tain² a écrit :

Connaissez vous un bon livre pouvant me faire progresser en vba (je démarre de zero!)

Pas besoin de livre, utilise l'enregistreur de macro et la touche F1.

Pose des questions sur le forum pour les incompréhensions.

Si ton problème est solutionné, il ne faut pas oublier de le faire passer en [Résolu]

file.php id 18923

Mytå

Bonjour Tain le forum

erreur !!!

papou

Bonjour Tain le forum

erreur !!!

papou

?? quelle erreur?

bonjour, il est vrai qu'en VBA il y aura certainement une solution. Ne sachant pas programmer, j'ai essayé avec un TCD (Tableau Croisé Dynamique) et en utilisant les filtres, il me semble que l'on peut arriver à trouver une solution.

j'espère ne pas dire de bétise.

Francky

Bonjour,

je trouve cette macro très intéressante et j'aimerai la réutilisé

dans le fichier elle extrait les 2 colonnes et moi j'aimerai en extraire 5 je ne vois pas comment faire

pouvez vous m'aider

Sub Extraction()

' Extraction entre deux dates
' Critères de dates     - Feuil1
' Base de données       - Feuil2
' Extraction            - Feuil3

Sheets("Feuil3").Range("A1").CurrentRegion.Clear

  With Sheets("Feuil2")
    Application.CutCopyMode = False
    .Rows(5).Insert                                                 'en-tête
    .Range("a1") = "date"                                           'en-tête
    .Range("b1") = "Designation"                                    'en-tête
    .Range("c1") = "valeur"                                         'en-tête
    .Range("E2") = "=AND(a2>=Feuil1!A3,a2<=Feuil1!B3)"              'critères

    .Range("A1:B" & .Cells(Rows.Count, 5).End(xlUp).Row) _
    .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    .Range("E1:E2"), CopyToRange:=Sheets("Feuil3").Range("a1:b1"), Unique:=False
    .Range("E2") = ""
    .Rows(1).Delete
  End With
End Sub
Rechercher des sujets similaires à "aide realiser macro tri entre deux date"