problème avec une macro qui recherche des dates dans une feuille

alain90

XLDnaute Junior
Bonjour à tous,

La macro suivante recherche dans une feuille(feuille 2) les dates plus petites ou égales à une date indiquée dans le textbox d'une boite de dialogue et copie la ligne trouvée dans une autre feuille (feuille1)
LA MACRO:
Private Sub CommandButton2_Click()
Dim WS As Variant
Dim Plage As Range
Dim Cherche, Adresse As String
Dim Ligne, Arrivee As Variant
Dim C As Object

Feuil1.Rows("7:65536").Delete
Cherche = TextBox1
Ligne = 7
If Cherche = "" Then Exit Sub
Range("F2").Value = Cherche

'
If IsDate(Cherche) Then
Range("F2").Value = " date < " & Format(CDate(Cherche), "dd/mm/yyyy")
Cherche = CDate(Cherche)
derligne = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row
For i = 3 To derligne
trouve = 0

If Sheets("Feuil2").Cells(i, "E").Value <= Cherche Then trouve = 1
If trouve = 1 Then
Worksheets("Feuil2").Range("a" & i & ":az" & i).Copy

Ligne = Feuil1.Range("" & "B" & "65536").End(xlUp).Row + 1
Range("B" & Ligne).PasteSpecial Paste:=xlValues
End If
Next
End If
...........

seulement , dans la colonne où elle recherche les dates il y a des cellules ou rien n'est inscrit et elle les prend je pense comme une date inférieure et cela je ne le veux pas : elle ne doit pas la prendre

J'ai essayé en mettant :
If Sheets("Feuil2").Cells(i, "E").Value = "" Then trouve = 0 (après Trouve=0)
mais ça ne marche pas

Pouvez -vous m'aider ??

En même temps je voudrais éliminer les dates inférieures dont l'année ne correspond pas avec l'année que saisit l'utilisateur ( exemple date inférieures au 30/03/2012 = 28/02/2012 ; 11/11/2011 etc... donc supprimer ligne du 11/11/2011 car 2011 ne correspond pas à l'année de la date indiquée 2012, autrement dit qu'elle ne prenne pas les dates antérieures au 01/01/année indiquée)

merci d'avance

Alain
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : problème avec une macro qui recherche des dates dans une feuille

Bonjour Alain, bonjour le forum,

Je pense que tu devrais t'en sortir plus facilement avec un filtre automatique. Avec un fichier exemple c'est plus facile...
 

alain90

XLDnaute Junior
Re : problème avec une macro qui recherche des dates dans une feuille

Bonjour le forum,

d'abord merci pour ta réponse , Robert, mais je voudrais une macro
Je joins le fichier, épuré certes, mais où l'on trouve la macro dans le USERFORM3
Mon problème reste le m^me et je voudrais bien avoir la solution
merci d'avance et excusez moi pour cette insistance

Alain
 

Pièces jointes

  • test-1ES.xls
    744 KB · Affichages: 67
  • test-1ES.xls
    744 KB · Affichages: 74
  • test-1ES.xls
    744 KB · Affichages: 75

camarchepas

XLDnaute Barbatruc
Re : problème avec une macro qui recherche des dates dans une feuille

Bonjour alain90,

Voici ton code un peu remodelé, comme j'ai pas le reste du code , j'ai enlevé tous ce qui servait pas

Je sais pas si tu as des date future , mais la aussi , elle seront filtrées

Code:
Dim Ligne As Long, Derligne As Long, I As Long
Dim Cherche As String, DateLue As String
Dim EcartJour As Long, EcartAn As Long
Dim Données As Variant

 Ligne = 7
 Feuil1.Rows(Ligne & ":65536").Delete
 Cherche = TextBox1.Text
 If Cherche <> "" Then Cherche = CDate(Cherche) Else Exit Sub

 If IsDate(Cherche) Then
  Range("F2").Value = " date < " & Format(Cherche, "dd/mm/yyyy")
  Derligne = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row
  For I = 3 To Derligne
    DateLue = Sheets("Feuil2").Cells(I, "E").Value
    If DateLue <> "" Then
     EcartJour = DateDiff("d", Cherche, DateLue)
     EcartAn = DateDiff("yyyy", "01/01/" & Year(Cherche), DateLue)
     If EcartJour < 0 And EcartAn >= 0 Then
       Ligne = Feuil1.Range("" & "B" & "65536").End(xlUp).Row + 1
       Données = Worksheets("Feuil2").Range("a" & I & ":az" & I)
       Range("B" & Ligne).Resize(1, UBound(Données, 1)) = Données
     End If
    End If
  Next
 End If
 

