Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Position en fonction de la date et de l'heure

clausen

XLDnaute Occasionnel
Impossible de faire marcher cette programmation

Le matin jusqu'à 9:00 dans la colonne "I" ensuite jusqu'à 14:00 dans la colonne "K" et le soir jusqu'à 19:00 dans la colonne "M"
 

Pièces jointes

  • Couleur.xlsm
    130.3 KB · Affichages: 9

Dudu2

XLDnaute Barbatruc
Bonjour,
C'est quoi qui ne marche pas ?
Si c'est le Sub GoCellDay alors...
VB:
Private Sub GoCellDay()
    Dim C As String
   
    With ActiveSheet
        If Time < .[K3] Then
            C = "I"
        ElseIf Time < .[M3] Then
            C = "K"
        Else
            C = "M"
        End If
       
        .Cells(Day(Date) + 3, C).Select
    End With
End Sub
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
VB:
Private Sub GoCellDay()
    Dim C As String
    
    With ActiveSheet
        If Time < .[I3] Then
            C = "I"
        ElseIf Time < .[K3] Then
            C = "K"
        Else
            C = "M"
        End If
        
        .Cells(Day(Date) + 3, C).Select
    End With
End Sub
 

clausen

XLDnaute Occasionnel
Rien à couper, ce matin était ok, on verra à midi et ce soir, bonne journée et merci encore pour toute cette aide.

Le code que j'ai :
Option Explicit

Private Sub GoCellDay()
Dim C As String

With ActiveSheet
If Time < .[I3] Then
C = "I"
ElseIf Time < .[K3] Then
C = "K"
Else
C = "M"
End If

.Cells(Day(Date) + 3, C).Select
End With
End Sub

Private Sub Workbook_Open()
Worksheets(Month(Date)).Select: GoCellDay
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'ne rien faire si la feuille active n'est pas celle du mois en cours
If Sh.Index = Month(Date) Then GoCellDay
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
[A1].Select
End Sub


Savez-vous à quoi servent les autres lignes ?
 

Dudu2

XLDnaute Barbatruc
VB:
Private Sub GoCellDay()
    Dim C As String
  
    With ActiveSheet
        If Time < .[I3] Then
            C = "I"
        ElseIf Time < .[K3] Then
            C = "K"
        Else
            C = "M"
        End If
      
        .Cells(Day(Date) + 3, C).Select
    End With
End Sub

Private Sub Workbook_Open()
    Worksheets(Month(Date)).Select
    Call GoCellDay
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  'ne rien faire si la feuille active n'est pas celle du mois en cours
  If Sh.Index = Month(Date) Then Call GoCellDay
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
  ActiveSheet.[A1].Select
End Sub
Les autres fonctions gèrent des évènements.
1 - Workbook_Open() -> Ouverture du classeur
2 - Workbook_SheetActivate() -> Activation / sélection d'une feuille en cliquant en bas sur son nom
3 - Private Sub Workbook_SheetDeactivate() -> Désactivation d'une feuille quand on en choisit un autre.

Le 3 ne sert pas à grand chose et pourrait être supprimé sauf à vouloir absolument sélectionner A1 quand la feuille choisie n'est pas celle du mois en cours. Le code aurait d'ailleurs pu être placé en 2 dans le Else du If.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…