XL 2013 Incrémentation fiche de suivi mensuel (Résolu par Job75)

susaita

XLDnaute Occasionnel
Bonsoir à tous et à toutes,
dans l'exemple ci-joint j'ai un code déjà fourni par JOB75 qui fait l'incrémentation avec lequel je travaille sur un autre fichier.
j'ai essayé de l'adapter sur mon fichier ci-inclus avec des nouvelles conditions mais j n'y arrive pas

**ce que je souhaite avoir en passant à septembre-16 c'est :
1-vider la cellule F7
2-vider la sélection D12:L14 en gardant les formules
3-vider la sélection F57:F59 en gardant les formules
4-Vider J59
5-Copier F12:F14 de l'onglet Août-16 dans R12:R14 de l'onglet Septembre-16
6-les cellules de la sélection T4:AQ4 doivent s'incrémenter avec la valeur de D12 de cette manière :
dans Août-16 T4=D12, dans Septembre-16 U4=D12, dans Octobre-16 V4=D12...ect toute en gardant toujours les anciennes valeurs de T4 et U4 ne pas les supprimer et sans montrer la formule que T4=D12 mais en mettant juste les valeurs.
7-incrémenter la date de J58 c'est à dire dans septembre-16 j'aurais 30-09-2016, dans Octobre j'aurais 31-10-2016...ect

Merci d'avance
 

Pièces jointes

  • Suivi mensuel.xlsm
    77 KB · Affichages: 67

job75

XLDnaute Barbatruc
Bonjour susaita,

Vous auriez pu essayer de vous en sortir tout seul, c'eût été un bon exercice.

Cette macro fait très exactement ce que vous avez demandé :
Code:
Sub NewMonth_Sheet()
Dim w As Worksheet, x$, dat As Date
For Each w In Worksheets
  x = Replace(w.Name, "-", "-20")
  If IsDate(x) Then If CDate(x) > dat Then dat = CDate(x)
Next
If dat Then
  Application.ScreenUpdating = False
  Application.Goto ActiveSheet.[A1], True 'cadrage
  Sheets(Format(dat, "mmmm-yy")).Copy After:=Sheets(Sheets.Count)
  With Sheets(Sheets.Count)
    .Name = Application.Proper(Format(DateAdd("m", 1, dat), "mmmm-yy"))
    Application.EnableEvents = False
    With .Cells(4, .Columns.Count).End(xlToLeft)
      .Offset(, 1) = .Formula
      .Value = .Value
    End With
    .[R12:R14] = .[F12:F14].Value
    On Error Resume Next 'si aucune constante
    .[F7,D12:L14,F57:F59,J59].SpecialCells(xlCellTypeConstants) = Empty
    .[J58] = DateAdd("m", 2, dat) - 1
    Application.EnableEvents = True
    .Visible = xlSheetVisible 'si la feuille est masquée
    Application.Goto .[A1], True 'cadrage
  End With
End If
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Suivi mensuel(1).xlsm
    85.8 KB · Affichages: 46

job75

XLDnaute Barbatruc
Re,

Au cas où vous n'auriez pas compris à quoi sert la variable x.

Avec l'ancienne macro VBA convertissait "Août-16" en 16/08 de l'année en cours.

x = Replace(w.Name, "-", "-20") donne "Août-2016" converti en 01/08/2016.

A+
 

susaita

XLDnaute Occasionnel
Merci beaucoup Job,
c'est exactement ce que je cherchais il y'a juste un petit point que je ne sais pas si c'est possible de le résoudre :
*** en passant de Août-16 à Septembre-16 T4= la valeur de D12 de Août-16 sans écrire la formule,
par contre U4=D12 avec la formule affichée est ce que c'est possible ne montrer que la valeur ??

Merci encore une autre fois pour ce joli travail
A+
 

job75

XLDnaute Barbatruc
Re,

Pas très cohérent ce que vous venez de dire.

J'ai modifié la macro avec :
Code:
    With .Cells(4, .Columns.Count).End(xlToLeft)
      .Offset(, 1) = "=D12"
      .Formula = "='" & Format(dat, "mmmm-yy") & "'!D12"
    End With
Il y a donc toujours une formule dans T4, U4, etc...

J'ai aussi mis la plage T4:XFD4 au format personnalisé # ##0;; pour masquer les valeurs zéros.

Fichier (2).

A+
 

Pièces jointes

  • Suivi mensuel(2).xlsm
    85.9 KB · Affichages: 36
Dernière édition:

job75

XLDnaute Barbatruc

Pièces jointes

  • Suivi mensuel(3).xlsm
    86.1 KB · Affichages: 47

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 106
Messages
2 085 352
Membres
102 871
dernier inscrit
Maïmanko