Du VBA qui me pose problème sur 2 points

Bonjour

J'ai un code dans le "Module1" qui me pose des soucis sur 2 points :

1) J'ai uniquement un problème avec les lignes 4 de toutes les feuilles "2mois" ("déc25 Jan26", fév26 Mar26", etc, etc,) avec le système des croix manuelles puisqu'un double-clique ne déclenche rien sur ces lignes 4.

2) Il ne faut pas que la valeur de la cellule "J2" de la feuille "paramètres" ne soit appliquée aux dates avant la date d'aujourd'hui. Or avec ce code, ça ne fonctionne pas puisque sur la feuille "Déc25 Jan26", le J2 prend quand même ses effets et pourtant nous sommes avant la date de "aujourdhui()".

_____________________________________________

Sub M_PreBarrage(Optional SH As Worksheet)
     '*************************************************************************************************
     'chaque cellule aune propriété "ID" qui selon MS sert pour "identifying labels for webpages, blabla ..."
     'bon, inappropriate use, je l'utilise pour sauvegarder le statut du "Croix" de la cellule, c'est plus pratique et plus rapide que les "comments"
     'les statuts: 0 = sans croix, 1 = croix rouge, 2 : croix noir
     'le temps pour lire ou écrire l'ID est négliable
     '*****************************************************************************************************
     ' Procédure réagissant au Paramètre 1 ou autre en J2 de l'onglet Paramètres :
     ' 1 = mettre une croix
     ' Autre : enlever la croix
     '*************************************************************************************************

     Dim c, Arr, TBL, bPM, bImPair, i, j, j1, iWeekday, r, aBorders, bPrebarrage, Lundi, bDiagonal
     t = Timer
     If SH Is Nothing Then Set SH = ActiveSheet     'si on ne sait pas la feuille, c'est la feuille actuelle
     If SH.Name Like "*## *##" Then          'nom de la feuille ressemble à cela
          Application.ScreenUpdating = False
          bPrebarrage = (Range("pre_barrage").Value = 1)     ' on demande "pré-barrage"
          TBL = Range("t_Semaine").Value2    'TS avec les propriétés des tâches
          With SH
               Set c = .Range("C2:AF41")     'votre plage
               Arr = c.Value2                'lire vers matrice
               For i = 3 To UBound(Arr) Step 4     'les lignes avec les tâches
                    Lundi = Arr(i - 1, 1)    'première cellule de la ligne dessus = lundi
                    If Len(Lundi) Then
                         bImPair = (WorksheetFunction.IsoWeekNum(Lundi) Mod 2 = 1)     'semaine impaire ?
                         j1 = Application.Max(1, (Date - Lundi) * 6 + 1)     'on ne touche pas aux colonnes d'une date dans le passé (6 colonnes par jour)
                         For j = 1 To UBound(Arr, 2)     'boucler horizontal
                              Debug.Print c.Cells(i, j).Address
                              bDiagonal = (TBL(j - bImPair * 30, 6) = 1)     'on veut le diagonal et le pré-barrage
                              If bDiagonal And c.Cells(i, j).ID = "" Then c.Cells(i, j).ID = "2"     'quand l'ID n'est pas connu, on commence avec un croix noir
                              M_Bordures c.Cells(i, j), Array(-bPrebarrage * Val(c.Cells(i, j).ID), xlNone, 0, c.Cells(i, j).Borders(xlDiagonalDown).LineStyle = xlNone)     'matrice avec la valeur de l'ID, linestyle "xlnone" et couleur "noir" du bordure
                         Next
                    End If
               Next
          End With
     End If
     bHS_NouvelleFeuille = False             'RAZ ce drapeau
End Sub

Merci pour votre aide
Bon dimanche

Bonsoir,

il faudrait savoir le déroulement de choses car la surveillance évènementielle du double-clic gauche ou du clic droit a ce test :
If Target.Row > 4 And Target.Row < 42 And Target.Column < 33 And Target.Value <> "" And Target.Value <> 0 Then
Donc si vous cliquez en ligne 4 rien ne sera lancé... Mais de toutes façon si la procédure été lancée elle ne correspond pas à celle fournie dans votre question...

@ bientôt

LouReeD

Bonjour LouReeD et merci beaucoup

Tu m'as répondu à la question 1
Je viens de comprendre où ça se passait grâce à ta question ==>
Il s'agit du Worbook et la valeur est supérieure à 3 et non à 4. Je n'avais rein compris au code !

image

________________________

Merci beaucoup, j'ai testé et ça marche maintenant pour les lignes 4

Bonne soirée

à bientôt

Bonsoir,

ravis que cela corrige votre problème ! Merci de votre retour !

@ bientôt

LouReeD

J'ai ouvert un autre sujet avec des explications différentes pour ce problème de dates :

https://forum.excel-pratique.com/excel/pas-appliquer-1-sub-si-les-cellules-ont-une-date-inferieure-a...

Rechercher des sujets similaires à "vba qui pose probleme points"