1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| Sub Demo_xlformulas_vs_xlValues()
Dim c As Range, dat1 As String, dat2 As String
Set cellB2 = Cells(2, "B")
dat1 = "03/01/2015"
'xlFormulas 'Contrainte : la valeur cherchee doit etre de type Date pour trouver une date dans des cellules au format Date,
'de type Numerique pour trouver un nombre dans des cellules ayant un format Numerique,
'de type String pour trouver un String dans des cellules au format Texte
cellB2.NumberFormat = "@" 'La cellule est au format Texte
cellB2.FormulaLocal = dat1
Set c = [B:B].Find(CDate(dat1), LookIn:=xlFormulas, lookat:=xlWhole) 'Non
Set c = [B:B].Find(dat1, LookIn:=xlFormulas, lookat:=xlWhole) 'Oui
cellB2.NumberFormat = "d/m/yyyy" ' La cellule est au format Date
cellB2.FormulaLocal = dat1
Set c = [B:B].Find(CDate(dat1), LookIn:=xlFormulas, lookat:=xlWhole) 'Oui
Set c = [B:B].Find(dat1, LookIn:=xlFormulas, lookat:=xlWhole) 'Non
'xlValues
'xlValues: Contrainte 1 : On doit utiliser AutoFit, sinon la largeur de la cellule doit toujours etre suffisante
'xlValues 'Contrainte 2 : si le format de cellule est "m/d/yyyy",
'la valeur cherchee doit etre de type Date
cellB2.NumberFormat = "m/d/yyyy"
cellB2.FormulaLocal = dat1
Columns(cellB2.Column).AutoFit
Set c = [B:B].Find(CDate(dat1), LookIn:=xlValues, lookat:=xlWhole) 'Oui
Set c = [B:B].Find(dat1, LookIn:=xlValues, lookat:=xlWhole) 'Non
dat2 = cellB2.Text
Set c = [B:B].Find(dat2, LookIn:=xlValues, lookat:=xlWhole) 'Non
'xlValues 'Contrainte 3 : si le format de cellule n'est pas "m/d/yyyy",
'la valeur cherchee doit etre de type String
' et le format de la valeur cherchee doit etre identique au format de la cellule
'c-a-d que la valeur affichee doit etre identique a la valeur cherchee
cellB2.NumberFormat = "d/m/yyyy"
cellB2.FormulaLocal = dat1
Columns(cellB2.Column).AutoFit
dat2 = cellB2.Text
Set c = [B:B].Find(dat2, LookIn:=xlValues, lookat:=xlWhole) 'Oui pq dat2 = cellB2.Text
Set c = [B:B].Find(CDate(dat2), LookIn:=xlValues, lookat:=xlWhole) 'Non
Set c = [B:B].Find(dat1, LookIn:=xlValues, lookat:=xlWhole) 'Non. Oui si dat1 = cellB2.Text
Set c = [B:B].Find(CDate(dat1), LookIn:=xlValues, lookat:=xlWhole) 'Non
End Sub |
Partager