Aide VBA Programmer des alertes et des blocages de cellules

Bonjour,

je dois remplir une fiche d'absence de 13 employés. Je dois écrire un truc en VBA mais je suis bloquée. Est ce que quelqu'un peut maider svp ??

Jai mis le fichier en pièce jointe pour que vous voyez ce que jai ecrit en VBA.

J'ai plusieurs contraintes imposées :

  • Ces 13 employés bossent dans un ou plusieurs blocs --> voir dans la colonne A
  • Un employé absent dans un bloc l'est aussi dans tous les blocs auxquels il appartient (par exemple si la Pers 7 est absente du bloc 3 le mardi, elle lest aussi du bloc 4 le même jour).
  • Dans les blocs 1, 2 et 3, le maximum d'absence accepté est de 2. Lorsqu'une 3ème personne veut se noter absente, elle recoit un message d'alerte et son absence est effacée.
  • Dans le bloc 4, le maximum d'absence est de 6. Lorsqu'une 7ème personne veut se noter absente, elle recoit un message d'alerte et son absence est effacée.

Je suis bloquée à cause de ces relations entre les blocs. Par exemple lorsque dans le bloc 1, la personne 3 est absente et dans le bloc 2 la personne 4 et 5 sont absentes, si la personne 1 veut sajouter absente, elle doit etre bloquée par le minimum de présence atteint dans le bloc 2... etc etc

SVP jai vraiment besoin dun coup de pouce car là je suis vraiment bloquée :s

Merci

47aide-excel-vba.zip (42.76 Ko)

Bonjour

Mon dernier essai

Oui cest ca quil faudrait mais les liens entre les cellules selon la colonne A ne sont plus conservés

je crois qu'il va falloir que je fasse autrement car cest un casse tete inrésolvable.... :s

Si je mets dans B13 par exemple : =si(B8<>"";B8;"") et pareil dans toutes les cellules à copier, comment faire pour que le application.count ne me compte que les cellules avec quelque chose dedans et pas meme les cellules avec la formule précédente écrite dedans ?

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dim plage1 As Range, plage2 As Range

Set plage1 = Cells(1, Target.Column).Resize(3, 1)

Set plage2 = Cells(5, Target.Column).Resize(3, 1)

If Application.CountA(plage1) > 2 Then

MsgBox "Permanence minimale atteinte!"

Application.Undo

End If

If Application.CountA(plage2) > 2 Then

MsgBox "Permanence minimale atteinte!"

Application.Undo

End If

End Sub

Bonjour

Mokia a écrit :

mais les liens entre les cellules selon la colonne A ne sont plus conservés

Une nouveauté

Pourquoi faire simple quand on peut faire compliqué

C'est la macro qui s'occupe des liens et maintenant tu veux les marquer en dur

Cela sera sans moi

Bonne journée

Rechercher des sujets similaires à "aide vba programmer alertes blocages"