Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction Find ne fonctionne pas VBA

9 réponses
Avatar
Imbeault Christine
Bonjour à tous,
A25 =2006-04-01

j'exécuter cette fonction en vba
a = Worksheets(2).Range("a25").Find("2006-04-01"; xlvalues)

Mais la fonction plante tout le temps

Merci à l'avance
Christine

9 réponses

Avatar
michdenis
Bonjour Christine,

Essaie ceci en adaptant le nom de la feuille et de la plage de cellules

'----------------------------
Dim Rg As Range
Dim LaDate As Date
LaDate = DateSerial(2007, 2, 10)
With worksheets("Feuil2")
With .Range("A1:A50")
Set Rg = .Find(What:=LaDate, LookIn:=xlFormulas)
If Not Rg Is Nothing Then
MsgBox Rg.Address & " " & Rg.Value
Else
MsgBox "Pas trouver la date demandée"
End If
End with
End With
'----------------------------


Salutations!



"Imbeault Christine" a écrit dans le message de news:
Bonjour à tous,
A25 06-04-01

j'exécuter cette fonction en vba
a = Worksheets(2).Range("a25").Find("2006-04-01"; xlvalues)

Mais la fonction plante tout le temps

Merci à l'avance
Christine
Avatar
JB
Bonjour,

x = CDate("03/02/2006")
Set a = Range("a:a").Find(What:=x)
Range(a.Address).Select

ou

x = CDate("03/02/2006")
Range("a:a").Find(What:=x).Select

Cordialement JB
Avatar
michdenis
Bonjour JB,

| Set a = Range("a:a").Find(What:=x)

C'est court comme présentation, mais je serais étonné que cela fasse
mouche à tout coup avec la méthode Find.


Salutations!



"JB" a écrit dans le message de news:
Bonjour,

x = CDate("03/02/2006")
Range(a.Address).Select

ou

x = CDate("03/02/2006")
Range("a:a").Find(What:=x).Select

Cordialement JB
Avatar
JB
Bonjour,

| Set Rg = .Find(What:=LaDate, LookIn:=xlFormulas

Ne fonctionne pas si les dates sont obtenues à partir de formules
(C'est l'option XlValues qu'il faut).

Cordialement JB
Avatar
michdenis
Si les dates dans la plage de cellules sont le résultat de formule,
La seule méthode fiable est Match()

'-------------------------------
Sub test()

Dim LaDate As Date, D As Long
LaDate = DateSerial(2006, 2, 10)
On Error Resume Next
With Worksheets("Feuil1")
D = Application.Match(CLng(LaDate), .Range("A1:A50"), 0)
If Err = 0 Then
MsgBox Range("A" & D).Address & " " & Range("A" & D).Value
Else
MsgBox "Pas trouver la date demandée"
End If
End With
End Sub
'-------------------------------


Salutations!




"JB" a écrit dans le message de news:
Bonjour,

| Set Rg = .Find(What:=LaDate, LookIn:=xlFormulas

Ne fonctionne pas si les dates sont obtenues à partir de formules
(C'est l'option XlValues qu'il faut).

Cordialement JB
Avatar
AV
| | Set a = Range("a:a").Find(What:=x)
| C'est court comme présentation, mais je serais étonné que cela fasse
| mouche à tout coup avec la méthode Find.

Je ne peux que souscrire à cette réserve !
x = CDate("03-02-2006")
Range("a:a").Find(What:=x).Select



Si la date recherchée n'est pas inscrite en dur mais est le résultat d'une
formule, c'est le plouf garanti à tous les coups !



x = CDate("04-02-2006")
Range("A" & Application.Match(x * 1, [A:A], 0)).Select

AV


Avatar
JB
Cette méthode fonctionne parfaitement. Il suffit de spécifier le
paramètre: LookIn:=xlValues)
Si le paramètre LookIn n'est pas spécifié, Excel reprend par défaut
la valeur qu'il avait lors de la recherche précédente. C'est de là
que proviennent les pseudo problèmes évoqués.

Sub essai()
x = CDate("03-02-2006")
Set a = Range("a:a").Find(What:=x, LookIn:=xlValues)
If a Is Nothing Then
MsgBox "non trouvé"
Else
MsgBox a.Address
Range(a.Address).Select
End If
End Sub

http://cjoint.com/?cemFMzbstP

En outre,Find permet d'obtenir toutes les occurences de l'item
cherché:

Extrait doc MS:

With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With


JB
Avatar
michdenis
Fais un test en donnant un (ou des) format de cellules
personnalisé "date" divers de ta plage de cellules.

Si tu peux confirmer la véracité de ton énoncé,
reviens-nous le dire. Ok.

Ce que tu énonces ne recherche pas une date mais
une chaîne de caractère. Si le "hasard" veut que la chaîne
recherchée ait le format de la date recherchée, la méthode
"Find" trouvera ...pas la date mais la chaîne de caractères.

Dans toutes les autres circonstances, la méthode "Find" fait un
retentissant : "COUIC" ;-)

Je t'invite donc à moduler le mot "parfaitement" de ton énoncé!

'****************************
Cette méthode fonctionne parfaitement. Il suffit de spécifier le
paramètre: LookIn:=xlValues)
'****************************


Salutations!
Avatar
AV
....C'est de là que proviennent les pseudo problèmes évoqués.


http://cjoint.com/?cepMzlEmRE

AV