XL 2021 Création agenda

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 !

Nicolas JACQUIN

XLDnaute Accro
Supporter XLD
Bonsoir tout le monde,

Sur ma création d'agenda, j'ai un petit problème avec mon code, y a un petit truc que j'arrive pas à régler.
Si le mois n'existe pas je le créer sans soucis, mais si le mois existe, ça me dis que le moi existe déjà, je dis ok mais sur ma feuille paramètre ça scroll jusqu'à la colonne "Q", il y a une tuile, je vois un peut près ou mais j'arrive pas à l'interpétrer comme il faut.

Merci à tous
Nico

test form6.gif


test form7.gif
 

Pièces jointes

Dernière édition:
Solution
Nicolas

Ton Pb vient d'ici

1726522227041.png

et comme je ne pense pas que l'on peut scroller une feuille non active il faudrait mémoriser le nombre de scroll de colonne

VB:
Function Actu_jour(année, mois)
    Application.ScreenUpdating = False
    Dim i As Long, nbjour As Long
    nbjour = Day(DateSerial(année, mois + 1, 0)) ' te donne le nombre de jour dans le mois en parametre
    lig = 2: col = 3
    With Worksheets("Feuil1")
        For i = 1 To nbjour
            '.Range(.Cells(lig, col), .Cells(lig + 1, col)).Interior.ColorIndex = 24
            If année = Year(Date) And mois = Month(Date) And i = Day(Date) Then
                '.Range(.Cells(lig, col), .Cells(lig + 1, col)).Interior.ColorIndex = 28 'Coloriage aujourd'hui...
A modifier cette partie dans le module, partie coloriage des jours

VB:
            M = 14
            For l = 1 To 7
                If Worksheets("Paramètre").Range("E" & M).Value = True And Weekday(DateSerial(année, mois, i), vbMonday) = Worksheets("Paramètre").Range("F" & M).Value Then
                    .Range(.Cells(lig + 2, col), .Cells(derlig + 1 - Hap, col)).Interior.ColorIndex = 39
                End If
                M = M + 1
            Next l

Le fait de mettre avec ou sans pose le coloriage ne se faisait plus par rapport au jours de repos
 
Bonjour à toutes & à tous
Pour les fonctions donnant le N° de la semaine voilà une comparaison entre NO.SEMAINE et NO.SEMAINE.ISO (utilisée en europe)
NO.SEMAINE(C2;2)NO.SEMAINE.ISO(C2)
lundi​
01/01/2024​
11
mercredi​
01/01/2025​
11
jeudi​
01/01/2026​
11
vendredi​
01/01/2027​
153
samedi​
01/01/2028​
152
lundi​
01/01/2029​
11
mardi​
01/01/2030​
11
mercredi​
01/01/2031​
11
jeudi​
01/01/2032​
11
samedi​
01/01/2033​
153
dimanche​
01/01/2034​
152
lundi​
01/01/2035​
11
mardi​
01/01/2036​
11
jeudi​
01/01/2037​
11
vendredi​
01/01/2038​
153
samedi​
01/01/2039​
152
dimanche​
01/01/2040​
152
mardi​
01/01/2041​
11
mercredi​
01/01/2042​
11
jeudi​
01/01/2043​
11
vendredi​
01/01/2044​
153
dimanche​
01/01/2045​
152
lundi​
01/01/2046​
11
mardi​
01/01/2047​
11
mercredi​
01/01/2048​
11
vendredi​
01/01/2049​
153
samedi​
01/01/2050​
152

De ce fait les numéros de semaine suivants sont décalés de -1 pour le reste de l'année lorsque le N° de semaine iso est 52 ou 53 !
A bientôt
 
Re
Et comment tu corriges cela ici
J'y travaille, je cherche
Une formule de Laurent LONGRE au temps où son site existait encore (valable quelque soit l'année en court) :
Enrichi (BBcode):
=ENT((madate-(DATE(ANNEE(madate-JOURSEM(madate-1)+4);1;3)-JOURSEM(DATE(ANNEE(madate-JOURSEM(madate-1)+4);1;3)))+5)/7)
Autre formule trouvée jadis sur le net (je ne sais plus où) mais limitée au 28/02/2104 :
Enrichi (BBcode):
=ENT(MOD(ENT((madate-2)/7)+0,6;52+5/28))+1

Formules à adapter pour le VBA...
Bon courage et à bientôt
 
Re,
La formule de Laurent LONGRE sous forme de fonction VBA :

VB:
Function IsoWeekNum(jour As Date)
     Interm = DateSerial(Year(jour - WorksheetFunction.Weekday(jour - 1) + 4), 1, 3)
     IsoWeekNum = (jour - (Interm - WorksheetFunction.Weekday(Interm)) + 5) \ 7
End Function

À bientôt
 
Re,
La formule de Laurent LONGRE sous forme de fonction VBA :

VB:
Function IsoWeekNum(jour As Date)
     Interm = DateSerial(Year(jour - WorksheetFunction.Weekday(jour - 1) + 4), 1, 3)
     IsoWeekNum = (jour - (Interm - WorksheetFunction.Weekday(Interm)) + 5) \ 7
End Function

À bientôt

Bonjour à tous,

Merci pour le retour, entre temps j'avais trouvé aussi

VB:
Function SemISO(MyDate As Date) As Integer
  SemISO = Format(MyDate, "ww", vbMonday, vbFirstFourDays)
  If SemISO > 52 Then
    If Format(MyDate + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then SemISO = 1
  End If
End Function

Et qui donne le même résultat que le tient (au 1er septembre plus de soucis) à tester pour les autres
Merci

Nico
 
- 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

Discussions similaires

Retour