la variable est une heure

bbobb

XLDnaute Occasionnel
Bonjour à tous,
Voilà : je recherche dans une colonne une donnée qui est égale à une variable préalablement définie et qui est une heure.
J'ai joint un petit fichier avec un code qui marche !?!?!?....

Donc le problème vient peut-être du fait que mon fichier original comporte 40000 lignes....

Merci d'avance pour vos lumières :)

Bonne journée les XLnautes et le forum
Bbobb
 

Pièces jointes

  • Classeur1.xls
    31 KB · Affichages: 49
  • Classeur1.xls
    31 KB · Affichages: 55
  • Classeur1.xls
    31 KB · Affichages: 52

job75

XLDnaute Barbatruc
Re : la variable est une heure

Bonjour bbobb,

La comparaison d'heures peut poser des problèmes (à cause des décimales).

Il vaut mieux procéder ainsi :

Code:
Sub testH()
Dim t As String, c As Range
t = Format(Cells(1, 1), "h:m:s")
For Each c In Range("A4", Cells(Rows.Count, 1).End(xlUp))
  If Format(c, "h:m:s") = t Then
    c(1, 2).Select
    Exit For
  End If
Next
End Sub
Noter qu'en VBA il est généralement inutile de sélectionner.

Edit : salut Pierrot.

A+
 

ChTi160

XLDnaute Barbatruc
Re : la variable est une heure

Bonjour bbobb
Bonjour le fil
Bonjour le forum
histoire de saluer les participants
une autre version Lol
VB:
Sub testH2()
Dim t As Double, c As Range
With Worksheets("Feuil1")
t = .Cells(1, 1)
For Each c In .Range("A4", .Cells(Rows.Count, 1).End(xlUp))
  If c.Value = t Then
  c.Offset(0, 1).Interior.Color = vbGreen
    Exit For
  End If
Next
End With
End Sub
bonne journée
Amicalement
Jean Marie
 

job75

XLDnaute Barbatruc
Re : la variable est une heure

Re,

On peut aussi utiliser la méthode Find :

Code:
Sub testH()
[A:A].NumberFormat = "hh:mm:ss" 'par acquis de conscience...
On Error Resume Next 'si la recherche n'aboutit pas
Range("A3:A" & Rows.Count).Find([A1].Text, , xlValues).Offset(, 1).Select
End Sub
A+
 

laetitia90

XLDnaute Barbatruc
Re : la variable est une heure

bonjour les amis :):):):)

peut être comme cela aussi???

Code:
Set a = Range("a4", Cells(Rows.Count, "a").End(xlUp)) _
 .Find(What:=[a1].Text, LookIn:=xlValues)
 If Not a Is Nothing Then a.Offset(, 1).Select Else MsgBox "pas trouve"
 

MJ13

XLDnaute Barbatruc
Re : la variable est une heure

Bonjour à tous

Tu peux aussi tester:

Code:
Cells.Find(What:=CDate(Cells(1, 1)), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
 

bbobb

XLDnaute Occasionnel
Re : la variable est une heure

Bonsoir à tous,
Le code ci-dessous proposé par MJ13 fonctionne très bien. Mais j'ai besoin de connaitre le numéro de ligne de la cellule activée... Mes (faibles) compétences en VBA sont insuffisantes... :)



Code:
Cells.Find(What:=CDate(Cells(1, 1)), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate


Bonne soirée àtous
Bbobb
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : la variable est une heure

Bonsoir bbobb, à tous,

Essayez:

Le code ci-dessous proposé par MJ13 fonctionne très bien. Mais j'ai besoin de connaitre le numéro de ligne de la cellule activée..

VB:
dim MaColonne as long
Cells.Find(What:=CDate(Cells(1, 1)), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
MaColonne =ActiveCell.row
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 394
Membres
103 537
dernier inscrit
alisafred974