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 :

Carnet d'entrainement VBA , sauvegarde cumulative


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Par défaut Carnet d'entrainement VBA , sauvegarde cumulative
    Bonjour, je débute en VBA, j'ai trouvé le fichier suivant sur le web : carnetmuscu.xls

    J'ai ajouté une macro :
    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
    Sub sauvegarder()
    '
    ' sauvegarder Macro
    '
     
    '
        Range("B8:V31").Select
        Selection.Copy
        Sheets("Dates").Select
        Range("D2:D3").Select
        ActiveSheet.Paste
        Sheets("Séances").Select
        ActiveWindow.ScrollRow = 27
        ActiveWindow.ScrollRow = 26
        ActiveWindow.ScrollRow = 25
        ActiveWindow.ScrollRow = 24
        ActiveWindow.ScrollRow = 23
        ActiveWindow.ScrollRow = 22
        ActiveWindow.ScrollRow = 21
        ActiveWindow.ScrollRow = 20
        ActiveWindow.ScrollRow = 19
        ActiveWindow.ScrollRow = 18
        ActiveWindow.ScrollRow = 17
        ActiveWindow.ScrollRow = 15
        ActiveWindow.ScrollRow = 14
        ActiveWindow.ScrollRow = 13
        ActiveWindow.ScrollRow = 12
        ActiveWindow.ScrollRow = 11
        ActiveWindow.ScrollRow = 10
        ActiveWindow.ScrollRow = 9
        ActiveWindow.ScrollRow = 8
        ActiveWindow.ScrollRow = 7
        ActiveWindow.ScrollRow = 6
        ActiveWindow.ScrollRow = 5
        ActiveWindow.ScrollRow = 4
        ActiveWindow.ScrollRow = 3
        ActiveWindow.ScrollRow = 2
        ActiveWindow.ScrollRow = 1
        ActiveWindow.ScrollColumn = 6
        ActiveWindow.ScrollColumn = 5
        ActiveWindow.ScrollColumn = 1
        Range("B8:B9").Select
    End Sub
    Néanmoins je souhaite à chaque fois que je modifie la feuille "séance" et que je clique sur le bouton "sauvegarder" que ces données s'ajoute en dessous des précédentes sur la feuille "dates".

    Comment faire ce cumul s'il vous plait?

    Bien cordialement

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Bonjour,

    C'est la macro "Sauver" qui correspond au bouton "Sauvegarder". 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
    Sub sauver()
    '
    ' sauver Macro
    '
    Dim C As Range, Ligne As Long
    With Sheets("Séances")
        Ligne = .Cells(.Rows.Count, 2).End(xlUp).Row
        Set C = .Range(.Cells(Ligne, 2), .Cells(Ligne + 1, "V"))
    End With
    With Sheets("Séances")
        Ligne = .Cells(.Rows.Count, 2).End(xlUp).Row
        C.Copy .Cells(Ligne, 4)
    End With
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Par défaut
    Bonjour, tout d'abord merci pour votre réponse.
    J'ai copier votre code néanmoins il ne fonctionne pas du tout, j'ai l'impression qu'il manque la partie "paste" vers Sheets("Dates").
    Quand pensez-vous?

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Non, il ne manque pas la partie "paste" : "C.Copy" est la plage copiée et ".Cells(Ligne, 4)" est la cellule haut gauche de destination. Par contre, il faut modifier la macro (deux erreurs !) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub sauver()
    '
    ' sauver Macro
    '
    Dim C As Range, Ligne As Long
    With Sheets("Séances")
        Ligne = .Cells(.Rows.Count, 2).End(xlUp).Row
        Set C = .Range(.Cells(Ligne, 2), .Cells(Ligne + 1, "V"))
    End With
    With Sheets("Dates")
        Ligne = .Cells(.Rows.Count, 4).End(xlUp).Row
        C.Copy .Cells(Ligne, 4)
    End With
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Par défaut
    Bonjour, votre nouveau code ne fonctionne pas vraiment car il me copie colle la premiere ligne de mon tableau "séance" sur les en têtes de la feuille "dates".
    N'y a-t-il pas une solution sur VBA se référant à une chronologie des dates pour organiser le tableau "dates" sinon? Comme cela la séance du 5/08 vient sous le 4/08 par exemple?

    Encore merci,
    Bien cordialement

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Exact, encore une erreur. Je copie la dernière ligne de la feuille "Séances" sous la dernière ligne de la feuille "Dates".

    N'y a-t-il pas une solution sur VBA se référant à une chronologie des dates pour organiser le tableau "dates" sinon? Comme cela la séance du 5/08 vient sous le 4/08 par exemple?
    Pas compris. Toutes tes dates sont au 5. Si les lignes sont classées sur la feuille "Séances", elles le seront sur la feuille "Dates". Sinon, explique ce que tu veux.

    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 sauver()
    '
    ' sauver Macro
    '
    Dim C As Range, Ligne As Long
    With Sheets("Séances")
        Ligne = .Cells(.Rows.Count, 2).End(xlUp).Row
        Set C = .Range(.Cells(Ligne, 2), .Cells(Ligne + 1, "V"))
        C.Select
    End With
    With Sheets("Dates")
        Ligne = .Cells(.Rows.Count, 4).End(xlUp).Row + 2
        C.Copy .Cells(Ligne, 4)
    End With
    End Sub

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Par défaut
    Merci Daniel c'est super ça fonctionne très bien! Si je veux qu'au lieu de la dernière ligne de "séance", ça me rajoute l'ensemble du tableau de la feuille "séance" alors je rajoute cette balise à quel endroit dans le code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B22:V29").Select
    En fait le concept est qu'à chaque fois que je fais une séance, pour mon cas j'en fais 4 fois par semaine, je vais grâce au code VBA cumuler l'historique de chaque séance que je vais ensuite à la fin du mois pouvoir utiliser afin de comparer l'évolution de mes performances de la date la plus ancienne à la plus récente.
    C'est là meilleur technique pour visualiser une stagnation et y remédier mais là on sort du domaine de excel

    Cordialement,
    Jeremy

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Pourquoi "B22" ?

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Par défaut
    Oula en effet j'ai buggé c'est plutôt

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub sauver()
    '
    ' sauver Macro
    '
    Dim C As Range, Ligne As Long
    With Sheets("Séances")
        Ligne = .Cells(.Rows.Count, 2).End(xlUp).Row
        Set C = .Range(.Cells(8, 2), .Cells(Ligne + 1, "V"))
    End With
    With Sheets("Dates")
        C.Copy .Cells(2, 4)
    End With
    End Sub

Discussions similaires

  1. Sauvegarde CUMULATIVE & DIFFERENTIELLE
    Par d4voisin dans le forum Administration
    Réponses: 2
    Dernier message: 21/06/2011, 20h12
  2. [OL-2007] Comment accéder au carnet partagé en VBA
    Par gabor dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 05/04/2011, 16h12
  3. Réponses: 8
    Dernier message: 23/04/2007, 20h30
  4. [VBA-E]Cumul for et if
    Par clairefranclieu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/09/2006, 13h27
  5. Réponses: 6
    Dernier message: 02/05/2006, 15h24

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