Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

A propos des dates

  • Initiateur de la discussion Initiateur de la discussion colaplsus
  • Date de début Date de début

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 !

colaplsus

XLDnaute Nouveau
Bonjour bonjour, me revoici avec un nouveau probleme sur les bras,
Imaginer, je possede différentes dates :
mercredi 1 juin 2011
jeudi 2 juin 2011
vendredi 3 juin 2011
lundi 6 juin 2011
mardi 7 juin 2011
mercredi 8 juin 2011
jeudi 9 juin 2011
vendredi 10 juin 2011
lundi 13 juin 2011
mardi 14 juin 2011
mercredi 15 juin 2011
jeudi 16 juin 2011
vendredi 17 juin 2011
lundi 20 juin 2011

et je voudrais grace a une macro ajouter les dates manquantes jusqu'a la fin du mois, et aussi prendre en compte le fait qu'il soit possible qu'une date manque dans les données présentes, tels qu'un mercredi entre mardi et jeudi.

J'ai ce code pour m'aider
Code:
Sub jour()
Dim i As Integer
Dim R As Integer
Dim x As Integer
x = 1
While x < 5
Sheets("4158").Select
i = 12
For i = 12 To Range("A" & Rows.Count).End(xlUp).Row
While Weekday(Cells(i, 1)) <= 5 And Day(Cells(i, 1)) <= 31
If i = Range("A" & Rows.Count).End(xlUp).Row Then Exit Sub
If Weekday(Cells(i + 1, 1)) - Weekday(Cells(i, 1)) <> 1 And Cells(i, 1) <> 0 Then
Rows(i + 1).Insert Shift:=xlDown
Cells(i + 1, 1).Value = (Cells(i, 1)) + 1
i = i + 1
Else
i = i + 1
End If
Wend
Next
x = x + 1
Wend
End Sub
en effet, il ne me faut que les 5 jours de la semaine, le code fonctionne bien, mais s'arrete si il constate qu'il n'y a pas de lundi apres un vendredi.

Quelqu'un aurait une idée ?
 
Re : A propos des dates

Salut colaplsus et le forum
Une idée :
Les dates correspondent au nombre de jours depuis le 1 janvier 1900. 40724 => 30 Juin 2011
Il suffit donc de faire une boucle soit décrémentante, soit incrémentatnte qui teste si la ligne d'avant (d'après) est égale à la valeur de la cellule -1 (+1) et si on est dans un jour de semaine (de mardi à vendredi ou de lundi à jeudi) et +3 pour le WE.

Pas envie de chercher plus loin, ne comprenant pas la boucle de X
A+
 
Re : A propos des dates

Cette version du code à tester :
Code:
Sub jour()
Dim i As Integer, R As Integer, x As Integer
x = 1
While x < 5
Sheets("4158").Select
i = 12
For i = 12 To Range("A" & Rows.Count).End(xlUp).Row
    While Weekday(Cells(i, 1)) <= 6 And Day(Cells(i, 1)) <= 31
        If i = Range("A" & Rows.Count).End(xlUp).Row Then Exit Sub
            If Weekday(Cells(i + 1, 1)) - Weekday(Cells(i, 1)) <> 1 And Cells(i, 1) <> 0 Then
                Rows(i + 1).Insert Shift:=xlDown
                Cells(i + 1, 1).Value = Cells(i, 1) + IIf(Weekday(Cells(i, 1)) = 6, 3, 1)
                i = i + 1
            Else
                i = i + 1
        End If
        Wend
    Next
    x = x + 1
Wend
End Sub
 
Re : A propos des dates

là, ça s'arrête 😱
Code:
Sub jour()
Dim i As Integer, Endi As Long
Sheets("4158").Select
Endi = Range("A" & Rows.Count).End(xlUp).Row
For i = 12 To Endi
    While Weekday(Cells(i, 1)) <= 6 And Day(Cells(i, 1)) <= 31
        If i = Range("A" & Rows.Count).End(xlUp).Row Then Exit Sub
        If Weekday(Cells(i + 1, 1)) - Weekday(Cells(i, 1)) <> 1 And Cells(i, 1) <> 0 Then
            Rows(i + 1).Insert Shift:=xlDown
            Cells(i + 1, 1).Value = Cells(i, 1) + IIf(Weekday(Cells(i, 1)) = 6, 3, 1)
            Endi = Endi + 1
            i = i + 1
        End If
        i = i + 1
    Wend
Next
End Sub
 
Re : A propos des dates

Je crois que tu ne comprends pas comment je voudrai que le code fonctionne, donc je te fais un exemple, pour le mois de juin j'ai ces données :

mercredi 1 juin 2011
jeudi 2 juin 2011
vendredi 3 juin 2011
lundi 6 juin 2011
mardi 7 juin 2011
mercredi 8 juin 2011
jeudi 9 juin 2011
vendredi 10 juin 2011
lundi 13 juin 2011
lundi 13 juin 2011
mardi 14 juin 2011
jeudi 16 juin 2011
vendredi 17 juin 2011
lundi 20 juin 2011
lundi 20 juin 2011
mardi 21 juin 2011
lundi 20 juin 2011
mardi 21 juin 2011
mercredi 22 juin 2011
jeudi 23 juin 2011
vendredi 24 juin 2011

Comme tu vois il manque des dates, et je voudrai que la macro rajoute ces dates jusque fin juin.

P.S : merci en tout les cas de bien vouloir m'aider =)
 
Re : A propos des dates

Bonjour à tous,

Peux-tu essayer avec :

VB:
Option Explicit

Sub Remplir_Dates_Manquantes()
Dim NbJ&: NbJ = ([A65536].End(xlUp) - [A1])
With Range("A1")
    .AutoFill .Resize(NbJ + 1), 5
End With
End Sub

A + à tous

Édition : je n'avais pas lu qu'il ne fallait que les jours de semaine... Désolé
 
Dernière édition:
- 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

Réponses
2
Affichages
210
Réponses
8
Affichages
478
Réponses
4
Affichages
197
Réponses
5
Affichages
238
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
508
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…