Problème de recherche de mot clé

Signaler
Messages postés
17
Date d'inscription
lundi 9 avril 2007
Statut
Membre
Dernière intervention
4 juin 2007
-
Messages postés
17
Date d'inscription
lundi 9 avril 2007
Statut
Membre
Dernière intervention
4 juin 2007
-
Je possède un tableau qui contient des données classées par ordre chronologique.
Donc, chaque ligne de ce tableau contient une date et une heure.

Je souhaite determiner la ligne où se trouve la donnée en fonction de sa date et de son heure. Pour cela j'ai entrer le code suivant (les variable sont des variables globales):

Sub GestionLigneDebut()


If DateDebut <> "" Then
    Set trouvedatedebut = Worksheets(Ref).Cells.Find(What:=DateDebut, SearchDirection:=xlNext)
    If Not trouvedatedebut Is Nothing Then
        Debut = trouvedatedebut.Row
        If HeureDebut <> "" Then
            Sheets(Ref).Select
            Cells(Debut, 3).Activate
            Set trouveheuredebut = Worksheets(Ref).Cells.Find(What:=HeureDebut, After:=ActiveCell, SearchDirection:=xlNext)
            If Not trouveheuredebut Is Nothing Then
                Debut = trouveheuredebut.Row
            End If
        End If
    End If
Else
    Debut = 7
End If


End Sub

Avec ce code je parviens à déterminer la ligne de la première apparition de la date mais pas celle de l'heure. J'aimerai donc savoir pourquoi ma recherche de l'heure n'aboutie pas. Peut-être un problème de format mais pourtant HeureDebut est bien au format "hh:mm:ss" alors je ne vois vraiment pas.

Merci pour votre aide

3 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Tu écris
            Sheets(Ref).Select
            Cells(Debut, 3).Activate
Écris plutôt
            Sheets(Ref).).Activate
            Cells(Debut, 3).).Select

Une fois que tu as trouvé la date, plutôt que d'utiliser un autre Find, utilise OffSet ou le nom de la colonne
Je ne sais pas si tes dates et tes heures sont toujours dans les mêmes colonnes (?)

Si oui, disons que les dates sont en A et les heures sont en B
If Range("B" & Debut) = HeureDebut then 'trouvé
ou
If Range(trouvedatedebut.Address).Offset(0, 1) = HeureDebut then ...

Autrement, tu pourrais trouver une heure mais qui ne serait pas sur la même ligne que la date.

Tu pourrais aussi ajouter à ton appel de Find les paramètres xlValues et xlWhole, éventuellement.

MPi
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
4
bonjour,
et de plus, tu écrit
    If Not trouvedatedebut Is Nothing Then
ce qui revient à dire que si ce n'est pas vrai que trouvedatedebut est  vide...
 If trouvedatedebut Then serrait plus simple
A+
louis
Messages postés
17
Date d'inscription
lundi 9 avril 2007
Statut
Membre
Dernière intervention
4 juin 2007

Merci pour vos conseils le problème est résolu ;)