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 :

Sélection semaine en cours


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 28
    Par défaut Sélection semaine en cours
    Bonsoir,

    Je voudrai solliciter votre aide pour la problématique ci-dessous:

    j'ai tenté une macro qui me permet de détecter le numéro de la semaine en cours et se déplacer d'une case à gauche et de 2 cases en bas. Ci-joint l'exemple (la cellule en jaune est celle que je veux sélectionner) mais je ne sais pas pourquoi ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_Open()
    Dim cellule As Range
    For Each cellule In Sheets("Feuil1").Range("A1:N1")
    If cellule = Date Then
    Cells(1, cellule.Column).Offset(rowOffset:=1, columnOffset:=-1).Select
    End If
    Next cellule
    End Sub
    Classeur1.xlsm

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_Open()
    Dim Cellule As Range
     
    With Worksheets("Feuil1")
        For Each Cellule In .Range("A2:BB2")
            If Cellule = Date - DatePart("w", Date, vbMonday) + 1 Then
                Cellule.Offset(1, -1).Select
                Exit Sub
            End If
        Next Cellule
    End With
    End Sub

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    @mercatog
    je suppose que cette macro sera executée tout les lundi seulement!!!
    dans le cas contraire il y aura un soucis
    je te propose de chopper le lundi de la semaine precedente du lundi jusqu'au dimanche de la semaine suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub test2()
        Dim sem&, ladate As Date, an&, jour
        sem = DatePart("WW", Date, vbMonday, vbFirstFourDays)
        'sem = DatePart("WW", CDate("07/03/2019"), vbMonday, vbFirstFourDays) 'pour tester aujourd'hui avec un jour superieur a la date dans !!!! la semaine actuelle
        an = Year(Date)
        jour = 1    ' 1 pour lundi,2 pour mardi etc....
        ladate = DateSerial(an, 1, 1)
        ladate = DateAdd("WW", sem - 1, ladate) - 7
        'resultat
        MsgBox Format(ladate - (Weekday(ladate, vbMonday) - jour), "dddd dd mmmm yyyy", vbMonday, vbFirstFourDays)
        'reste plus qu'a faire un find ou autre methode de selection 
    End Sub
    celle ci fonctionnera du lundi au dimanche de la semaine en cours sauf erreur de ma part
    edit:
    il y aurait une solution encore plus simple avec weekday
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test3()
    'MsgBox Weekday(Date, vbMonday)
    'MsgBox Date - (Weekday(Date, vbMonday) - 1) - 7
    For Each Cellule In Sheets("Feuil1").Range("A2:N2")
    If Cellule = CDate(Date - (Weekday(Date, vbMonday) - 1) - 7) Then Cellule.Offset(1).Select: Exit For
    Next
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    Bonjour
    @mercatog
    je suppose que cette macro sera executée tout les lundi seulement!!!
    dans le cas contraire il y aura un soucis
    Patrick bonjour

    D'où tu tiens cette affirmation?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Lundi(ByVal Dte As Date) As Date
     
    Lundi = Dte - DatePart("w", Dte, vbMonday) + 1
    End Function

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    autant pour moi Mercatog
    c'est parce que j'ai testé avec des dates qui n'etait pas des lundi dans la grille excel
    ca match uniquement si dans la ligne 2 il n'y a que des lundi effectivement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim Cellule As Range
     autherdate = CDate("07/03/2019")
    With Worksheets("Feuil1")
        For Each Cellule In .Range("A2:N2")
            If Cellule = autherdate - DatePart("WW", autherdate, vbMonday) + 1 Then
                Cellule.Offset(1, -1).Select
                Exit Sub
            End If
        Next Cellule
    End With
    End Sub
    son tableau
    Nom : Capture.JPG
Affichages : 577
Taille : 95,0 Ko
    si une date n'est pas un lundi dans la ligne 2 et que l'on utilise "Date" ca foire pour la semaine precedente
    d'ou mon idée de ramener date au lundi precedent avec weekday ou autre

    il y a aussi ce truc qui me perturbe
    l'argument "WW" ou "W"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     autherdate = CDate("07/03/2019")
    MsgBox autherdate - DatePart("WW", autherdate, vbMonday) + 1
    MsgBox autherdate - DatePart("W", autherdate, vbMonday) + 1
    si je comprends bien un seul "W" enleve une seule semaine c'est ca ?
    methode avec weekday
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        Dim Cellule As Range
        'autherdate = CDate("04/03/2019") '(testé)
        'autherdate = CDate("10/03/2019") '(testé)
        'autherdate = CDate("09/03/2019") ' (testé)
        autherdate = Date    ' (testé)
        'MsgBox autherdate - Weekday(autherdate, vbMonday) + 1 - 7
        With Worksheets("Feuil1")
            For Each Cellule In .Range("A2:N2")
                If Cellule = autherdate - Weekday(autherdate, vbMonday) + 1 - 7 Then Cellule.Offset(1).Select: Exit For
            Next Cellule
        End With
    End Sub
    je pense avoir pigé le truc du "W" / "WW"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test2()
    autherdate = CDate("07/03/2019")
    MsgBox autherdate - Weekday(autherdate, vbMonday) + 1
    MsgBox autherdate - DatePart("W", autherdate, vbMonday) + 1
    End Sub
    il semblerait que ca enleve le nombre de jour par rapport au meme avec weekday
    je ne l'avais jamais utilisé comme cela
    merci
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 28
    Par défaut
    Merci à vous deux pour votre aide! ça match parfaitement avec ce que je voulais.


    MERCI !!

Discussions similaires

  1. date début et fin semaine en cours
    Par youness78 dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/08/2007, 11h40
  2. [Dates] Jour de la semaine en cours
    Par Panther dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2007, 14h02
  3. Réponses: 13
    Dernier message: 25/05/2007, 13h29
  4. Obtenir le numéro de semaine en cours
    Par beauseigne dans le forum Access
    Réponses: 2
    Dernier message: 21/04/2006, 18h32
  5. [C++ - MFC] numéro de la semaine en cours...?
    Par Gothico dans le forum MFC
    Réponses: 10
    Dernier message: 18/11/2003, 14h31

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