alain90

XLDnaute Junior
Re : problème avec une macro qui recherche des dates dans une feuille

merci mais j'ai un petit problème
la macro ne recopie pas toutes les données de la ligne trouvée mais seulement une colonne, la première soit dans le fichier joint : 2008

merci pour des éclaircissements

Alain
 

camarchepas

XLDnaute Barbatruc
Re : problème avec une macro qui recherche des dates dans une feuille

Alain90,

Je n'avais pas vu ton fichier , donc pas testé , Désolé

Modif à faire :

Range("B" & Ligne).Resize(1, UBound(Données, 1) ) = Données

modifier en

Range("B" & Ligne).Resize(1, UBound(Données, 2) ) = Données
 

alain90

XLDnaute Junior
Re : problème avec une macro qui recherche des dates dans une feuille

merci, merci carmarchepas

ça fonctionne et je suis content
Serais-ce trop te demandé si tu pouvai m'expliquer les 3 lignes suivantes car je ne les comprend pas

EcartJour = DateDiff("d", Cherche, DateLue)
EcartAn = DateDiff("yyyy", "01/01/" & Year(Cherche), DateLue)
If EcartJour < 0 And EcartAn >= 0 Then
et notamment DateDiff et le "d"

Excuse-moi pour mon insistance mais je voudrais bien savoir

merci, encore merci

Alain
 

camarchepas

XLDnaute Barbatruc
Re : problème avec une macro qui recherche des dates dans une feuille

Alain,

EcartJour = DateDiff("d", Cherche, DateLue)
Datediff est une instruction très performante qui permet de connaitre l'écart entre 2 dates en choisissant l'unité, ici "d" pour jour

EcartAn = DateDiff("yyyy", "01/01/" & Year(Cherche), DateLue)
ici "YYYY" pour année

If EcartJour < 0 And EcartAn >= 0 Then
et notamment DateDiff et le "d"

et donc si l'écart de jour est inférieur à 0 c'est que la datelue est plus vieille que la date cherche de plus d'un jour
et que l'écart en année est >= 0 pour autoriser toutes les années égale à l'année en cours et même future , si l'on ne veut que l'année courante , il faudrait mettre strictement =

Voilà , j'espére avoir été clair.
 

alain90

XLDnaute Junior
Re : problème avec une macro qui recherche des dates dans une feuille

Camarchepas
Merci pour ta gentillesse
J'ai compris ton explication
Mais voilà je deviens fou (plus de 4 heures passées) et toujours pareil rien
J'ai adapté , a coup sur mal, ta solution sur mon fichier final ( "VALIDER1" Userform1)
En fait je recherche à afficher en feuille 3 tous les redressements judiciaires antérieures au 31/12/2012 de l'année 2012 figurant sur la feuille 2
Je te joins le fichier et s'il te plait essaie de me donner une solution car il faut absolument que ce fichier soit pret pour demain matin

merci d'avance, moi je n'en peux plus de chercher la dessus

merci pour ton aide

Alain
 

camarchepas

XLDnaute Barbatruc
Re : problème avec une macro qui recherche des dates dans une feuille

Alain ,

a priori cela doit allez mieux ,

en fait sur les lignes de détection de dernieres colonnes , la colonne de référence était A alors que cette colonne est pleine de trous dans ton fichier réel., j'ai donc modifié pour tester sur la colonne B ou le patronyme est toujours présent.

A oui , prends le zip , puis supprimes le car il y a des infos à ne pas laisser sur le forum.
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : problème avec une macro qui recherche des dates dans une feuille

Alain ,

Enlève le sur le post 9 grace à modifier le message puis gérer pieces jointes,

Dès que se sera fait , je considère que tu as également récupéré le fichier modifié et j'enleverais sur le post 10 . Tu peux juste ajouter que le fichier a été retiré suite à infos confidentielles car , la solution est en amont sur les autres fichiers donc tu ne casses pas l'information.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 634
Messages
2 111 427
Membres
111 133
dernier inscrit
dominique001