Macro Date, mois, jour, semaine calendaire

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pimstarz

XLDnaute Nouveau
Bonjour a tous,

je cherche a creer un enchainement de macros par double clic, et en tant que débutant, je me tire royalement les cheveux, car je ne m'en sors pas. Pourtant j'ai l'impression que ce n'est pas si dur ...

Quelqu'un pourrait-il m'aider ?

Je m'explique (voir fichier plus bas) :

- Dans la colonne A, quand je double clique dans une cellule, j'aimerais que la date du jour s'affiche.
(Ca, j'y arrive sans problème 🙂
- Dans la colonne B, le mois actuel
- Dans la C, la semaine calendaire
- Dans la D, le jour actuel
- Dans la E, la plage horaire actuelle (à l'heure près). Par exemple si il est 10h01, j'aimerais que "10:00-11:00" s'affiche. Et si il est 12h, "12:00-13:00".

Evidemment, si en double cliquant dans une cellule de la colonne A, la date s'affiche, et automatiquement les autres données dans les colonnes B,C,D,E de la même ligne, c'est génial ! Mais si je dois faire un double clic dans chaque cellule de chaque colonne, ce n'est pas grave.

Si c'est impossible de créer une macro pour la colonne E, ce n'est pas non plus un drame.

Ma demande étant assez précise .. Merci d'avance à celui qui aura le courage et la patience de m'aider !

Bonne journée

pim
 

Pièces jointes

Re : Macro Date, mois, jour, semaine calendaire

Hello Phlaurent 🙂

J'avais compris comme ceci.

Merci à l'auteur pour le bout de code pour le numéro de semaine. (voir fiabilité)

Faut double-cliquer dans la colonne A.

Désolé pour le code de la colonne E, un poil long, mais là pas le choix je crois (plutôt que de faire une boucle)
 

Pièces jointes

Re : Macro Date, mois, jour, semaine calendaire

Bonjour Hulk, le forum
Hello Phlaurent 🙂

J'avais compris comme ceci.
........... moi aussi mais je deviens fainéant 😡



Désolé pour le code de la colonne E, un poil long, mais là pas le choix je crois (plutôt que de faire une boucle)
tu peux remplacer tout ceci:
Code:
 If Left(Time, 2) = 0 Then
            ActiveCell.Offset(0, 4).Value = "00:00 - 01:00"
        ElseIf Left(Time, 2) = 1 Then
            ActiveCell.Offset(0, 4).Value = "01:00 - 02:00"
        ElseIf Left(Time, 2) = 2 Then
            ActiveCell.Offset(0, 4).Value = "02:00 - 03:00"
        ElseIf Left(Time, 2) = 3 Then
            ActiveCell.Offset(0, 4).Value = "03:00 - 04:00"
        ElseIf Left(Time, 2) = 4 Then
            ActiveCell.Offset(0, 4).Value = "04:00 - 05:00"
        ElseIf Left(Time, 2) = 5 Then
            ActiveCell.Offset(0, 4).Value = "05:00 - 06:00"
        ElseIf Left(Time, 2) = 6 Then
            ActiveCell.Offset(0, 4).Value = "06:00 - 07:00"
        ElseIf Left(Time, 2) = 7 Then
            ActiveCell.Offset(0, 4).Value = "07:00 - 08:00"
        ElseIf Left(Time, 2) = 8 Then
            ActiveCell.Offset(0, 4).Value = "08:00 - 09:00"
        ElseIf Left(Time, 2) = 9 Then
            ActiveCell.Offset(0, 4).Value = "09:00 - 10:00"
        ElseIf Left(Time, 2) = 10 Then
            ActiveCell.Offset(0, 4).Value = "10:00 - 11:00"
        ElseIf Left(Time, 2) = 11 Then
            ActiveCell.Offset(0, 4).Value = "11:00 - 12:00"
        ElseIf Left(Time, 2) = 12 Then
            ActiveCell.Offset(0, 4).Value = "12:00 - 13:00"
        ElseIf Left(Time, 2) = 13 Then
            ActiveCell.Offset(0, 4).Value = "13:00 - 14:00"
        ElseIf Left(Time, 2) = 14 Then
            ActiveCell.Offset(0, 4).Value = "14:00 - 15:00"
        ElseIf Left(Time, 2) = 15 Then
            ActiveCell.Offset(0, 4).Value = "15:00 - 16:00"
        ElseIf Left(Time, 2) = 16 Then
            ActiveCell.Offset(0, 4).Value = "16:00 - 17:00"
        ElseIf Left(Time, 2) = 17 Then
            ActiveCell.Offset(0, 4).Value = "17:00 - 18:00"
        ElseIf Left(Time, 2) = 18 Then
            ActiveCell.Offset(0, 4).Value = "18:00 - 19:00"
        ElseIf Left(Time, 2) = 19 Then
            ActiveCell.Offset(0, 4).Value = "19:00 - 20:00"
        ElseIf Left(Time, 2) = 20 Then
            ActiveCell.Offset(0, 4).Value = "20:00 - 21:00"
        ElseIf Left(Time, 2) = 21 Then
            ActiveCell.Offset(0, 4).Value = "21:00 - 22:00"
        ElseIf Left(Time, 2) = 22 Then
            ActiveCell.Offset(0, 4).Value = "22:00 - 23:00"
        ElseIf Left(Time, 2) = 23 Then
            ActiveCell.Offset(0, 4).Value = "23:00 - 00:00"
        End If

par:
Code:
ActiveCell.Offset(0, 4).Value = Format(Left(Time, 2), "00") & ":00 - " & Format(Left(Time, 2) + 1, "00") & ":00"
pour un même résultat sans doute un peu plus rapide

à+
Philippe
 
Dernière édition:
Re : Macro Date, mois, jour, semaine calendaire

Re,

Pour être clair Pimstarz, tu colles ceci dans le code de la feuille concernée (click-droit sur l'onglet de la feuille et dans la partie de droite tu y colles)
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
    Dim numSemaine As Integer
    
    If Not Intersect(Target, Columns("A:A")) Is Nothing Then
        
        'Pour les cellules de la colonne A
        ActiveCell.Value = Date
        
        'Pour les cellules de la colonne B
        ActiveCell.Offset(0, 1).Value = _
            Application.WorksheetFunction.Proper(Format(MonthName(Month(ActiveCell.Value)), "mmmm"))
        
        'Pour les cellules de la colonne C
        nbr1 = Int((ActiveCell.Value - 2) / 7) + 0.6
        nbr2 = 52 + 5 / 28
        numSemaine = Int(nbr1 - nbr2 * Int(nbr1 / nbr2)) + 1
        ActiveCell.Offset(0, 2).Value = "Sem " & numSemaine

        'Pour les cellules de la colonne D
        ActiveCell.Offset(0, 3).Value = Format(ActiveCell.Value, "dddd")
        
        'Pour les cellules de la colonne E
        ActiveCell.Offset(0, 4).Value = Format(Left(Time, 2), "00") & ":00 - " & _
            Format(Left(Time, 2) + 1, "00") & ":00"

        Cancel = True
    
    End If

End Sub
 
Re : Macro Date, mois, jour, semaine calendaire

Re,

@ Hulk,
plutôt avec cette ligne qui permet d'éviter " 23:00-24:00 " en donnant " 23:00-00:00 " comme résultat
Code:
ActiveCell.Offset(0, 4).Value = Format(Left(Time, 2), "00") & ":00 - " & Format((Left(Time, 2) + 1) Mod 24, "00") & ":00"

à+
Philippe
 
Re : Macro Date, mois, jour, semaine calendaire

Re,

Encore merci pour votre aide ! Sans vous je n'aurais pas pu trouver toutes ces petites subtilités (notamment le code de la semaine en cours!)

Concernant Excel, je ne vous serai jamais d'une grande aide, mais pour remercier, prévenez moi par MP si jamais un jour vous avez besoin d'aide pour une traduction / compréhension francais-allemand. Ca, c'est mon domaine 🙂

Bonne journée a vous.

pim
 
Re : Macro Date, mois, jour, semaine calendaire

Bonjour à tous


Une autre procédure :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Cible As Range, Cancel As Boolean)
Dim d As Date, NSem%
    d = Now
    If Not Intersect(Cible, Columns(1)) Is Nothing Then
        NSem = (d - Weekday(d, 2) - DateSerial(Year(d - Weekday(d, 2) + 4), 1, 1) + _
            Weekday(DateSerial(Year(d - Weekday(d, 2) + 4), 1, 1), 2)) \ 7 + _
            (Weekday(DateSerial(Year(d - Weekday(d, 2) + 4), 1, 1), 2) > 4) + 1
        With Application.WorksheetFunction
            ActiveCell.Resize(1, 5) = Array(Format(d, "dd/mm/yyyy"), .Proper(MonthName(Month(d))), NSem, _
                .Proper(Format(d, "dddd")), Format(d, "hh:00") & " - " & Format(d + 1 / 24, "hh:00"))
        End With
        Cancel = True
    End If
End Sub


ROGER2327
#5518


Lundi 23 Gueules 139 (Occultation de Saint J Torma, euphoriste - fête Suprême Quarte)
28 Pluviôse An CCXX, 4,6746h - cyclamen
2012-W07-5T11:13:09Z
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
151
Réponses
17
Affichages
504
Réponses
4
Affichages
243
Réponses
6
Affichages
281
Retour