XL 2010 Find date dans textbox

cp4

XLDnaute Barbatruc
Bonsoir:),

En voulant aider, je suis confronté à un problème que je n'arrive pas à résoudre.
D'ailleurs, je me demande si la fonction find n'est pas limitée.

L'objectif est de trouver une date se trouvant dans une textbox sur la bonne feuille (sheet.name= année de la date).
Et ce, en utilisant la fonction find. Car je voudrais bien comprendre son utilisation.
ça sera plus clair avec le fichier. Ci-dessous code qui plante (pour ceux qui n'ouvrent jamais les fichiers joints)
VB:
Sub Recherche_données()
   Dim LaFeuille As String, Ladate As Range, Ligne As Long, dl As Integer, plage As Range
   LaFeuille = Right(TextBox1, 4)

   If FeuilleExiste(LaFeuille) = True Then
      With Sheets(LaFeuille)
         dl = .Range("A" & Rows.Count).End(xlUp).Row
         Set plage = .Range("A1:A" & dl)

         Set Ladate = Rng.Cells.Find(What:=CDate(TextBox1.Text), LookIn:=xlFormulas, LookAt:=xlWhole) 'bug objet requis
        
         If Ladate Is Nothing Then
            Me.Label1.Caption = "la date " & TextBox1 & " non trouvée sur la feuille " & LaFeuille
         Else
            Me.Label1.Caption = TextBox1 & " se trouve sur la feuille " & LaFeuille & " en " & Ladate.Address
         End If
      End With
   Else
      Me.Label1.Caption = " la feuille " & LaFeuille & " n'existe pas!"
      Exit Sub
   End If
   '*********************************************
   Set Ladate = Nothing
   Set plage = Nothing
End Sub

En vous remerciant par avance.
Bonne soirée.
 

Pièces jointes

  • Trouver date textbox.xlsm
    69.2 KB · Affichages: 17
Solution
Bonsoir à tous

vous avez eu une erreur dans la macro


vous avez
Set Ladate = rng.Cells.Find(What:=CDate(Me.TextBox1.Text), LookIn:=xlFormulas, LookAt:=xlWhole)
au lieu d'avoir
Set Ladate = plage.Cells.Find(What:=CDate(Me.TextBox1.Text), LookIn:=xlFormulas, LookAt:=xlWhole)

J'ai fait les tests et ça marche


rng n'existe pas dans les variables

VB:
Sub Recherche_données()
   Dim LaFeuille As String, Ladate As Range, Ligne As Long, dl As Integer, plage As Range
  
   LaFeuille = Right(TextBox1, 4)

   If FeuilleExiste(LaFeuille) = True Then
      With Sheets(LaFeuille)
         dl = .Range("A" & Rows.Count).End(xlUp).Row
         Set plage = .Range("A1:A" & dl)

         Set Ladate =...

Rhysand

XLDnaute Junior
Bonsoir à tous

vous avez eu une erreur dans la macro


vous avez
Set Ladate = rng.Cells.Find(What:=CDate(Me.TextBox1.Text), LookIn:=xlFormulas, LookAt:=xlWhole)
au lieu d'avoir
Set Ladate = plage.Cells.Find(What:=CDate(Me.TextBox1.Text), LookIn:=xlFormulas, LookAt:=xlWhole)

J'ai fait les tests et ça marche


rng n'existe pas dans les variables

VB:
Sub Recherche_données()
   Dim LaFeuille As String, Ladate As Range, Ligne As Long, dl As Integer, plage As Range
  
   LaFeuille = Right(TextBox1, 4)

   If FeuilleExiste(LaFeuille) = True Then
      With Sheets(LaFeuille)
         dl = .Range("A" & Rows.Count).End(xlUp).Row
         Set plage = .Range("A1:A" & dl)

         Set Ladate = plage.Cells.Find(What:=CDate(Me.TextBox1.Text), LookIn:=xlFormulas, LookAt:=xlWhole)
        
         If Ladate Is Nothing Then
            Me.Label1.Caption = "la date " & TextBox1 & " non trouvée sur la feuille " & LaFeuille
         Else
            Me.Label1.Caption = TextBox1 & " se trouve sur la feuille " & LaFeuille & " en " & Ladate.Address
         End If
      End With
   Else
      Me.Label1.Caption = " la feuille " & LaFeuille & " n'existe pas!"
      Exit Sub
   End If
   '*********************************************
   Set Ladate = Nothing
   Set plage = Nothing
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
315 109
Messages
2 116 311
Membres
112 716
dernier inscrit
jean1234