Modification Macro Calendar pour feuille de présence
Bonjour,
Je dispose d'une Macro développer ici par un membre qui m'a aidé pour ce super résultat !!!
Mais voilà j'aimerai transformer le tableau que concerne ce macro et séparer Nom et Prénom ce qui
incombe de changer le code car j'ajoute une colonne donc la macro ne fonctionne plus.
Je comprend que la moitié du code et donc pas assez de compétences pour le modifier.
Si quelqu'un pouvais s'y pencher et m'indiquer la marche à suivre pour ajouter une colonne et avoir cette macro
toujours fonctionnelle. (m'indiquer les lignes qui permette de modifier colonne et ligne)
Merci à vous.
La macro:
Option Base 1
Option Compare Text
Private Sub Calendar1_Click()
Application.ScreenUpdating = False
Feuil1.Activate
Dim a, b, c, d, dd As Date, ct%, ctt%
Dim dl&, i, j, n, k, z, zz As String
dl = Feuil1.Range("a5").End(xlDown).Row
a = Feuil1.Range(Cells(4, 1), Cells(dl, 40))
n = 0
dd = Calendar1
ReDim b(UBound(a), 6)
ReDim c(UBound(a), 6)
ReDim d(UBound(a), 6)
For j = 11 To 40
If CDate(a(1, j)) = dd Then
ctt = Application.WorksheetFunction.CountIf(Feuil1.Range(Cells(5, j), Cells(dl, j)), 1)
For i = 1 To dl - 5
If a(i, j) = 1 Then
Select Case a(i, 3)
Case Is <= 5
n = n + 1
For k = 1 To 6
b(n, k) = a(i, k)
Next
Case Is >= 9
nn = nn + 1
For k = 1 To 6
c(nn, k) = a(i, k)
Next
Case Else
nnn = nnn + 1
For k = 1 To 6
d(nnn, k) = a(i, k)
Next
End Select
End If
Next
End If
Next
f1 = Feuil2.Name
f2 = Feuil6.Name
f3 = Feuil7.Name
For z = 1 To 3
zz = Application.WorksheetFunction.Choose(z, f1, f2, f3)
With Sheets(zz)
ct = 0
.Cells.Delete
Feuil1.[a4:f4].Copy .[a1:f1]
Select Case z
Case 1
.[a2].Resize(UBound(b), 6) = b
Case 2
.[a2].Resize(UBound(d), 6) = d
Case 3
.[a2].Resize(UBound(c), 6) = c
End Select
With .[a65000].End(xlUp).Offset(2, 0)
.Font.Bold = True
.Value = "Totaux"
End With
.[b65000].End(xlUp).Offset(2, 0) = "Présent"
.[b65000].End(xlUp).Offset(1, 0) = "Total Enfant"
.[c65000].End(xlUp).Offset(2, 0) = .[c65000].End(xlUp).Row - 1
.[c65000].End(xlUp).Offset(1, 0) = ctt
With .[a1:f1]
.Interior.ColorIndex = xlNone
.Font.Color = 1
.Columns("a:f").EntireColumn.AutoFit
End With
.UsedRange.Borders.LineStyle = xlContinuous
.UsedRange.BorderAround Weight:=xlThick
.Rows("1:2").Insert
With .Cells(1, 1)
.Value = Sheets(zz).Name & " du " & Format(dd, "dd mmmm yyyy")
.Font.Bold = True
End With
Range(.Cells(1, 1), .Cells(1, 6)).Merge
Range(.Cells(1, 1), .Cells(1, 6)).HorizontalAlignment = xlCenter
End With
Next
Feuil2.Activate
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Edit: le sujet initial https://forum.excel-pratique.com/excel/tcd-ou-autre-pour-une-feuille-de-presence-journaliere-t66229.html
Bonjour
A vérifier
Edit : Pas good
Bonsoir Banzai64 !!
Le calendar me rapport une erreur sur la ligne
If CDate(a(1, j)) = dd Then
de plus je sais pas si erreur mais dans le fichier joint je vois une colonne de plus en J ?
Si vous pouviez me dire une fois résolu ce que vous avez changer afin que je comprenne ce fameux code
et avance moi aussi dans ma compréhension car j’avais réussi a séparer non et prénom sur le tableau mais
c'est le résultat ensuite via calendar ou me manquais donc une colonne et résultat marchais pas .
merci Banzai64
Bonjour
Je n'ai travaillé que sur le code dans le module4 !!!!!!
Pour le moment je n'ai pas le temps, je verrais dans la soirée si j'ai le temps
Comment tu lances la macro qui t'affiche le calendrier ?
Je la lance en cliquant sur appel journalier
je sélectionne la date du jour en colonne
ce qui me donne les 3 feuilles de journaliers
Bonjour Banzai64
Rien a redire qu'un énorme merci, j'avais tenter de modif tout cela mais pas vu partout ou
il fallait modifier. Avec les annotations c'est extra pour comprendre la macro du bout en bout
donc vraiment super et t'en remercie beaucoup.
Nadia
Edit: A si un petit truc tout bête !!! Vu que cela va être utiliser tous les ans et dans le classeur initial sur plusieurs
période j'ai tester par exemple de choisir 2016 sur le calendar et cela ne fonctionne plus l'appel reste vide
Comment est gérer l'année dans cette macro ?
Bonjour
nadia1235 a écrit :Comment est gérer l'année dans cette macro ?
D'après ce que j'ai vu
La macro transforme L4, M4, N4 etc... en date et la compare avec la date choisie
If CDate(a(1, j)) = dd Then
Mais n'ayant pas l'année dans la cellule, elle utilise l'année en cours
Ce tableau fonctionnera bien en 2016, pas en 2015 pour l'année 2016
Il te faut changer les dates ne ligne 4 pour avoir de vraies dates (et peut-être modifier la macro)
Bonjour Banzai,
Pour la date dans la colonne c'est une macro qui gère dans le classeur initial car on peux modifier les dates de vacances
ainsi cela change automatiquement tous les tableaux ....
Mais en me disant pour l'année dans la colonne j'ai trouver la solution justement en changeant le format de cellule et en ajoutant yy dans la macro ainsi le calendrier gère maintenant les années !!! trop contente cela m'inquiétais !!
merci beaucoup pour tout cela
bonne journée
Nadia