XL 2016 1er Mardi de chaque mois

kingfadhel

XLDnaute Impliqué
Bonjour,
Pour les pros qui programme à l'avance leurs rendez-vous.
une formule qui permet d'avoir le 1er mardi de chaque mois

=DATE(ANNEE(A1);MOIS(A1);CHOISIR(JOURSEM(A1;2);2;1;7;6;5;4;3))

1er mardi de chaque mois.PNG
 

Staple1600

XLDnaute Barbatruc
Bonjour Victor21

Tu parles de laquelle de formule?
Parce ce que la dernière* renvoie bien le 1er mardi du mois si en colonne A on a le 1er jour du mois
*message #4
Voir ce petit test VBA (pour commodité)
VB:
Sub b()
Range("A1") = "01/01/2002"
Range("A1:B12").NumberFormatLocal = "jjjj jj mmmm aaaa"
Range("A1").AutoFill Destination:=Range("A1:A12"), Type:=xlFillMonths
Range("B1:B12").FormulaR1C1 = "=RC[-1]+CHOOSE(WEEKDAY(RC[-1]),2,1,0,6,5,4,3)"
End Sub
Sauf erreur de ma part, les résultats sont les même que sur la copie d'écran de kingfadhel
 

Victor21

XLDnaute Barbatruc
Re, JM.

Tu parles de laquelle de formule?
Parce ce que la dernière* renvoie bien le 1er mardi du mois si en colonne A on a le 1er jour du mois
*message #4
J'en étais resté au #2, mais j'écris moins vite que vous postez, et je réfléchis parfois encore moins vite que je n'écris. Ceci explique celà :)
Les exemples de la copie d'écran de kingfadhel correspondent à un cas particulier : la date de référence correspond au 1° jour du mois...
 

kingfadhel

XLDnaute Impliqué
Re, suite:
Code qui permet d'extraire les mardis d'une année xxxx
ensuite il crée en une deuxième feuille une liste : Un mardi/2 (par quinzaine donc).

C'est pour les réunions, les visites d'inspections, les contrôles....

Code:
Sub mardi_sur_deux()
Dim jour As String
Dim i, j, k, x As Integer
my_year = InputBox("saisir une année")
Range("F1") = "Les Mardis de l'année : " & my_year

start_date = "01-01-" & my_year & ""
x = 2
For i = 0 To 366 Step 1
    Str_date = CDate(start_date) + i
    jour = WeekdayName(Weekday((Str_date)), False, vbSunday)
   
    If jour = "mardi" Then
        Sheets("Feuil1").Range("F" & x) = CDate(Str_date)
        x = x + 1
    Else
    GoTo continue
    End If
continue:
Next

''Copie vers une nouvelle feuille
    Columns("F:F").Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    Columns("A:A").Select
    ActiveSheet.Paste
Range("A1") = "Les Mardis/2 de l'année : " & my_year
derligne = Range("A1").End(xlDown).Row
For j = 2 To derligne Step j + 1
    ActiveSheet.Rows("" & j & ":" & j & "").Select
    Selection.Delete Shift:=xlUp
Next

End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Avec celle-ci, on le 1er mardi du mois, quelque soit la date saisie en colonne A
VB:
Sub c()
Range("A1:A12").Clear
Range("A1:A12").FormulaR1C1 = "=DATE(2017,ROW(),ROW())"
Range("B1:B12").FormulaR1C1 = "=(RC[-1]-DAY(RC[-1])+1)+CHOOSE(WEEKDAY(RC[-1]-DAY(RC[-1])+1),2,1,0,6,5,4,3)"
Range("A1:B12").NumberFormatLocal = "jjjj jj mmmm aaaa"
End Sub
 

kingfadhel

XLDnaute Impliqué
Re

Avec celle-ci, on le 1er mardi du mois, quelque soit la date saisie en colonne A
VB:
Sub c()
Range("A1:A12").Clear
Range("A1:A12").FormulaR1C1 = "=DATE(2017,ROW(),ROW())"
Range("B1:B12").FormulaR1C1 = "=(RC[-1]-DAY(RC[-1])+1)+CHOOSE(WEEKDAY(RC[-1]-DAY(RC[-1])+1),2,1,0,6,5,4,3)"
Range("A1:B12").NumberFormatLocal = "jjjj jj mmmm aaaa"
End Sub


T'es un Génie @Staple1600.
 

Discussions similaires

Réponses
14
Affichages
639