Microsoft 365 Aide sur macro excel

baptistou

XLDnaute Nouveau
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
 

Pièces jointes

  • Planning TR V2.xlsm
    26.6 KB · Affichages: 13

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

En espérant avoir tout compris.
 

Pièces jointes

  • Planning TR V2 (2).xlsm
    30.7 KB · Affichages: 8

baptistou

XLDnaute Nouveau
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

En espérant avoir tout compris.

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
 

baptistou

XLDnaute Nouveau
Bonjour,
Bizarre, chez moi il n'y a aucun problème.
En xlsm et xlsb pour voir.

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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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
 

baptistou

XLDnaute Nouveau
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...
 

Pièces jointes

  • Capture d’écran 2020-06-20 à 18.47.03.png
    Capture d’écran 2020-06-20 à 18.47.03.png
    682.6 KB · Affichages: 4
  • Capture d’écran 2020-06-20 à 18.50.35.png
    Capture d’écran 2020-06-20 à 18.50.35.png
    907.6 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Essayez ce fichier, je l'ai reconstruit de zéro.

Sinon il faut mettre cette macro dans la feuille et non dans une macro ordinaire.
Mais dans le VBA pas dans une cellule.
1.jpg
 

Pièces jointes

  • essaiBaptistou.xlsm
    30.3 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Tout d'abord, vous êtes arrivé à ouvrir mon dernier fichier ?
Ensuite pour le VBA, il y a plein de tuto en ligne.
Quelques uns :


mais le plus efficace, malheureusement reste l'huile de coude.
 

baptistou

XLDnaute Nouveau
Bonjour,
Tout d'abord, vous êtes arrivé à ouvrir mon dernier fichier ?
Ensuite pour le VBA, il y a plein de tuto en ligne.
Quelques uns :


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.
 

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 372
Membres
102 876
dernier inscrit
BouteilleMan