APPEL aux GÉNIES du VBA de cet aimable Forum

DEMERS

XLDnaute Nouveau
Bonjour / Bonsoir à Vous.

Je relance le sujet une autre fois, parce que je pensais avoir résolu mon problème :confused:, mais il parait qu’il est un peu complexe et je pense que leur astuce n’ait jamais été exposée sur le net d’après mes recherches que j’avais faites.
Ci-joint un tableau présentant une fiche de pointage de présence (prévu une fiche par feuille par mois)sur laquelle j'ai fait des mises en forme conditionnelles de façon à faire apparaître en gris pattern les dimanche, en rouge pattern les jours fériés Non-payés, et en vert pattern les jours fériés Payés, et ce, par référence à un autre tableau des jours fériés de l’année qui se trouve sur une autre feuille du même classeur
Sur la même fiche, j’ai affecté 3 Boutons de commande pour le marquage
- ABSENT en Rouge
- PRESENT en Vert
Et un bouton EFFACER pour la rectification en cas de faute de marquage.

Jusqu’au là c’est bon.

Or je recherche à ajouter à cette application une astuce en VBA consistant à l’automation suivante.
En cas ou le mois de pointage comprend 1 ou 2 ou 3 jours fériés payés et que l’employé s’absente « juste avant » ou « juste après » le jour férié payé, celui-ci (je veux dire le jour férié payé) ne lui serait pas compter dans son salaire.

L’étude de la module VBA assurant cette fonction doit se baser sur la probabilité que tout mois peut comprendre jusqu’à (3 jours fériés payés) et (1 jour férié non payé) et bien-sûr le DIMANCHE

A prévoir aussi que :
- Les jours fériés payés peuvent avoir lieu dispersés ou successifs
- Le ou les jours fériés peut (peuvent) être précédés ou suivis d’un DIMANCHE.
- En cas ou LUNDI est un jour férié payé, et l’employé s’absente samedi, ce jour ne lui sera pas compté.
- Le même cas ou le jour férié PAYÉ est précédé d’un jour férié NON PAYÉ
- En bref, tous les cas sont possibles et je pense que pour la fonction VBA soit possible, l’automation doit toujours se référer aux dates de la liste des JOURS FERIES avec un tracé de probabilité de : 3 jours fériés payés + 1 jour férié non-payé et 1 dimanche.

A cet effet, je vous appelle de bien vouloir m’aider à intégrer cette automation dans mon petite application.

J’espère avoir pu bien expliqué et j’espère que ce sera possible.

Je vous adresse, toutes et tous, mes vives remerciement par avance.
 

Pièces jointes

  • TEST_2.xls
    102.5 KB · Affichages: 59
  • TEST_2.xls
    102.5 KB · Affichages: 108
  • TEST_2.xls
    102.5 KB · Affichages: 103

laurent950

XLDnaute Barbatruc
Re : APPEL aux GÉNIES du VBA de cet aimable Forum

Bonsoir,

Il y a très certainement la clef du probléme ici :

mDF MFCmultiples à la loupe - Tutoriels & Astuces Excel > VBA par l'exemple - Tutoriels : myDearFriend! Excel Pages

je ne sais pas traduire cette macro que je viens de voir à l'instant. si un expert peux comprendre et trouver la condition appliquer a la cellule excel parmis cette ensemble de condition mise en forme conditionnel c'est peux être la clef.

Pour ma part j'arrive a reproduire les couleur et Font et intérieur des cellule excel via un code que je donne ici :

VB:
Sub DetectFontColor()
'Récupère les conditions de la cellule D2
Dim Plg As Range
Set Plg = Range(Cells(5, 6), Cells(9, 6))

Dim TabFont() As Variant
ReDim TabFont(1 To 1, 1 To 18)

Dim TabInterior() As Variant
ReDim TabInterior(1 To 1, 1 To 12)

'Fonction
Dim i As Integer
For i = 1 To Plg.Rows.Count
    FontAndInterior Plg, TabFont, TabInterior, i
Next i
End Sub

Function FontAndInterior(Plg As Range, TabFont() As Variant, TabInterior() As Variant, i As Integer)

' ===>> Font
 TabFont(1, 1) = Plg(i, 1).Font.Background                 ' Background
 TabFont(1, 2) = Plg(i, 1).Font.Bold                       ' Bold
 TabFont(1, 3) = Plg(i, 1).Font.Color                      ' Color
 TabFont(1, 4) = Plg(i, 1).Font.ColorIndex                 ' ColorIndex
 'TabFont(1, 5) = Plg(i, 1).Font.Creator                    ' Creator
 TabFont(1, 6) = Plg(i, 1).Font.FontStyle                  ' FontStyle
 TabFont(1, 7) = Plg(i, 1).Font.Italic                     ' Italic
 TabFont(1, 8) = Plg(i, 1).Font.Name                       ' Name
 TabFont(1, 9) = Plg(i, 1).Font.OutlineFont                ' OutlineFont
 TabFont(1, 10) = Plg(i, 1).Font.Shadow                    ' Shadow
 TabFont(1, 11) = Plg(i, 1).Font.Size                      ' Size
 TabFont(1, 12) = Plg(i, 1).Font.Strikethrough             ' Strikethrough
 TabFont(1, 13) = Plg(i, 1).Font.Subscript                 ' Subscript
 TabFont(1, 14) = Plg(i, 1).Font.Superscript               ' Superscript
 TabFont(1, 15) = Plg(i, 1).Font.ThemeColor                ' ThemeColor
 TabFont(1, 16) = Plg(i, 1).Font.ThemeFont                 ' ThemeFont
 TabFont(1, 17) = Plg(i, 1).Font.TintAndShade              ' TintAndShade
 TabFont(1, 18) = Plg(i, 1).Font.Underline                 ' Underline

