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

  1. #21
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 936
    Points : 28 932
    Points
    28 932
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    D'où la seconde option
    Citation Envoyé par corona Voir le message
    Ceci dit supprimer plusieurs lignes dans une boucle peut être accéléré en utilisant l'instruction Application.ScreenUpdating
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.ScreenUpdating = False
     ' Boucle + Instructions
     ......
     .....
    Application.ScreenUpdating = True

  2. #22
    Membre à l'essai
    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
    Points : 17
    Points
    17
    Par défaut
    Je l'ai ajouté et je note aucune modification, toujours le même temps pour l'exécution : 1 min

    Merci.

    Cordialement.

  3. #23
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Ce code ajoute temporairement une ligne d'entête, filtre les données sur la date du jour et supprime les lignes correspondantes :

    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
    50
    51
    52
    53
    54
    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)
     'Set Wbk = ActiveWorkbook
        With Wbk.Worksheets(1)
            .Rows(1).Insert
            .[A1] = "bidon"
            .AutoFilterMode = False
            Set plage = .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
            plage.AutoFilter 1, Format(Date, "dd/mm/yyyy")
            Set plage = plage.Offset(1).Resize(plage.Rows.Count - 1)
            If Application.Subtotal(103, plage) > 0 Then
                Set plage = plage.SpecialCells(xlCellTypeVisible)
                plage.EntireRow.Delete
                .AutoFilterMode = False
            .Rows(1).Delete
            End If
    '        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)
     
            On Error Resume Next
            For I = 1 To 5
     
                Set Ws = ThisWorkbook.Worksheets(Format(Date - JourSem + I, "dd-mm-yyyy"))   '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
            Next I
            On Error GoTo 0
     
        'Wbk.Close True
        Set Wbk = Nothing
     End With
    Else
        MsgBox "Fichier " & Chemin & " inexistant"
    End If
    End Sub

  4. #24
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 936
    Points : 28 932
    Points
    28 932
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Désolé, je n'avais pas vu que l'instruction était déjà présente dans le code.
    Si des calculs entrent en ligne de compte, il y a aussi l'instruction éventuellement à ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Application.Calculation = xlCalculationManual
     ' Code
     ' .......
    Application.Calculation = xlCalculationAutomatic

  5. #25
    Membre à l'essai
    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
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse Daniel,

    Cela fonctionne pour la date du jour, toutefois, j'ai essayé que le filtre s'applique pour tous les jours de la semaine en cours s'en grande réussite. Voici ce que j'a rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     For N = 1 To 5
            Set plage = .Range([A1], .Cells(.Rows.Count, 1).End(xlUp))
            plage.AutoFilter 1, Format(Date - JourSem + N, "dd-mm-yyy")
                Next N
    Merci pour tout.

    Bonne soirée

    Cordialement.

  6. #26
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Essaie :

    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
    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)
     'Set Wbk = ActiveWorkbook
        With Wbk.Worksheets(1)
     
            JourSem = Application.Weekday(Date, 2)
     
            .Rows(1).Insert
            .[A1] = "bidon"
            .AutoFilterMode = False
            Set plage = .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
            plage.AutoFilter 1, ">=" & Format(Date - JourSem + 1, "mm/dd/yyyy"), xlAnd, _
                "<=" & Format(Date - JourSem + 5, "mm/dd/yyyy")
            Set plage = plage.Offset(1).Resize(plage.Rows.Count - 1)
            If Application.Subtotal(103, plage) > 0 Then
                Set plage = plage.SpecialCells(xlCellTypeVisible)
                plage.EntireRow.Delete
                .AutoFilterMode = False
            .Rows(1).Delete
            End If
            On Error Resume Next
            For I = 1 To 5
     
                Set Ws = ThisWorkbook.Worksheets(Format(Date - JourSem + I, "dd-mm-yyyy"))   '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
            Next I
            On Error GoTo 0
     
        'Wbk.Close True
        Set Wbk = Nothing
     End With
    Else
        MsgBox "Fichier " & Chemin & " inexistant"
    End If
    End Sub

  7. #27
    Membre à l'essai
    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
    Points : 17
    Points
    17
    Par défaut
    Bonjour Daniel, tout fonctionne à la perfection.

    Merci, merci, et merci pour tout.
    Très bonne journée, à bientôt

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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