Macro avec suite et copies de cellules de feuille N-1

Résolu
Michalechat Messages postés 4 Statut Membre -  
Michalechat Messages postés 4 Statut Membre -
Bonjour à tous !

Je tiens un classeur Excel où je note mes heures pour le travaille.

J'ai un modèle que j'aimerai dupliquer 52 ou 53 fois en fonction des années, j'aimerai que les dates suivent. c'est a dire :
feuille "Semaine 1" date du lundi en F4 et samedi en H4 puis Feuille "Semaine 2" date du lundi +7 en F4 au Samedi +7 en H4 ...

J'ai réussi cette manip soit avec Une Macro soit avec une fonction.

Par contre là où je sèche c'est pour les heures à rattraper; je m'explique:
Chaque jour je note mes heures de présence et j'ai une cellule qui calcul automatique la somme de mes heures hebdomadaires. Si j'ai des heures supplémentaires, j'aimerai que celles-ci se reporte automatiquement sur la feuille suivante.

exemple :

Feuille semaine N :
en G37 heures reportés de la semaine passée = 1:30
En G38 total des heures supp de la semaine : = 0
En G39 Heures à reporter "=G38+G37"

je souhaite qu'en feuille N+1 :"G37 =G39 de la feuille N-1

Je n'arrive pas a combiner ces 3 fonctions :

1/ copier 52 ou 53 fois ma feuille modèle avec une Macro
2/ Que les dates de chaque semaines s'enchainent sur les 52 ou 53 feuilles
3/ Que les heures d'une cellule précise (G39) se reportent sur une cellule précise (G37) de la feuille qui suit.

Merci beaucoup pour votre aide.

Michalechat.

3 réponses

  1. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Soit la feuille Modele vierge avec seulement les intitulés Lundi, Mardi etc et les formules de calculs dans les cellules. A coté de Lundi laisser en blanc pour entrer la date, à côté de Mardi mettre la formule =cellule de la date de lundi +1 etc pour mercredi ....
    La copier une première fois pour la semaine 1
    Renommer cette feuille "S1" et la remplir complétement
    Dans la macro :
    Prévoir une boucle For n=2 to 52 (ou 53)
    Dans cette boucle mettre les instructions pour
    - copier la feuille modèle
    - la renommer "S" & n
    - mettre l'instruction Range(adresse decellule de la date du lundi)=sheets("S" & n-1).range(adresse de la cellule de date du lundi)
    - mettre l'instruction Range("G37")=sheets("S" & n-1).range("G39")

    Cdlmnt
    Via
    0
    1. Michalechat Messages postés 4 Statut Membre
       
      Merci beaucoup, ça à l'air de fonctionner sur le papier mais j'ai un message d'erreur :" impossible d'aller à range qui est caché".
      Je suis vraiment nul en codage (c'est mon premier essaie je ne sais pas si j'ai les bons codes)

      Pourtant tout est visible, je ne comprend pas :


      Sub semaine()

      Dim n As Integer

      For n = 2 To 52
      Sheets(1).Select
      If Boucle = 2 Then
      Sheets(1).Copy After:=Sheets(1)
      Else
      Sheets(1).Copy After:=Sheets(Sheets.Count)
      End If
      ActiveSheet.Name = "S" & n
      Range(F4) = [Sheets("S" & n - 1)].Range(F4) + 7
      Range("G37") = Sheets("S" & n - 1).Range("G39")

      Next n
      End Sub

      0
  2. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Poste ton fichier sur mon-partage.fr, fais creer un lien que tu copies et reviens coller ici, je regarderai
    0
    1. Michalechat Messages postés 4 Statut Membre
       
      Voila le lien:

      https://mon-partage.fr/f/YAmfIrV8/

      Merci beaucoup pour ton aide.
      Pour pouvoir faire des calculs d'heures en négatif j'utilise le calendrier 1904 c'est peut être important à préciser.
      0
  3. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Re,

    A condition de supprimer les 0 dans les noms des feuilles (de façon à pouvoir incrémenter), une fois la feuille Prev 1 établie, la macro suivante la copie 51 fois, change les dates et met la bonne formule en G37
    Sub creafeuilles()
    For n = 2 To 52
      Sheets("Prev 1").Select
        Sheets("Prev 1").Copy After:=Sheets(Sheets.Count)
        Sheets("Prev 1 (2)").Select
        Sheets("Prev 1 (2)").Name = "Prev " & n
        prec = "Prev " & n - 1
        Sheets("Prev " & n).Range("F4") = Sheets(prec).Range("H4") + 2
        form = "='" & prec & "'!G39"
        Sheets("Prev " & n).Range("G37").Select
        Selection.Formula = form
      Next
    End Sub

    Cdlmnt
    Via
    0
    1. Michalechat Messages postés 4 Statut Membre
       
      Vraiment GENIAL ! Merci beaucoup ça va soulager mes manips informatiques !

      A bientôt et encore merci beaucoup!
      0