' ===>> Interior
TabInterior(1, 1) = Plg(i, 1).Interior.Color               ' Color
TabInterior(1, 2) = Plg(i, 1).Interior.ColorIndex          ' ColorIndex
'TabInterior(1, 3) = Plg(i, 1).Interior.Creator             ' Creator
'TabInterior(1, 4) = Plg(i, 1).Interior.Gradient           ' Gradient
'TabInterior(1, 5) = Plg(i, 1).Interior.InvertIfNegative    ' InvetifNegative
TabInterior(1, 6) = Plg(i, 1).Interior.Pattern             ' Pattern
TabInterior(1, 7) = Plg(i, 1).Interior.PatternColor        ' PatternColor
TabInterior(1, 8) = Plg(i, 1).Interior.PatternColorIndex   ' PatternColorIndex
TabInterior(1, 9) = Plg(i, 1).Interior.PatternThemeColor   ' PatternThemeColor
TabInterior(1, 10) = Plg(i, 1).Interior.PatternTintAndShade ' PatternTintAndShade
TabInterior(1, 11) = Plg(i, 1).Interior.ThemeColor         ' ThemeColor
TabInterior(1, 12) = Plg(i, 1).Interior.TintAndShade       ' TintAndShade

' MsgBox Plg(i, 1).Column

' Test Reproduit en Cellule N6 1la couleur Interieur de la cellule active
' Objet [ Mémoire ==>> '    .Pattern = TabLeg(3).Interior.Pattern ]
With Range(Cells(Plg(i, 1).Row, Plg(i, 1).Column + 1), Cells(Plg(i, 1).Row, Plg(i, 1).Column + 1))
' Initialisation
' ===>> Font
 .Font.Background = TabFont(1, 1)                      ' Background"
 .Font.Bold = TabFont(1, 2)                             ' Bold"
 .Font.Color = TabFont(1, 3)                            ' Color"
 .Font.ColorIndex = TabFont(1, 4)                  ' ColorIndex"
 '.Font.Creator = TabFont(1, 5)                     ' Creator"
 .Font.FontStyle = TabFont(1, 6)                   ' FontStyle"
 .Font.Italic = TabFont(1, 7)                      ' Italic"
 .Font.Name = TabFont(1, 8)                        ' Name"
 .Font.OutlineFont = TabFont(1, 9)                 ' OutlineFont"
 .Font.Shadow = TabFont(1, 10)                     ' Shadow"
 .Font.Size = TabFont(1, 11)                       ' Size"
 .Font.Strikethrough = TabFont(1, 12)              ' Strikethrough"
 .Font.Subscript = TabFont(1, 13)                  ' Subscript"
 .Font.Superscript = TabFont(1, 14)                ' Superscript"
 .Font.ThemeColor = TabFont(1, 15)                 ' ThemeColor"
 .Font.ThemeFont = TabFont(1, 16)                  ' ThemeFont"
 .Font.TintAndShade = TabFont(1, 17)               ' TintAndShade"
 .Font.Underline = TabFont(1, 18)                  ' Underline"
End With

' Test Reproduit en Cellule N6 1la couleur de font de la cellule active
With Range(Cells(Plg(i, 1).Row, Plg(i, 1).Column + 1), Cells(Plg(i, 1).Row, Plg(i, 1).Column + 1))
' Initialisation
' ===>> Interior
.Interior.Color = TabInterior(1, 1)                      ' Color
.Interior.ColorIndex = TabInterior(1, 2)                 ' ColorIndex
'.Interior.Creator = TabInterior(1, 3)                    ' Creator
'.Interior.Gradient = TabInterior(1, 4)                   ' Gradient
'.Interior.InvetiNegative = TabInterior(1, 5)             ' InvetiNegative
.Interior.Pattern = TabInterior(1, 6)                    ' Pattern
.Interior.PatternColor = TabInterior(1, 7)               ' PatternColor
.Interior.PatternColorIndex = TabInterior(1, 8)          ' PatternColorIndex
'.Interior.PatternThemeColor = TabInterior(1, 9)          ' PatternThemeColor
.Interior.PatternTintAndShade = TabInterior(1, 10)       ' PatternTintAndShade
'.Interior.ThemeColor = TabInterior(1, 11)                ' ThemeColor
.Interior.TintAndShade = TabInterior(1, 12)              ' TintAndShade
End With
End Function

Laurent
 

Pièces jointes

  • CopieCodeCouleurPlageSelectionVBA.xlsm
    22.2 KB · Affichages: 21
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : APPEL aux GÉNIES du VBA de cet aimable Forum

Bonjour Laurent le forum
Laurent il semble que tu n'aies pas bien compris la demande !!!
On ne cherche pas à récupérer une condition mais à la créer, et si tu avais regardé la macro que j'ai faite, tu l'aurais compris.
La version que je lui ai faite fait déjà le travail à 80% ,simplement pour terminer la réponse il faut intégrer maintenant les exceptions.
Et c'est pour cela que je pose des questions pour savoir et connaître les conditions et les intégrer au calcul.
a+
papou:eek:
 

Statistiques des forums

Discussions
315 134
Messages
2 116 614
Membres
112 811
dernier inscrit
shade1452