IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[Excel-VBA] relation date et jour de la semaine


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 40
    Par défaut [Excel-VBA] relation date et jour de la semaine
    Bonjour,
    je voudrais pouvoir ecrire une macro qui, quand je donne une date, (par exemple 31/01/2008 pour 31 janvier 2008 en format anglais), me donne le jour de la semaine en 3 lettres donc la ce serais THU pour thursday en anglais.

    En gros dans la colonne A il y aurait le jour de la semaine et dans la colonne B la date ajoutee par l'utilisateur.
    est ce que c'est possible?

    Merci de votre aide

    cordialement
    Joey

  2. #2
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour,

    sans macro, dans ta colonne A, en A2 par exemple
    =texte(B2;"jjj")

    cordialement

    edit si tu as une version anglaise =Text(B2;"ddd")

    Si tu as une version française et que tu veux un affichage en anglais,
    ça se complique un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 And Target.Count = 1 And Not IsEmpty(Target) Then
        Select Case DatePart("w", Target, 2) ' ou   Application.Weekday(Target, 2)
        Case 1: Target(1, 0) = "mon"
        Case 2: Target(1, 0) = "tue"
        Case 3: Target(1, 0) = "wed"
        Case 4: Target(1, 0) = "thu"
        Case 5: Target(1, 0) = "fri"
        Case 6: Target(1, 0) = "sat"
        Case 7: Target(1, 0) = "sun"
        End Select
    End If
    End Sub
    à placer dans le module de feuille. Clic droit sur l'onglet, Afficher l'onglet, tu colles le code

    ou
    edit2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 2 And _
            Target.Count = 1 And _
            Not IsEmpty(Target) Then
            Target(1, 0) = JourSemEN(DatePart("w", Target, 2))
        End If
    End Sub
    Private Function JourSemEN(Jour)
    Dim Liste1, Liste2
        Liste1 = Array(1, 2, 3, 4, 5, 6, 7)
        Liste2 = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
    JourSemEN = Liste2(Application.Match(Jour, Liste1, 0) + (LBound(Liste2) = 0))
    End Function
    ou
    tu places ce code dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function JourSemEN(Jour)
    Dim Liste1, Liste2
        Liste1 = Array(1, 2, 3, 4, 5, 6, 7)
        Liste2 = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
    JourSemEN = Liste2(Application.Match(Jour, Liste1, 0) + (LBound(Liste2) = 0))
    End Function
    et tu appelles ta fonction, toujours en A2
    =JourSemEN(JOURSEM(B2;2))

    cordialement

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut
    Question : ton excel est en français ou en anglais ?
    s'il est en anglais, il suffit de faire une formule en A pour recopier la date et de faire un format de cellule personnalisé du type
    ddd;;
    si c'est une date(nombre positif), tu auras les 3 première lettre du jour de la semaine, si c'est vide, négatif ça restera blanc, si c'est du texte, il sera affiché.

    avec un excel en français, une formule en colonne A peut remplir la même fonction
    A1 : =SI(B1>0;CHOISIR(JOURSEM(B1;2);"Mon"; "Tue"; "Wed"; "Thu"; "Fri"; "Sat"; "Sun");"")
    J'ai piqué les infos sur la macro de Fred65200
    A+

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour à tous

    merci Gorfael de me rappeler les fonctions de base d'excel, j'avais oublier CHOISIR.

    cordialement

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 40
    Par défaut
    Merci a vous pour cette aide remarquable... j'ai poster 2 autres questions qui me perturbent aussi, j'espere que vous pourrez m'aider...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher date des jours de la semaine
    Par anto2b dans le forum Android
    Réponses: 1
    Dernier message: 18/07/2013, 15h47
  2. date, intervalle de date et jour de la semaine
    Par overider dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/03/2007, 17h51
  3. nommer une feuille excel par la date du jour.
    Par Bourezak dans le forum Access
    Réponses: 3
    Dernier message: 22/01/2007, 15h22
  4. Réponses: 2
    Dernier message: 26/12/2006, 12h49
  5. [VBA Excel] convertir une date francaise au format anglais
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/12/2005, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo