XL 2010 Fonction Find is nothing

Izbeul

XLDnaute Nouveau
Bonjour,

J'avoue ne pas comprendre. J'ai lu sur pleins de forums (dont celui-ci) mais en vain.
J'ai une fonction Find dans mon code qui me renvoie toujours "nothing" et du coup, plus rien ne va dans la suite.

Le fait est que je lui demande de trouver deux dates prises dans la feuille "Stabilité_Pilote", dans la feuille "Sauvegarde_DCS" colonne A. J'ai appliqué le même format date aux deux dates et à toute la colonne A. J'ai déclaré mes range avec des Set. Bref j'ai fait "la totale" à mon niveau. Mais toujours ce "nothing".

So, please! help me! SOS

VB:
Sub Suivi_Tests()


Dim DateFinPer As Date
Dim DateDebutPer As Date
Dim rngDate1 As Range, rngDate2 As Range

Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction


Application.Worksheets("Stabilité_Pilote").Select
DateFinPer = Sheets("Stabilité_Pilote").Range("H5")
DateDebutPer = Sheets("Stabilité_Pilote").Range("H4")

    If DateDebutPer > DateFinPer Then
        MsgBox "La date de début de période doit être antérieure à celle de fin de période"
        GoTo derniereligne

    End If

Application.Worksheets("Sauvegarde_DCS").Select

    With Worksheets("Sauvegarde_DCS").Range("A3:A40000")

   Set rngDate1 = Sheets("Sauvegarde_DCS").Range("A3:A40000").Find(DateDebutPer)
   Set rngDate2 = Sheets("Sauvegarde_DCS").Range("A3:A40000").Find(DateFinPer)
  
   If rngDate1 Is Nothing And rngDate2 Is Nothing Then
        MsgBox "Aucune donnée correspondante aux dates spécifiées n'a été extraite"
   Exit Sub

   Else:
  
        If rngDate1 Is Nothing Then
            MsgBox "Les données correspondantes à la date de début spécifiée n'ont pas été extraites"
        Exit Sub
  
   Else:
        If rngDate2 Is Nothing Then
            MsgBox "Les données correspondantes à la date de fin spécifiée n'ont pas été extraites"
        Exit Sub
        
   Else:
        
        End If
    End If
End If

End With
 
Solution
Bonjour Izbeul, fanch55,

Utiliser la méthode Find ici ne va pas, il faut une autre méthode.

Par exemple le filtre automatique :
VB:
Sub Rechercher()
Dim deb, fin
With Sheets("Stabilité_Pilote")
    deb = .[H4]
    fin = .[H5]
End With
If Not IsDate(deb) Or Not IsDate(fin) Or deb > fin Then MsgBox "Les dates en H4 et H5 sont à revoir !", 48: Exit Sub
With Sheets("Sauvegarde_DCS")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    .UsedRange.Columns(1).AutoFilter 1, Criteria1:=">=" & CLng(deb), Operator:=xlAnd, Criteria2:="<=" & CLng(fin)
    .Activate 'facultatif
End With
End Sub

Sub RAZ()
With ActiveSheet
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
End With
End Sub
Je joins un fichier...

fanch55

XLDnaute Barbatruc
Bonjour testez ce code :
VB:
Sub Suivi_Tests()

Dim DateFinPer As Date
Dim DateDebutPer As Date
Dim rngDate1 As Range, rngDate2 As Range

    DateFinPer = CDate(Sheets("Stabilité_Pilote").[H5])
    DateDebutPer = CDate(Sheets("Stabilité_Pilote").[H4])

    If DateDebutPer > DateFinPer Then
        MsgBox "La date de début de période doit être antérieure à celle de fin de période"
    Else
        With Worksheets("Sauvegarde_DCS").Range("A3:A40000")
          .Parent.Activate
          
          Set rngDate1 = .Find(DateDebutPer, After:=.Cells(1), SearchOrder:=xlByRows)
          Set rngDate2 = .Find(DateFinPer, After:=.Cells(1), SearchOrder:=xlByRows)
          
          Select Case True
          Case rngDate1 Is Nothing And rngDate2 Is Nothing
              MsgBox "Aucune donnée correspondante aux dates spécifiées n'a été extraite"
          Case rngDate1 Is Nothing
              MsgBox "Les données correspondantes à la date de début spécifiée n'ont pas été extraites"
          Case rngDate2 Is Nothing
              MsgBox "Les données correspondantes à la date de fin spécifiée n'ont pas été extraites"
          Case Else
             MsgBox "Plage trouvée:" & Range(rngDate1, rngDate2).Address
          End Select
          
        End With
    End If
        
End Sub
 

job75

XLDnaute Barbatruc
Bonjour Izbeul, fanch55,

Utiliser la méthode Find ici ne va pas, il faut une autre méthode.

Par exemple le filtre automatique :
VB:
Sub Rechercher()
Dim deb, fin
With Sheets("Stabilité_Pilote")
    deb = .[H4]
    fin = .[H5]
End With
If Not IsDate(deb) Or Not IsDate(fin) Or deb > fin Then MsgBox "Les dates en H4 et H5 sont à revoir !", 48: Exit Sub
With Sheets("Sauvegarde_DCS")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    .UsedRange.Columns(1).AutoFilter 1, Criteria1:=">=" & CLng(deb), Operator:=xlAnd, Criteria2:="<=" & CLng(fin)
    .Activate 'facultatif
End With
End Sub

Sub RAZ()
With ActiveSheet
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
End With
End Sub
Je joins un fichier exemple, ce qui aurait dû être fait dès le post #1.

A+
 

Pièces jointes

  • Rechercher dates(1).xlsm
    20.9 KB · Affichages: 7

fanch55

XLDnaute Barbatruc
Re,
Bonjour Job75,
Ne sachant pas la configuration de la feuille Sauvegarde_DCS ( nombre de tables, colonnes utilisées ) ni la finalité de l'Extraction probable , je n'ai pas voulu utiliser de filtres.:rolleyes:
J'ai été dans la démarche demandée : résoudre les finds .
Mais effectivement, ta proposition est la meilleure dans l'hypothèse d'une feuille=une table ;)
Le fichier joint illustre cela :
 

Pièces jointes

  • Izbeul.xlsm
    21.6 KB · Affichages: 3

job75

XLDnaute Barbatruc
Il ne sert à rien de rechercher la date de début et la date de fin.

Ce qu'il faut rechercher ce sont les dates situées entre ces 2 dates.

Il existe plusieurs méthodes, la plus simple est d'utiliser une MFC, sans VBA, fichier joint.
 

Pièces jointes

  • MFC dates(1).xlsx
    11.6 KB · Affichages: 2

Izbeul

XLDnaute Nouveau
Bonjour,

je tiens à vous remercier infiniment pour vos retours. J'ai pu tester chacune de vos réponses, elles marchent à la perfections!

En effet, Job75, c'est juste la position des dates que je cherche. J'ai même découvert la fonction range.row qui permet de savoir le numéro de ligne concernée par une variable dans un range. Cette méthode marche aussi.

Vraiment un grand merci. Je rentre ce soir soulagée

:)

Izbeul
 

Discussions similaires

Réponses
5
Affichages
98

Statistiques des forums

Discussions
315 103
Messages
2 116 239
Membres
112 695
dernier inscrit
ben44115