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 :

Fonction date semaine [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut Fonction date semaine
    Bonjour à tous,

    Je vous sollicite une nouvelle fois car j'ai besoins de votre aide pour résoudre un petit problème.

    J'ai crée un code qui copie les données d'une feuille ("Test") par rapport à la date du jour vers une autre feuille (CopieTest).

    Mais voilà, j'aurais aimé que ce code copie le contenu de l'ensemble des feuilles par rapport à la semaine en cour.
    C'est à dire que actuellement nous sommes semaine 27, et j'aurai aimé copier le contenu des feuilles du 02-07-2012, 03-07-2012, 04-07-2012, 05-07-2012, 06-07-2012.

    Vous trouverez ci-joint les fichiers pour cette exemple et ci-dessous les lignes de code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Option Explicit
    Sub Copie()
     
    Dim Wbk As Workbook
    Dim Ws As Worksheet
    Dim Chemin As String
    Dim ligne As Long
    Dim I As Integer
     
    Application.ScreenUpdating = False
    Chemin = "C:\CopieTest.xlsx"
    If Dir(Chemin) <> "" Then
        Set Wbk = Workbooks.Open(Filename:=Chemin, UpdateLinks:=False)
     
        With Wbk.Worksheets(1)
     
        ligne = .Cells(.Rows.Count, "A").End(xlUp).Row      'supprime les données du jour
          For I = ligne To 1 Step -1
          If Cells(I, 1).Value = Date Then
           Cells(I, 1).EntireRow.Delete
        End If
     
        Next I
     
            For Each Ws In ThisWorkbook.Worksheets      'copie les données du jour
     
                If Ws.Name = Format(Date, "dd-mm-yyyy") Then    'recherche les onglets avec la date du jour
                   ligne = Ws.Range("A" & Range("A:A").Rows.Count).End(xlUp).Row
                    Ws.Range("A1:B" & ligne).Copy
                    .Range("A1").Insert Shift:=xlDown
     
                    End If
            Next Ws
        End With
     
        'Wbk.Close True
        Set Wbk = Nothing
     
    Else
        MsgBox "Fichier " & Chemin & " inexistant"
    End If
    End Sub
    Test.xlsx
    CopieTest.xlsx

    Merci beaucoup pour votre aide.

    Bonne journée

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je n'ai testé que la partie "date" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Sub Copie()
     
    Dim Wbk As Workbook
    Dim Ws As Worksheet
    Dim Chemin As String
    Dim ligne As Long
    Dim I As Integer
    Dim JourSem As Integer
     
    Application.ScreenUpdating = False
    Chemin = "C:\CopieTest.xlsx"
    If Dir(Chemin) <> "" Then
        Set Wbk = Workbooks.Open(Filename:=Chemin, UpdateLinks:=False)
     
        With Wbk.Worksheets(1)
     
            ligne = .Cells(.Rows.Count, "A").End(xlUp).Row      'supprime les données du jour
              For I = ligne To 1 Step -1
              If Cells(I, 1).Value = Date Then
               Cells(I, 1).EntireRow.Delete
            End If
     
            Next I
     
            JourSem = Application.Weekday(Date, 2)
            For Each Ws In ThisWorkbook.Worksheets      'copie les données du jour
                For I = 1 To 5
                    If Ws.Name = Format(Date - JourSem + I, "dd-mm-yyyy") Then    'recherche les onglets avec la date du jour
                       ligne = Ws.Range("A" & Range("A:A").Rows.Count).End(xlUp).Row
                        Ws.Range("A1:B" & ligne).Copy
                        .Range("A1").Insert Shift:=xlDown
                    End If
                Next I
            Next Ws
        End With
     
        'Wbk.Close True
        Set Wbk = Nothing
     
    Else
        MsgBox "Fichier " & Chemin & " inexistant"
    End If
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut
    Bonjour Daniel.C,

    Merci beaucoup pour ta réponse, cela fonctionne parfaitement. J'ai également réussi la fonction "date".
    Toutefois, je voulais savoir si il était possible que la copie des données se fasse de façon décroissante, c'est à dire la date la plus grande jusqu'a la plus petite.
    De plus, que signie le chiffre "2" sur cette ligne de code : JourSem = Application.Weekday(Date, 2)

    Pour ceux que cela intéresse, voici la ligne de code avec la fonction "date"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Option Explicit
    Sub Copie()
     
    Dim Wbk As Workbook
    Dim Ws As Worksheet
    Dim Chemin As String
    Dim ligne As Long
    Dim I As Integer
    Dim N As Integer
    Dim JourSem As Integer
     
     
    Application.ScreenUpdating = False
    Chemin = "C:\CopieTest.xlsx"
    If Dir(Chemin) <> "" Then
        Set Wbk = Workbooks.Open(Filename:=Chemin, UpdateLinks:=False)
     
        With Wbk.Worksheets(1)
        JourSem = Application.Weekday(Date, 2)
        ligne = .Cells(.Rows.Count, "A").End(xlUp).Row      'supprime les données du jour
          For I = ligne To 1 Step -1
            For N = 1 To 5
              If Cells(I, 1).Value = Date - JourSem + N Then
           Cells(I, 1).EntireRow.Delete
        End If
         Next N
        Next I
     
     
            JourSem = Application.Weekday(Date, 2)
            For Each Ws In ThisWorkbook.Worksheets      'copie les données du jour
                For I = 1 To 5
                If Ws.Name = Format(Date - JourSem + I, "dd-mm-yyyy") Then  'recherche les onglets avec la date du jour
                   ligne = Ws.Range("A" & Range("A:A").Rows.Count).End(xlUp).Row
                    Ws.Range("A1:B" & ligne).Copy
                    .Range("A1").Insert Shift:=xlDown
     
                    End If
                    Next I
            Next Ws
        End With
     
        'Wbk.Close True
        Set Wbk = Nothing
     
    Else
        MsgBox "Fichier " & Chemin & " inexistant"
    End If
    End Sub
    Merci encore Daniel.

    Cordialement

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    De plus, que signie le chiffre "2" sur cette ligne de code : JourSem = Application.Weekday(Date, 2)
    "WeekDay" est la transcription VBA de la fonction Excel JOURSEM. Le paramètre "2" signifie que le premier jour de la semaine est le lundi.
    Sinon, pour avoir les feuilles du vendredi au lundi, remplace :

    par :

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut
    Merci Daniel pour la précision sur le "Weekday".

    Cela ne fonctionne pas en modifiant la ligne :

    For I = 5 to 1

    Rien ne ce copie sur la feuille copie test.

    Merci

    Cordialement.

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Bonjour,

    Dans ce cas il faut préciser le "pas"

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut
    Bonjour fring,

    Sa ne marche pas non plus, les dates sont toujours dans l'ordre croissant.

    Merci

    Cordialement

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

Discussions similaires

  1. Fonction date semaine
    Par xc78370 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/09/2009, 08h49
  2. Réponses: 6
    Dernier message: 26/03/2009, 10h32
  3. Som dans form continu en fonction date selectionée dans form
    Par samlepiratepaddy dans le forum Access
    Réponses: 3
    Dernier message: 26/09/2005, 13h05
  4. Fonction Date
    Par marivi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/08/2005, 16h30
  5. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33

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