- [Résolu] - Macro rechercher une date quelque soit l'année (jj/mm)

zorglubxp

XLDnaute Junior
Bonsoir,

Je recherche une solution pour localiser à l’intérieur d'une plage définie, une cellule contenant par exemple le 28/02.
J'ai bien essayé avec le code ci dessous, cela fonctionne pour l'année 2012 (en cours) mais pas pour les autres années
Code:
For i = 1 To timeLine.Cells.Count
        If timeLine.Cells(i).Value = DateValue("28/02") Then ...
                
ou

        If timeLine.Cells(i).Value = CDate("28/02") Then ...

Bien evidemment, si je complète avec l'année entière 28/02/2011 cela fonctionne, mais dans la mesure ou ma "time-line" est prévue pour être changée chaque année, j'ai besoin que cette recherche fonctionne tout le temps. cf fichier joint.
 

Pièces jointes

  • Recherche date.xlsm
    214.1 KB · Affichages: 61
  • Recherche date.xlsm
    214.1 KB · Affichages: 61
  • Recherche date.xlsm
    214.1 KB · Affichages: 64
Dernière édition:

Gelinotte

XLDnaute Accro
Re : Macro rechercher une date quelque soit l'année (jj/mm)

Bonsoir,

J'ai ne n'ai pas utilisé "TimeLine" n'ayant pas de bonnes références, c'est dommage.

Ce code tient compte du format de date potentiellement différent d'une machine à l'autre.

Examine cela si ça convient.

Code:
Sub trouveDate()
For i = 2 To 122 ' timeLine.Cells.Count
LeFormatDate = Application.International(xlDateOrder)
Select Case LeFormatDate
  Case 0
'    DDateFormat = "mm/dd/yyyy"
     If Mid(Cells(5, i), 4, 2) & "/" & Left(Cells(5, i), 2) = "28/02" Then MsgBox "Coucou"
  Case 1
'    DDateFormat = "dd/mm/yyyy"
     If Left(Cells(5, i), 2) & "/" & Mid(Cells(5, i), 4, 2) = "28/02" Then MsgBox "Coucou"
  Case 2
'    DDateFormat = "yyyy/mm/dd"
     If Right(Cells(5, i), 2) & "/" & Mid(Cells(5, i), 6, 2) = "28/02" Then MsgBox "Coucou"
  Case Else
'    DDateFormat = "yyyy/mm/dd"
     If Right(Cells(5, i), 2) & "/" & Mid(Cells(5, i), 6, 2) = "28/02" Then MsgBox "Coucou"
End Select
Next i
End Sub


G
 

zorglubxp

XLDnaute Junior
Re : Macro rechercher une date quelque soit l'année (jj/mm)

Merci, mais je ne suis pas fort en VBA et je ne comprends pas tout !


Voici ma macro qui ne fonctionne que pour l'année en cours : (mon but étant de masquer la colonne du 29 février pour les années bissextiles)
Code:
Sub Macro11()
    
    Dim timeLine As Range
        Set timeLine = Range("A6:ADP6")
    Dim i As Integer
        
        
    For i = 1 To timeLine.Cells.Count
        If timeLine.Cells(i).Value = DateValue("28/02") Then
            Cells(i + 2).Columns.Hidden = True
            Cells(i + 3).Columns.Hidden = True
            If timeLine.Cells(i + 2).Value = DateValue("29/02") Then
                Cells(i + 2).Columns.Hidden = False
                Cells(i + 3).Columns.Hidden = False
            End If
        End If
    Next i

End Sub

Partant du principe que sur mon fichier les dates sont au format dd/mm/yyyy, à partir de ton code, je ne sais pas comment extraire le "case"
 

Discussions similaires

Statistiques des forums

Discussions
312 194
Messages
2 086 070
Membres
103 110
dernier inscrit
Privé