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 :

Copier une date X fois et l'incrémenter pendant Z ans


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Par défaut Copier une date X fois et l'incrémenter pendant Z ans
    Bonjour,

    Je suis nouveau en Excel VBA et j'ai besoin de votre aide !!

    Je souhaite copier 23 fois une cellule contenant une date et ensuite l'incrémenter et répéter la même chose pour une durée de 3 ans.
    Et ensuite transposer une colonne en ligne plusieurs fois.
    Et faire la moyenne de ma nouvelle ligne.

    Nom : Capture.PNG
Affichages : 182
Taille : 25,0 Ko

    Merci d'avance de votre aide !!!

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Le code d'après votre copie d'écran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Report()
        Dim DerLig As Long, i As Long, Lig As Long
        Application.ScreenUpdating = False
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        Lig = 3
        For i = 3 To DerLig Step 6
            Cells(Lig, "E") = Format(Cells(i, "A") * 1, "dd/mm/yyyy")
            Cells(Lig, "F") = Format(Cells(i, "A") * 1, "hh:mm")
            Range(Cells(Lig, "G"), Cells(Lig, "L")) = Application.Transpose(Range(Cells(i, "B"), Cells(i + 5, "B")))
            Cells(Lig, "M") = Application.WorksheetFunction.Average(Range(Cells(Lig, "G"), Cells(Lig, "L")))
            Lig = Lig + 1
        Next i
    End Sub
    Cdlt

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Par défaut Problème quand une cellule de la colonne B est nulle
    Bonjour,

    Je tiens à vous remercier le code marche bien !
    Le seul problème c'est que quand une cellule est vide ça ne se transpose pas et s'arrête à cette ligne, pourtant il y a des cellules non vide après.

    Cdt,

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Le seul problème c'est que quand une cellule est vide ça ne se transpose pas et s'arrête à cette ligne, pourtant il y a des cellules non vide après.
    Vous voulez dire qu'il y a des trous dans les dates?

    Pouvez-vous me faire une copie d'écran de la plage en question?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Par défaut
    Nom : Capture.PNG
Affichages : 126
Taille : 21,4 Ko

    Citation Envoyé par ARTURO83 Voir le message
    Bonjour,

    Le code d'après votre copie d'écran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Report()
        Dim DerLig As Long, i As Long, Lig As Long
        Application.ScreenUpdating = False
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        Lig = 3
        For i = 3 To DerLig Step 6
            Cells(Lig, "E") = Format(Cells(i, "A") * 1, "dd/mm/yyyy")
            Cells(Lig, "F") = Format(Cells(i, "A") * 1, "hh:mm")
            Range(Cells(Lig, "G"), Cells(Lig, "L")) = Application.Transpose(Range(Cells(i, "B"), Cells(i + 5, "B")))
            Cells(Lig, "M") = Application.WorksheetFunction.Average(Range(Cells(Lig, "G"), Cells(Lig, "L")))
            Lig = Lig + 1
        Next i
    End Sub
    Cdlt

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Et avec ceci
    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
    Sub Report()
        Dim DerLig As Long, i As Long, Lig As Long
        Application.ScreenUpdating = False
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        Lig = 3
        For i = 3 To DerLig Step 6
            Cells(Lig, "E") = Format(Cells(i, "A") * 1, "dd/mm/yyyy")
            Cells(Lig, "F") = Format(Cells(i, "A") * 1, "hh:mm")
            Range(Cells(Lig, "G"), Cells(Lig, "L")) = Application.Transpose(Range(Cells(i, "B"), Cells(i + 5, "B")))
            On Error Resume Next
            If Err.Number = 0 Then Cells(Lig, "M") = Application.WorksheetFunction.Average(Range(Cells(Lig, "G"), Cells(Lig, "L")))
            On Error GoTo 0
            Lig = Lig + 1
        Next i
    End Sub

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Par défaut
    ça a marché, merci beaucoup !!!

    Citation Envoyé par ARTURO83 Voir le message
    Bonjour,

    Le code d'après votre copie d'écran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Report()
        Dim DerLig As Long, i As Long, Lig As Long
        Application.ScreenUpdating = False
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        Lig = 3
        For i = 3 To DerLig Step 6
            Cells(Lig, "E") = Format(Cells(i, "A") * 1, "dd/mm/yyyy")
            Cells(Lig, "F") = Format(Cells(i, "A") * 1, "hh:mm")
            Range(Cells(Lig, "G"), Cells(Lig, "L")) = Application.Transpose(Range(Cells(i, "B"), Cells(i + 5, "B")))
            Cells(Lig, "M") = Application.WorksheetFunction.Average(Range(Cells(Lig, "G"), Cells(Lig, "L")))
            Lig = Lig + 1
        Next i
    End Sub
    Cdlt

  8. #8
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Je reviens sur le sujet, car après réflexion je pense que la méthode n'est pas bonne. Problème auquel je suppose que vous aussi n'y avait pas pensé.
    En effet je n'ai pas tenu compte des changements d'horaire le dernier dimanche de mars et le dernier dimanche d'octobre de chaque année. En octobre on a 1 heure de plus, soit 2 fois 2h00 du matin, alors qu'en mars on saute de 1h50 à 3h00, donc il manque 1 heure.
    Prière de me dire si je suis dans le vrai, auquel cas je revois ma copie.

    Merci

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

Discussions similaires

  1. [XL-2010] Copier une date x fois et incrementer +1 mois à chaque fois
    Par soisfran dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 23/05/2023, 11h14
  2. [Toutes versions] Copier une date dans la case et l'onglet correspondant
    Par Turoks dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/09/2018, 18h00
  3. Copier une chaîne x fois
    Par Beaudelicius dans le forum Général Python
    Réponses: 3
    Dernier message: 24/02/2012, 18h40
  4. [XL-2003] Comment copier une date d'un TextBox vers un fichier Excel
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/09/2010, 01h14
  5. [Toutes versions] Copier une date sans inverser le jour et le mois
    Par peofofo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/05/2009, 17h29

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