XL 2016 Couleur par Assosiation

Amigo

XLDnaute Occasionnel
Bonjour Le Forum
J’espère que vous êtes bien protégés. Je viens vers vous pour exposer mon problème.
J’ai adapté le fichier ci-joint (Propriétaire M. Boisgontier = Merci à Lui) pour mes besoins de gérer les absences de 3 Associations différentes. Par contre les adhérents peuvent être dans les 3 associations.
Mon souhait d’adapter le code pour que quand je clique dans la zone d’une association je n’aurai que la couleur attitrée à cette association et l’option « Effacer » seulement.
Par exemples :

Asso1 => couleur Bleu + Effacer
Asso2 => couleur Rouge + Effacer
Asso3 => couleur Or + Effacer

Merci par avance
Amigo
 

Pièces jointes

  • Planning Coloriage Barre - Gestion Abs.xls
    101.5 KB · Affichages: 27

job75

XLDnaute Barbatruc
Bonjour Amigo, le fil,
- Une problématique qui s'impose, lorsque un nouvel adhérent arrive, comment faire pour l'inclure et élargir la zone de saisie sans que à chaque fois je la modifie dans la macro. Idem quand un adhérent quitte une association.
Ce n'est vraiment pas un problème, il suffit de créer une plage dynamique délimitée par la dernière ligne occupée en colonne B :
VB:
Set P = Range("C12:AF" & Range("B" & Rows.Count).End(xlUp).Row) 'colonne AF à adapter éventuellement
Voyez ce fichier (6) et les macros de la feuille "Tableau".

A+
 

Pièces jointes

  • Planning Coloriage Barre - Gestion Abs(6).xls
    121 KB · Affichages: 6

fanch55

XLDnaute Barbatruc
Amigo :
Pour insérer un nouvel intervenant, cliquer droit sur le début de ligne de la zone planning :
1585432260410.png

et faire insérer, le tableau est dynamique, la ligne est prise en compte . Renseigner le nom .
Pour supprimer, c'est l'option supprimer, rien de plus simple .
Attention de toujours laisser une ligne .... :cool:

Pour faire cela, une petite modification à faire dans le code de la feuille Tableau:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next: [Mask].Delete​
On Error GoTo 0​
Select Case True​
Case Target.Columns.Count = ActiveSheet.Columns.Count:
DoEvents ' une ligne entiere a été sélectionnée --> on ne trappe pas
Case Not Intersect([Personnel], Target) Is Nothing​
Application.EnableEvents = False​
Intersect([Personnel], Target).Select​
Application.EnableEvents = True​
AfficheMenu​
End Select​
End Sub
 

Amigo

XLDnaute Occasionnel
Bonjour le Fil, le Forum
@job75
Merci Job75, pour cette modification. J'avoue je cherchais désespérément comment définir une zone dynamique par VBA. Je sais le faire sur une colonne mais pas plusieurs (avec Décaler et NBVAL).
Pour l'ajout des adhérents c'est Ok mais je dois revoir la mise en forme et l'encadrement du tableau.
Pour supprimer je n'arrive pas à sélectionner la ligne complète il me sélectionne la case de la colonne C.
A votre avis, Est-ce que ca sera, peut-être, plus simple de faire ajouter ou supprimer avec un Userform

@fanch55
Merci aussi pour votre version.
Pour les absents c'est le total des couleurs de chaque mois par association.

Cordialement
Amigo
 

fanch55

XLDnaute Barbatruc
@Amigo
Que ce soit pour mon ficher ou pour celui de Job75,
Il suffit de cliquer droit sur un nom puis de choisir Supprimer ou Insérer [ une ligne entière].

Si j'ai bien compris, c'est un planning d'absence et non d'affectation.
Ok, je verrai ça demain .
 

Amigo

XLDnaute Occasionnel
Bonjour le Fil, le Forum
@fanch55
sur le fichier de Job75 quand je sélectionne une ligne, vu que sa macro traite colonne par colonne, du coup ca me sectionne la première cellule de la ligne sélectionnée de la colonne "C".
Par exemple, la ligne à supprimer est la 15 ca me sélectionne la "C15".

@le Fil
J'ai trouvé une macro de @+Thierry qui date de 2003, merci à lui. Je ne sais pas si c'est le même pseudo que "Ti"...
En fait, j'ai adapté cette macro avec un UserForm pour ajouter des adhérents. Dites-moi qu'Est-ce que vous en pensez ainsi du rajout dans le code de la feuille "Tableau".

VB:
For L = 13 To Range("A13").End(xlDown).Row
a = 0
b = 0
c = 0
d = 0

For Each Cell In Range("C" & L & ":AF" & L)
If Cell.Interior.ColorIndex = Range("AG11").Interior.ColorIndex Then a = a + 1
If Cell.Interior.ColorIndex = Range("AH11").Interior.ColorIndex Then b = b + 1
If Cell.Interior.ColorIndex = Range("AI11").Interior.ColorIndex Then c = c + 1

Next Cell

Range("AG" & L) = a
Range("AG" & L).NumberFormat = "###0;;"
Range("AH" & L) = b
Range("AH" & L).NumberFormat = "###0;;"
Range("AI" & L) = c
Range("AI" & L).NumberFormat = "###0;;"
Range("AJ" & L) = a + b + c
Range("AJ" & L).NumberFormat = "###0;;"
Je continué à travaille sur la macro pour supprimer ou modifier.

Bien Cordialement
Amigo
 

Pièces jointes

  • Planning Coloriage Barre - Gestion Abs - Forum V2.xls
    108 KB · Affichages: 6
Dernière édition:

job75

XLDnaute Barbatruc
@fanch55
sur le fichier de Job75 quand je sélectionne une ligne, vu que sa macro traite colonne par colonne, du coup ca me sectionne la première cellule de la ligne sélectionnée de la colonne "C".
Par exemple, la ligne à supprimer est la 15 ca me sélectionne la "C15".
Il ne faut pas sélectionner la ligne 15 mais la cellule B15 puis clic droit => Supprimer => Ligne entière.
 

Amigo

XLDnaute Occasionnel
Bonsoir Job75, fanch55, le Forum
D'abord Merci pour vos réponses et je suis désolé de vous répondre un peu en retard.
C'est aussi simple que ca pour supprimer une ligne :)
n'y-a-t-il pas de commentaires sur les macros ???
Cordialement
Amigo
 

Statistiques des forums

Discussions
299 841
Messages
1 979 470
Membres
206 744
dernier inscrit
Nicolas258