Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

atlonia

XLDnaute Occasionnel
Bonjours a tout le forum,

Je voudrais attribuer une macro a chaque item de la ligne "motif d'absence", j'aimerais qu'en cliquant sur l'intitulé, cela me colore la case sélectionnée de la même couleur en affichant l'abrégé de l'intitulé (CP, RH, RTT, AA, M, AT, ANJ).

avec la possibilité de revenir en arrière quand je veux attribuer un horaire a cette même case.

Merci aux bonnes âmes qui voudrons bien m'aider!
 

Pièces jointes

Re : Macro

Bonjour

Une macro évènementielle permet de résoudre le problème.
Un double click (droit ou gauche) sur la cellule affiche un motif de l'absence les uns à la suite des autres.
Un valeur numérique annule le motif
Attention au sémaphore, il évite de tourner en rond.
A tester et à modifier (à mon avis le double click est à supprimer pas génial du point de vue manipulation)
La solution de Bebere est plus pertinente.
JP
 

Pièces jointes

Dernière édition:
Re : Macro

Merci de votre aide Jp14 et bebere,

C'est trés gentils de votre part de vous occuper de moi, mais travaillant sur excel depuis le début de la création de mon projet, c'est-a-dire depuis 3 semaines environ, je n'ai découvert l'existence du VBA que depuis 1 semaine.

Un petit exemple serait le bienvenu, et si vous pouviez me fournir quelques commentaire en plus, ce serait pour moi une grande aide.
 
Re : Macro

Re pour jp14 et bebere,

Je viens de tester les 2 fichiers que vous m'avez retourné, mais les deux m'invalident les cellules de calcul "heures sup hebdo" et"total heures".

Y aurait-il une solution pour l'éviter?

Merci de votre aide!
 
Re : Macro

Pardon jp14 et bebere,

En fait, je viens de m'apercevoir après une vérification de mon classeur initial que le problème existait déjà avant leur intervention...!

Après réflexion, il me semble que ce problème vient du fait que je cherche a additionner des cellules dont le format ne correspond pas.

En effet, le format des cellules de calcul d'heures est défini sur "hh:mn", et une valeur comme "RTT" ou "CP" ne correspond pas a cette définition.

Sachant que ces valeurs peuvent varier de position dans la semaine, quelqu'un sait-il comment je peut contourner ce problème?

Mes maigres connaissances en VBA me font penser qu'il doit falloir passer par une fonction "If/Else", mais je ne sais pas comment la mettre en pratique.

S'il vous plait, aidez moi a progresser.

Ci joint mon classeur
 

Pièces jointes

Re : Macro

bonjour Altonia,Jp
pour les heures fait 2 listes validaton,une pour matin de 0:00 à 12:00 + motifs et l'autre pour après-midi de 12:00 à 24:00 + motifs
en colonne Q met cette formule
=SOMME(B8:O8)-SOMME(B7:O7),recopie vers le bas
quelques commentaires
Private Sub Worksheet_Change(ByVal Target As Range)
Dim L As Integer
'index 0 à 5 pour 6 motifs(colonne 0) et 6 couleurs(colonne 1)
Dim MotifCouleur(0 To 5, 0 To 1) As Variant
'si position curseur en dehors de B à O quitte la procédure
If Target.Column < 2 Or Target.Column > 14 Then Exit Sub
'si ligne curseur plus petite que 7 quitte la procédure
If Target.Row < 7 Then Exit Sub
'rempli tableau avec motifs et couleurs
For L = 50 To 55
MotifCouleur(L - 50, 0) = Feuil2.Cells(L, 1)
MotifCouleur(L - 50, 1) = Feuil2.Cells(L, 1).Interior.ColorIndex
Next L

For L = 0 To 5
If Target.Value = MotifCouleur(L, 0) Then
Target.Interior.ColorIndex = MotifCouleur(L, 1)
Exit For
'remet couleur d'origine(même ligne,colonne 1)
Else: Target.Interior.ColorIndex = Cells(Target.Row, 1).Interior.ColorIndex
End If
Next L

End Sub


à bientôt
 
Re : Macro

Private Sub Worksheet_Change(ByVal Target As Range)
Dim L As Integer
'index 0 à 5 pour 6 motifs(colonne 0) et 6 couleurs(colonne 1)
Dim MotifCouleur(0 To 5, 0 To 1) As Variant
'si position curseur en dehors de B à O quitte la procédure
If Target.Column < 2 Or Target.Column > 14 Then Exit Sub
'si ligne curseur plus petite que 7 quitte la procédure
If Target.Row < 7 Then Exit Sub
'rempli tableau avec motifs et couleurs
For L = 50 To 55
MotifCouleur(L - 50, 0) = Feuil2.Cells(L, 1)
MotifCouleur(L - 50, 1) = Feuil2.Cells(L, 1).Interior.ColorIndex
Next L

For L = 0 To 5
If Target.Value = MotifCouleur(L, 0) Then
Target.Interior.ColorIndex = MotifCouleur(L, 1)
Exit For
'remet couleur d'origine(même ligne,colonne 1)
Else: Target.Interior.ColorIndex = Cells(Target.Row, 1).Interior.ColorIndex
End If
Next L

End Sub


Merci bebere,

Je n'ai pas vraiment compris quoi faire avec cette procédure ...!

Ou dois-je la mettre, dois-je modifier certaine valeur.

J'ai essayé de la rentrer dans la même procédure que celle exixtante, mais j'ai un conflit avec: Private Sub Worksheet_Change(ByVal Target As Range)

Si ce n'est pas abuser de ta gentillesse, pourrait-tu me donner un peu plus de détails?😕
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour