Incrémenter une série en doublant chacune des dates

Résolu
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -  
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour le forum,

J'ai une macro qui incrémente et qui complète une colonne avec les dates manquantes au dessus et en dessous des données déjà présentent dans cette colonne afin de compléter la série dates, allant du 1 janvier et 31 décembre.

Est-il possible de faire la même chose, mais de mettre la même date 2 fois?
Ex: 2016-01-01
2016-01-01
2016-01-02
2016-01-02 et ainsi de suite!

J'en aurais besoin pour faire des graphiques sur une autres feuilles de mon classeur. Je sort des graphiques de lectures d'un instrument qui prend 2 lectures par jours et chacun des sites comprend au minimum 3 instruments.

Toute mes macros fonctionnaient très bien et mes graphiques semblaient ok. Mais je n'avais jamais tester jusqu'à maintenant avec un fichier avec une année complète et des données sur quelques mois de l'année précédente et de la suivante. Là, j'ai un problème, parce que le nombre de ligne d'une feuille à l'autres, n'est pas égale: 2014 = 390 lignes, 2015 = 731 lignes, 2016 = 366 lignes. L'année 2015 est mon année complète donc 365 jours fois 2 = 730 + l'entête (1)=731 lignes. Alors quand je vais chercher mes valeurs de l'année 2014, qui sont du 30 août au 31 décembre, j'ai un problème d'affichage. La série n'apparaît au bon endroit sur le graphique!

Je fais un test en manuel, en ajoutant le nombre de ligne manquant à ma feuille 2014 et en changeant ma source pour mon graphique et ça fonctionne bien.

C'est pourquoi j'aimerai savoir si on peut incrémenter une série en utilisant la même date 2 fois avant de continuer l'incrément.

Voici ma macro qui incrémente mes valeurs dans la fameuse colonne:

ells(2, NewCol + 2).Value = "1"
i = 3
With Cells(i, NewCol + 2)
    For i = 3 To 366
        If Cells(i, NewCol + 2).Value = "" Then
            Cells(i, NewCol + 2).Value = i - 1
        Else
            Cells(i, NewCol + 2).Value = i + 1
        End If
    Next i
End With


Avec cette colonne, je trouve un match avec la première date de la colonne précédente et je la coupe et la colle vis-à-vis:
'Trouver la valeur du jours de l'année dans 2 colonnes
'*****************************************************
MaCellule = Cells(2, NewCol + 1)
DerLig = Cells(Application.Rows.Count, NewCol + 2).End(xlUp).Row
Set MaPlage = Range(Cells(2, NewCol + 2), Cells(DerLig, NewCol + 2))
Val = Application.Match(MaCellule, MaPlage, 0)

'Copier et coller le tableau vis-à-vis la bonne valeur
'******************************************************
DerLig2 = Cells(Application.Rows.Count, NewCol).End(xlUp).Row
Range(Cells(2, 1), Cells(DerLig2, NewCol + 1)).Cut
Cells(Val + 1, 1).Select
ActiveSheet.Paste

Ensuite j'incrémente les dates manquantes:
Lig = Cells(2, NewCol).End(xlDown).Row - 1
If Cells(2, NewCol).Value = "" Then
    Cells(2, NewCol) = DateValue("01/01")
    Cells(2, NewCol).AutoFill Destination:=Cells(2, NewCol).Resize(Lig - 1), Type:=xlFillDays
End If

DLig = Cells(, NewCol).End(xlDown).Row
If Not Cells(DLig, NewCol + 1) = "365" Then
    Cells(DLig + 1, NewCol) = DateValue(Cells(DLig, NewCol)) + 1
    Cells(DLig + 1, NewCol).AutoFill Destination:=Cells(DLig + 1, NewCol).Resize(DateValue("31/12") - Cells(DLig + 1, NewCol) + 1), Type:=xlFillDays
End If


Merci pour votre aide!
A voir également:

2 réponses

bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
 
Petite précision, dans la colonne à incrémenter se retrouve les dates en jours de l'année (1 à 365 jours).Donc la série devrait ressembler à 11 22 33 44 55 66....365 365.

Merci!
0
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
 
Rebonjour le forum,

J'ai trouvé la solution pour incrémenter ma colonne contenant le jours de l'année.

Voici le code:
i = 2
With Cells(i, NewCol + 2)
    For w = 1 To 365
        Cells(i, NewCol + 2).Value = w
        Cells(i + 1, NewCol + 2).Value = w
        i = i + 2
    Next w
    
End With
0