Rechercher une date dans une plage de cellules dans un class

Bonjour à tous,

Je souhaite faire une macro me permettant de rechercher une date saisie via une inputbox.

Le recherche doit se faire dans la plage de cellules B6 à B11 et sur les feuilles 3 à la dernière.

Contrainte :

les dates affichées dans la plage B6 à B11 sont au format mardi 07 juillet 2009

La date saisie serait sous la forme 07/07/2009

Le résultat :

Affiche la feuille concernée et sélectionne la cellule trouvée

Pour l'instant j'arrive à rechercher dans toutes les cellules, mais souhaiterais uniquement une plage définie.

La cellule trouvée se colorie mais n'est pas sélectionnée.. ActiveCell.select ne fonctionne pas!

Voici le code :

Private Sub CommandButton2_Click() 'procédure permettant la recherche de la semaine en fonction de la date saisie

Dim s As Variant

Dim d As Date

Dim c As Variant

d = InputBox("Veuillez saisir la date sous la forme " jj/mm/aaaa"")

For Each s In ActiveWorkbook.Sheets

With Sheets(s.Name).Cells

Set c = .Find(d, LookIn:=xlValues)

If Not c Is Nothing Then

premier = c.Address

Do

ActiveCell.Select

c.Interior.ColorIndex = 4

Sheets(s.Name).Select

Set c = .FindNext(c)

Loop While Not c Is Nothing And c.Address <> premier

End If

End Sub

Merci à vous tous!

Lio

Bonjour pictures,

- enlève le ActiveCell.Select et la sélection se fera correctement. Quand la fonction Find trouve la valeur, elle sélectionne la cellule de toute façon.

- pour rechercher dans une plage spécifier, change la ligne

With Sheets(s.Name).Cells

pour

With Sheets(s.Name).Range("B6:B11")

le code corrigé devrait ressembler à ceci:

Public Sub CommandButton2_Click() 'procédure permettant la recherche de la semaine en fonction de la date saisie
Dim s As Variant
Dim d As Date
Dim c As Variant

    d = InputBox("Veuillez saisir la date sous la forme  jj/mm/aaaa")
    For Each s In ActiveWorkbook.Sheets
        With Sheets(s.Name).Range("B6:B11")
            Set c = .Find(d, LookIn:=xlValues)
            If Not c Is Nothing Then
                premier = c.Address
                Do
                    c.Interior.ColorIndex = 4
                    Sheets(s.Name).Select
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> premier
            End If
        End With
    Next s
End Sub

attention, dans ton code tu avais oublié de fermer ta boucle for et le l'instruction With.

Bonne journée

Merci Math pour votre réponse

La recherche fonctionne bien sur la plage de cellules définies.

1. Mais la cellule trouvée n'est pas sélectionnée (active)

2. Quelle serait la syntaxe à utiliser pour que la recherche puisse se faire aussi sur des dates du type mardi 07 juillet 2009?

Merci

Lio

utilise

c.Select

après la ligne

Sheets(s.Name).Select

pour ta deuxième question, est-ce le champs résultat qui est au format mardi 07 juillet 2009 ou bien c'est ce que l'usager entre?

Oui bon... re merci...

j'avais bien mis c.select, mais pas au bon endroit.....

Les dates affichées dans les feuilles sont sous la forme mardi 07 juillet 2009

Et la date saisie par l'utilisateur est ss la forme 07/07/2009

J'ai bien essayé

Find(What:=Format(CDate(d), "dddd d mmmm yyyy"), LookIn:=xlValues)

cela ne fonctionne pas!

Encore merci!

Lio

Si les date en bas de 10 sont toujours exprimé avec un 0 (ex: 07 ), ton format devrait plutot être

Format(d, "dddd dd mmmm yyyy").

Tu n'es pas obligé d'utiliser cdate(d) car tu déclare déjà ta variable au format date.

Merci...

En fait avec

Set c = .Find(What:=Format(cdate(d), "dddd d mmmm yyyy"), LookIn:=xlValues)

je n'avais aucun résultat. Effectivement CDate définit d en date, mais cela a déjà été fait dans les déclarations!

en revanche avec

Set c = .Find(What:=Format(d, "dddd d mmmm yyyy"), LookIn:=xlValues)

cela fonctionne

et en plus il n'y a qu'un seul d ("dddd d mmmm yyyy") bref j'en aurais aussi mis 2....

Merci beaucoup Math, je vais pouvoir continuer mon travail.... pas encore fini... peut être à bientôt!

Bonne fin de journée!

Lio

Bonne journée à toi aussi.

Oublie pas de mettre ton post [Résolu]

Oui, c'est vrai!

Rechercher des sujets similaires à "rechercher date plage class"