1 pièce(s) jointe(s)
Générer planning statique à partir de trame dynamique (VBA)
Bonjour,
J'ai réussi après pas mal d'aide de votre part à générer un planning automatique. Qui puisse reprendre à partir d'informations données s'adapter aux dates et aux services. J'en suis bientôt à la fin de mon travail puisqu'il ne reste plus qu'à pouvoir en quelques sortes "archiver" de manière statique le planning.
Je m'explique j'aimerais qu'au final le fichier joint qui est le système de génération du planning puisse conserver de manière statique les données (le service choisi sera le nom du fichier, le mois choisi le nom d'une feuille, et le contenu de la feuille ce qui doit correspondre).
Enfin les Userform et les codes rattachés à la feuille, et aux userform doivent pouvoir suivre le fichier de sorte que les événements de type masquage des lignes, lancement des userform et effets que produisent les userforms.
Ca parrait faisable pensez-vous?
Il va me manquer des compétences et des connaissances pour mener à bien mon projet (je n'ai pas suivi de formation en programmation et c'est ma grande première).
Génération de plusieurs Feuilles en fonction de la liste de mois
Bonjour,
J'ai avancé dans ce projet en question.
J'ai commencé par générer plusieurs feuilles qui dupliquent ma TRAME. J'obtiens 1 feuille par mois avec la trame. Mais j'obtiens des choses qui me posent problème.
1. Un temps long d’exécution qui est aléatoire (est-ce un problème de variable?)
2. des erreurs au mois de janvier comme si les références étaient perdues (uniquement cette feuille).
3. Une exécution très ralentie de l'application de mes listes déroulantes.
Le "nouveau code" dont l'existence semble perturber l'exécution est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
Sub Copies_Feuil()
Dim i%
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 1 To 12
Sheets("TRAME").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = MonthName(i)
ActiveSheet.Range("B1").Range("A1") = DateSerial(Year(Date), i, 1)
ActiveSheet.Range("B1").Range("A1").NumberFormatLocal = "mmmm"
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub |
Quand je stoppe l'exécution du code au bout de 2 min le Déboggage me ramène sur un code qui sert à masquer des lignes et des colonnes dans des conditions (il marchait bien jusque-là)
Je vous le transmets aussi au cas où ça vienne de là :
Code:
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
|
Private Sub Worksheet_Change(ByVal Target As Range)
'empêcher de faire scintiller l'écran pendant l'éxécution du programme
Application.ScreenUpdating = False
Dim plage As Range, C As Range, d As Range
' automatisation de la trame de base
'masquage des lignes vides lorsque le service n'est pas pourvu en fonction (IDE nuit, ASD)
Set plage = [a7: a100]
For Each C In plage
If C.Value = "0" Then
C.EntireRow.Hidden = True
Else
C.EntireRow.Hidden = False
End If
Next C
Set plage = Nothing
'masquage de Colonnes pour respect de la longueur des mois (calendrier)
'(doit être associé àune formule conditionnelle =SI(AD6<>"";SI(MOIS(AD6)=MOIS(AD6+1);AD6+1;"");"")
Set plage = Range("AD5:AF5")
For Each d In plage
If d.Value = "" Then
d.EntireColumn.Hidden = True
Else
d.EntireColumn.Hidden = False
End If
Next d
Set plage = Nothing
Columns("AG").EntireColumn.Hidden = True |
Merci pour votre aide.