VBA pour rechercher et sélectionner cellule

mfaeko

XLDnaute Nouveau
Bonjour à tous !

Comme vous le verrez sur le fichier en pièce jointe, j'essaye de représenter sur un calendrier via une mise en forme des cellules les jours où j'ai pratiqué du sport.
Le fichier se décompose en trois onglets :
- Le calendrier
- Les sports et la mise en forme associée
- Les séances effectuées
Dans ce dernier onglet il y a des dates et le sport pratiqué.

J'essaye de programmer une macro pour qu'elle cherche la date de la séance dans le calendrier et quelle modifie la mise en forme en fonction du sport pratiqué.

Je vous demander votre aide parce que je viens de passer 4h30 à chercher dans tous les sens comment trouver cette cellule dans le calendrier. J'ai essayé en passant par différent formats de cellules, différentes données, en cherchant dans la formule, dans les valeurs, en combinant des cellules et texte, etc. Rien n'y fait, j'ai toujours le message erreur comme quoi il ne trouve pas la date.

Auriez-vous une autre piste que je n'aurai pas exploité ?

Amicalement,
mfaeko
 

Pièces jointes

  • Suivi Entraînements.xlsm
    68.1 KB · Affichages: 8

job75

XLDnaute Barbatruc
Bonjour mfaeko,

Voyez le fichier joint et cette macro dans le code de la feuille "Séances" :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not IsDate(Target) Then Exit Sub
Cancel = True
With Sheets("Calendrier")
    If Year(Target) <> .[AC1] Then Exit Sub
    With .Cells.Find(Format(Target, "mmmm"), , xlValues, xlWhole) 'mois
        With .Cells(3, 1).Resize(6, 7).Find(Day(Target)) 'jour
            .Interior.Color = Target.DisplayFormat.Interior.Color 'colore la cellule trouvée
            Application.Goto .Cells 'facultatif, pour aller sur la cellule trouvée
        End With
    End With
End With
End Sub
Elle se déclenche quand on fait un double-clic sur une date.

A+
 

Pièces jointes

  • Suivi Entraînements(1).xlsm
    68 KB · Affichages: 5

job75

XLDnaute Barbatruc
Autre solution dans ce fichier (2) avec cette macro dans le code de la feuille "Calendrier" :
VB:
Private Sub Worksheet_Activate()
Dim F As Worksheet, c As Range, c1 As Range
Set F = Sheets("Séances")
Application.ScreenUpdating = False
[B7:AF12,B16:AF21,B25:AF30].Interior.ColorIndex = xlNone 'RAZ
For Each c In Intersect(F.[B:B], F.UsedRange.EntireRow)
    If IsDate(c) Then
        If Year(c) = [AC1] Then
            Set c1 = Cells.Find(Format(c, "mmmm"), , xlValues, xlWhole) 'mois
            c1(3).Resize(6, 7).Find(Day(c)).Interior.Color = c.DisplayFormat.Interior.Color 'colore le jour trouvé
        End If
    End If
Next
End Sub
Elle se déclenche quand on active la feuille.
 

Pièces jointes

  • Suivi Entraînements(2).xlsm
    67.6 KB · Affichages: 6
Dernière édition:

mfaeko

XLDnaute Nouveau
Bonjour Job75,

Super tes réponses, c'est exactement ça ! Je n'avais pas pensé à utiliser Format() alors merci !
Comme quoi, quand on a la tête dans le guidon, ça aide d'avoir un avis extérieur ;)

Merci et bonne journée.
 

Discussions similaires

Réponses
29
Affichages
1 K

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki