Bonjour à tous et merci d'avance pour l'aide.
En m'inspirant de plusieurs tuto sur internet, j'ai construit un planning pour attribuer des TR que les salariés vont remplir.
Je bloque sur 1 macro ... celle liée au bouton remplir, je l'ai faite avec l'enregistrement de macro, mais je suis sûr qu'il y a plus simple en appliquant directement la formule dans la macro. Je suis novice en VBA....
Je souhaiterai aussi, une fois le bouton remplir exécuté, que lorsqu'une personne remplisse une cellule de la ligne 11 ou 12, il n'y ait pas d'autres chiffres possible sur les 2 autres lignes (par exemple 1 en G11, enlève le 1 en G10 ou en G12 ). 1 seul nombre par colonne possible
Pour faire apparaitre le planning, il faut compléter les cellules C2, C3 et C4.
Merci à la communauté de votre aide, retours et avis.
Baptiste
Bonjour Baptistou,
En PJ un essai. J'ai fait quelques modifs :
1- dans le titre le mois apparait en lettres, plus joli qu'en chiffres
2- j'ai simplifié la ligne date, plus simple
3- la pise en charge est faite par la macro :
VB:
Sub Remplir()
Application.ScreenUpdating = False
For C = 5 To 35
DayN = Weekday(Cells(7, C) & "/" & Range("C3") & "/" & Range("C2"), 2)
If Cells(8, C) <> "" And DayN < 6 Then
Cells(9, C) = 1
Else
Cells(9, C) = ""
End If
Next C
End Sub
4- la limitation de saisie est faite par la macro événementielle dans la feuille Ticket resto
Code:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("E10:AI11")) Is Nothing Then
Application.EnableEvents = False
If Cells(9, Target.Column) = "" Then Target.Value = "" ' Non prise en compte samedi et dimanche
If Target.Row = 10 Then Cells(11, Target.Column) = "" ' si on écrit en L 10 on efface L 11
If Target.Row = 11 Then Cells(10, Target.Column) = "" ' si on écrit en L 11 on efface L 10
Application.EnableEvents = True
End If
End Sub
celle ci s'active dès qu'on entre une valeur dans la zone E10:AI11
Bonjour Baptistou,
En PJ un essai. J'ai fait quelques modifs :
1- dans le titre le mois apparait en lettres, plus joli qu'en chiffres
2- j'ai simplifié la ligne date, plus simple
3- la pise en charge est faite par la macro :
VB:
Sub Remplir()
Application.ScreenUpdating = False
For C = 5 To 35
DayN = Weekday(Cells(7, C) & "/" & Range("C3") & "/" & Range("C2"), 2)
If Cells(8, C) <> "" And DayN < 6 Then
Cells(9, C) = 1
Else
Cells(9, C) = ""
End If
Next C
End Sub
4- la limitation de saisie est faite par la macro événementielle dans la feuille Ticket resto
Code:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("E10:AI11")) Is Nothing Then
Application.EnableEvents = False
If Cells(9, Target.Column) = "" Then Target.Value = "" ' Non prise en compte samedi et dimanche
If Target.Row = 10 Then Cells(11, Target.Column) = "" ' si on écrit en L 10 on efface L 11
If Target.Row = 11 Then Cells(10, Target.Column) = "" ' si on écrit en L 11 on efface L 10
Application.EnableEvents = True
End If
End Sub
celle ci s'active dès qu'on entre une valeur dans la zone E10:AI11
Bonjour et merci sylvanu,
Je n'arrive pas à ouvrir ta proposition de fichier.
Voila le message d'erreur :
Désolé... Nous avons trouvé un problème dans le contenu de « Planning TR V2 (2).xlsm », mais nous pouvons essayer de récupérer le maximum de contenu. Si la source de ce classeur est fiable, cliquez sur Oui.
Et après plusieurs essai, qd il s'ouvre c'est illisible.
Merci de ton retour
Baptiste
C'est pareil, j'ai le message d'erreur et il m'affiche ensuite ceci :
Réparer le résultat vers Planning TR V2 (2)1.xml
Des erreurs ont été détectées dans le fichier « /Users/xxxxxxx/Downloads/Planning TR V2 (2).xlsb »
Partie supprimée: /xl/vbaProject.bin partie. (Visual Basic for Applications (VBA))
Je ne sais pas de ou cela peu venir ...
Merci de ton aide
Baptiste
Sinon au pire .
1- vous remplacez votre macro Remplir par celle ci :
VB:
Sub Remplir()
Application.ScreenUpdating = False
For C = 5 To 35
DayN = Weekday(Cells(7, C) & "/" & Range("C3") & "/" & Range("C2"), 2)
If Cells(8, C) <> "" And DayN < 6 Then
Cells(9, C) = 1
Else
Cells(9, C) = ""
End If
Next C
End Sub
et dans la feuille Ticket resto vous mettez :
Code:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("E10:AI11")) Is Nothing Then
Application.EnableEvents = False
If Cells(9, Target.Column) = "" Then Target.Value = "" ' Non prise en compte samedi et dimanche
If Target.Row = 10 Then Cells(11, Target.Column) = "" ' si on écrit en L 10 on efface L 11
If Target.Row = 11 Then Cells(10, Target.Column) = "" ' si on écrit en L 11 on efface L 10
Application.EnableEvents = True
End If
End Sub
Sinon au pire .
1- vous remplacez votre macro Remplir par celle ci :
VB:
Sub Remplir()
Application.ScreenUpdating = False
For C = 5 To 35
DayN = Weekday(Cells(7, C) & "/" & Range("C3") & "/" & Range("C2"), 2)
If Cells(8, C) <> "" And DayN < 6 Then
Cells(9, C) = 1
Else
Cells(9, C) = ""
End If
Next C
End Sub
et dans la feuille Ticket resto vous mettez :
Code:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("E10:AI11")) Is Nothing Then
Application.EnableEvents = False
If Cells(9, Target.Column) = "" Then Target.Value = "" ' Non prise en compte samedi et dimanche
If Target.Row = 10 Then Cells(11, Target.Column) = "" ' si on écrit en L 10 on efface L 11
If Target.Row = 11 Then Cells(10, Target.Column) = "" ' si on écrit en L 11 on efface L 10
Application.EnableEvents = True
End If
End Sub
Bon cela ne fonctionne pas étonnant...
J'ai essayé de remplacer la macro par celle proposée mais j'ai ce message d'erreur (cf capture).
Et ensuite le fichier ressemble à l'autre capture...
Je suis vraiment novice en VBA.
Je ne sais pas si cela va t'en dire plus.
Merci de ton aide en tout cas.
Bon week-end
PS : quand tu dis dans la feuille Ticket resto tu mets ça, je dois la copier dans un module via l'éditeur VBA ou dans une cellule ? dsl mais vraiment novice en macro...
Sinon il faut mettre cette macro dans la feuille et non dans une macro ordinaire.
Mais dans le VBA pas dans une cellule. Regarde la pièce jointe 1070890
Apprenez le VBA (Excel) gratuitement étape par étape grâce aux leçons et exercices proposés sur ce site (variables, conditions, boucles, procédures, fonctions, boîtes de dialogue, événements, userforms, etc).
www.excel-pratique.com
mais le plus efficace, malheureusement reste l'huile de coude.
Apprenez le VBA (Excel) gratuitement étape par étape grâce aux leçons et exercices proposés sur ce site (variables, conditions, boucles, procédures, fonctions, boîtes de dialogue, événements, userforms, etc).
www.excel-pratique.com
mais le plus efficace, malheureusement reste l'huile de coude.
Salut Sylvanu,
J'ai pu ouvrir le fichier, la mise en page n'est plus la même, mais la macro fonctionne...
Merci pour l'aide et je vais voir pour les tutos.