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 :

Trouver le numéro de la semaine et recopier vers le bas ? [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut Trouver le numéro de la semaine et recopier vers le bas ?
    Salut tout le monde,
    voici mon problème :

    Je remplis une feuille excel dynamiquement avec du VBA.
    La date jj/mm/aaaa est dans la première colonne.
    Je veux mettre le numéro de la semaine correspondant dans la colonne 17, puis recopier vers le bas jusqu'à la fin du tableau, sachant que je ne connais pas à l'avance le nombre de lignes concernées.

    Voila où j'en suis, mais ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        WDate = Cells(2, 1).Value
        Cells(2, 13).Select
        Cells(2, 13).Formula = "=ENT(MOD(ENT((A2-2)/7)+0,6;52+5/28))+1"
        Selection.AutoFill Destination:=Range(Cells(2, 13), Cells(ActiveCell.SpecialCells(xlLastCell).Row, 13)), Type:=xlFillDefault

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
     
    Dim i As Long
     
    For i = 1 To Range("A65536").End(xlUp).Row
     
        Cells(i, 3).FormulaLocal = "=ENT(MOD(ENT((A" & i & "-2)/7)+0,6;52+5/28))+1"
     
    Next
     
    End Sub
    Testé et OK.

    A bientôt.

    EDIT : remplace le 3 par 17 pour mettre cela dans la 17ème colonne et non la 3ème.

  3. #3
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Long
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        Range("Q" & i).Value = DatePart("ww", Range("A" & i).Value)
    Next i
    un F1 sur DatePart pour choisir les paramètre qui te conviennent
    Syntaxe

    DatePart(interval, date[,firstdayofweek, firstweekofyear]])

  4. #4
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    En fin de compte j'ai utilisé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        D = 2
        While D <= ActiveCell.SpecialCells(xlLastCell).Row
            WDate = Cells(D, 1).Value
            Cells(D, 13).Value = DatePart("ww", WDate, vbMonday, vbFirstFourDays)
            D = D + 1
        Wend
    Laquelle des 2 méthodes est la plus rapide ?

    Et tout cas, merci beaucoup.

  5. #5
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Je me répond pour donner l'astuce à tout le monde :

    Voici le code que j'ai utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            WDate = Cells(2, 1).Value
            Range("M2").Select
            Range("M2").NumberFormat = "General"
            Range("M2").FormulaLocal = "=ENT(MOD(ENT((A2-2)/7)+0,6;52+5/28))+1"
            Selection.AutoFill Destination:=Range("M2", Cells(ActiveCell.SpecialCells(xlLastCell).Row, 13)), Type:=xlFillDefault
            Calculate
    Ce code est BEAUCOUP plus rapide que le précédent avec la boucle sur le DatePart.

    Encore merci à tous de votre aide.

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

Discussions similaires

  1. [XL-2013] Recopie vers le bas et décalage
    Par solorac dans le forum Excel
    Réponses: 4
    Dernier message: 18/06/2015, 15h42
  2. [XL-2007] Trouver le numéro de la semaine en cours
    Par apt dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 15/08/2012, 01h31
  3. [XL-2007] Tableau - recopie vers le bas d'une formule
    Par aereno dans le forum Excel
    Réponses: 1
    Dernier message: 16/06/2011, 17h06
  4. Trouver le numéro de semaine d'une date
    Par sat83 dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/05/2008, 12h05
  5. [VBA-E]Trouver le Numéro de semaine
    Par ekynoxx dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/05/2007, 16h27

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