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 :

Année en cours


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Femme Profil pro
    Responsable des études
    Inscrit en
    Mai 2019
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2019
    Messages : 66
    Points : 71
    Points
    71
    Par défaut Année en cours
    Bonjour,

    Je voudrais créer un tableau avec l'année en cours, allant de la date du jour à 1 an auparavant. Du coup j'ai fait ça :

    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
    Sub AnneeEnCours()
     
        Dim F As Worksheet
        Set F = Worksheets("AnneeEnCours")
     
        Dim lig As Integer
        Dim nbJour As Integer
        Dim dateJour As Date
     
        nbJour = 365
        dateJour = Now()
     
        F.Cells(2, 1) = dateJour
     
        For lig = 3 To nbJour
            F.Cells(lig, 1) = dateJour - lig + 2
        Next   
    End Sub
    Ca marche mais comment faire pour récupérer l'année en cours + tous les jours du premier mois.
    Exemple nous sommes le 26 novembre 2020, si j'exécute mon code, j'aurais du 26/11/2019 au 26/11/2020
    Je voudrais avoir du 01/11/2019 au 26/11/2020

    J'espère que c'est assez claire, sinon n'hésitez pas à me poser des questions.

    Clémence

  2. #2
    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 754
    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 754
    Points : 28 605
    Points
    28 605
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici un code qui génère une suite de date commençant le 1er jour du même mois qu'aujourd'hui de l'année dernière, jusqu'à ce jour
    La cellule de départ est la cellule B1 de la feuille nommée Feuil1 du classeur où se trouve le code VBA et l'écriture se fait en colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub T()
      Dim StartRange As Range
      Set StartRange = ThisWorkbook.Worksheets("Feuil1").Range("B1")
      With StartRange
      .Value = DateSerial(Year(Date) - 1, Month(Date), 1)
      .DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:=xlDay, Step:=1, Stop:=DateSerial(Year(Date), Month(Date), Day(Date))
      End With
      Set StartRange = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    bonjour à tous
    bonjour Philippe Tulliez : (+1) de ma part, seulement je crois que la demandeur cherches un ordre décroissant...si tu permets peut on ajouter l'ordre dans ton code?

    version bricoleur et débutant :

    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
    Sub AnneeEnCours()
        Dim F As Worksheet
        Set F = Worksheets("AnneeEnCours")
        Dim lig As Integer
        Dim nbJour As Integer
        Dim dateJour As Date
        dateJour = Date
        mois = Month(Date)
        année = Year(Date) - 1
        date_mois_année_ancienne = DateSerial(année, mois, 1)
        nb_jours = dateJour - date_mois_année_ancienne
        F.Cells(2, 1) = dateJour
        For lig = 3 To nb_jours + 2
            F.Cells(lig, 1) = F.Cells(lig - 1, 1) - 1
        Next
    End Sub
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    j'ai trouvé philippe
    j'enregistre cette procédure que je ne connais pas ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub T()
      Dim StartRange As Range
      Set StartRange = ThisWorkbook.Worksheets("AnneeEnCours").Range("B2")
      With StartRange
      .Value = Date
      .DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:=xlDay, Step:=-1, Stop:=DateSerial(Year(Date) - 1, Month(Date), 1)
      End With
      Set StartRange = Nothing
    End Sub
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  5. #5
    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 754
    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 754
    Points : 28 605
    Points
    28 605
    Billets dans le blog
    53
    Par défaut
    Bonjour Bennasr,
    Merci pour ton appréciation
    seulement je crois que la demandeur cherches un ordre décroissant...si tu permets peut on ajouter l'ordre dans ton code?
    Si je lis bien la demande c'est "Je voudrais avoir du 01/11/2019 au 26/11/2020" et c'est ce que fait la procédure que j'ai proposée et qui est basée sur une fonctionnalité native d'excel qui est la recopie en série
    Si maintenant, il faut partir du 26/11/2020 vers le 1/11/2019, il suffit d'inverser les données de la cellule de départ avec l'argument Stop et remplacer la valeur constante 1 de l'argument Step par -1
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre régulier
    Femme Profil pro
    Responsable des études
    Inscrit en
    Mai 2019
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2019
    Messages : 66
    Points : 71
    Points
    71
    Par défaut Merci les garçons
    Merci beaucoup ! Ca marche parfaitement, après niveau ordre au final c'est pas très important je peux toujours le trier avec le tableau.


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

Discussions similaires

  1. connaitre l'année en cours
    Par lauloune dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/01/2007, 16h00
  2. [Dates] afficher automatiquement l'année en cours
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 11/05/2006, 14h57
  3. [SQL] critère année en cours
    Par r@phy dans le forum Access
    Réponses: 2
    Dernier message: 11/02/2006, 18h43
  4. Inferieur ou egal a l'année en cours
    Par gohu13 dans le forum Access
    Réponses: 2
    Dernier message: 19/12/2005, 10h35
  5. Réponses: 16
    Dernier message: 29/04/2005, 14h39

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