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 :

Enregistreur de Macro :Code VBA pour incrémenter des dates sur une periode de 1 mois


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 57
    Par défaut Enregistreur de Macro :Code VBA pour incrémenter des dates sur une periode de 1 mois
    Bonjour,

    J'ai enregistré automatiquement sur Macro Excel des actions hebdomadaires afin de ne pas répéter les tâches à chaque fois. (2 fois par semaine)
    Les onglets sont numérotées à la date du jour. Sur ce exemple les dates partent du 23-08-19 au 13-08-19. Le souci est que si je lance la macro aujourdhui 27-08-19,
    le traitement ne prend pas en compte la date du 26-08-19 car elle reste figée entre le 23-08-19 au 13-08-19.
    J'aimerais savoir comment faire évoluer la période de date concernée? Cad enregistrer automatiquement les dates du 26-08-19, du 27-08-19 etc...
    ou pour faire simple via un code VBA, trouver un moyen de remplacer les dates sur une période décalée de 1 mois à chaque nouvel enregistrement.
    Merci d'avance pour votre aide
    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
     
     
    Sub Macro_AF_Imp()
     ActiveCell.Select
        ActiveSheet.PasteSpecial Format:="Texte Unicode", Link:=False, _
            DisplayAsIcon:=False
        ActiveCell.Columns("A:A").EntireColumn.Select
        Selection.Delete Shift:=xlToLeft
        ActiveCell.Rows("1:1").EntireRow.Select
        Selection.AutoFilter
        ActiveCell.Offset(0, 2).Columns("A:A").EntireColumn.Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'23_08_19'!C[-1],1,FALSE)"
        Selection.AutoFill Destination:=ActiveCell.Range("A1:A9"), Type:= _
            xlFillDefault
        ActiveCell.Range("A1:A9").Select
        ActiveCell.Select
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'20_08_19'!C[-1],1,FALSE)"
        ActiveCell.Select
        Selection.AutoFill Destination:=ActiveCell.Range("A1:A9")
        ActiveCell.Range("A1:A9").Select
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'13_08_19'!C[-1],1,FALSE)"
        ActiveCell.Select
        Selection.AutoFill Destination:=ActiveCell.Range("A1:A9")
        ActiveCell.Range("A1:A9").Select

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    Travailler avec les cellules est rarement indispensable et souvent d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Columns("A:A").EntireColumn.Select
        Selection.Delete Shift:=xlToLeft
    S'écrit simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Columns("A:A").EntireColumn.Delete Shift:=xlToLeft
    Pour tes histoires de dates, ce n'est vraiment pas clair du tout ce que tu cherches à faire, des captures d'écran avant/après seraient les bienvenues.
    A tout hasard, si tu souhaites remplacer les dates en dur dans ton code par la date du jour tu peux utiliser la fonction date qui renvoie la date du jour, combinée a un replace vu que tes onglets utilisent "_" et non "/" comme séparateur de date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'23_08_19'!C[-1],1,FALSE)"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'" & Replace(Date, "/", "_") & "'!C[-1],1,FALSE)"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 57
    Par défaut
    halaster08,

    Désolé suis novice en VBA. En fait je joins un exemple du fichier de Traitement. Voici les actions que j'effectue dans l'ordre:

    1/ Je copie les résultats de ma requête dans un nouvel onglet du fichier source Excel.
    2/J'ouvre l'enregistreur de macro (afin d'enregistrer toutes mes actions et les répeter via la macro)
    3/Je réalise une RechercheV sur 1 période d'1 mois sur les onglets précédents pour supprimer toutes les lignes qui apparaissent dans le nouvel onglet
    4/Ensuite je ferme la macro
    5/le jour suivant(3 jours plus tard) je refais la manipulation mais cette fois ci en lancant l'enregistreur Macro=> sauf que la macro ne prend pas en compte le dernier onglet précédemment enregistré car elle reste figée sur les ongles de la période sélectionnée lors de l'enregistrement de la Macro.

    Mon souci est de trouver un moyen pour prendre en compte la date de l'onglet précédent et de decaler la periode toujours sur un mois calendaire. J'espère que je me fait mieux comprendre.FICHIER TRAITEMENT.docx

Discussions similaires

  1. [Toutes versions] Code VBA pour comparer des dates
    Par Tagada_Or dans le forum VBA Access
    Réponses: 17
    Dernier message: 24/09/2014, 09h08
  2. [Toutes versions] Macro ou code VBA pour effacer des caracteres et aller a la ligne dans un meme cellule
    Par ghisunit dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/04/2012, 15h29
  3. Code VBA pour importer des données vers Excel
    Par thanmirt dans le forum SDK
    Réponses: 1
    Dernier message: 09/04/2011, 17h53
  4. [AC-2003] code VBA pour faire des tri
    Par mb861972 dans le forum VBA Access
    Réponses: 7
    Dernier message: 14/10/2010, 16h05
  5. [XL-2003] Code VBA pour fusion des Dossiers
    Par em_bengue dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/04/2009, 00h03

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