Modifier un tableau avec des passages par jour julien

Bonjour à tous,

Cette question va sembler un peu bête aux experts que vous êtes mais pour moi c'est un blocage qui me fait perdre du temps ...

J'ai des dates avec des données de passage:

06/04/2004 1

18/04/2004 1

21/04/2004 1

25/04/2004 1

29/04/2004 1

30/04/2004 4

Je souhaite créer un tableau avec des jours juliens du 1 janvier au 31 décembre. Voici un exemple du résultat attendu :

06/04/2004 1

07/04/2004 0

08/04/2004 0

09/04/2004 0

10/04/2004 0

11/04/2004 0

12/04/2004 0

13/04/2004 0

14/04/2004 0

15/04/2004 0

16/04/2004 0

17/04/2004 0

18/04/2004 1

19/04/2004 0

20/04/2004 0

21/04/2004 1

22/04/2004 0

23/04/2004 0

24/04/2004 0

25/04/2004 1

26/04/2004 0

27/04/2004 0

28/04/2004 0

29/04/2004 0

30/04/2004 4

Et une dernière question :

Quelle est la méthode pour passer des données ci-dessus à seulement une donnée de passage par jour comme dans l'exemple ci-dessous :

06/04/2004 1

07/04/2004 0

08/04/2004 0

09/04/2004 0

10/04/2004 0

11/04/2004 0

12/04/2004 0

13/04/2004 0

14/04/2004 0

15/04/2004 0

16/04/2004 0

17/04/2004 0

18/04/2004 1

19/04/2004 0

20/04/2004 0

21/04/2004 1

22/04/2004 0

23/04/2004 0

24/04/2004 0

25/04/2004 1

26/04/2004 0

27/04/2004 0

28/04/2004 0

29/04/2004 0

Je souhaiterais dans mon nouveau tableau décomposé une ligne contenant une date avec 4 passages en 4 dates identique contenant chacune 1 passage.

30/04/2004 4

Voici le résultat attendu:

30/04/2004 1

30/04/2004 1

30/04/2004 1

30/04/2004 1

Dans cette exemple j'ai fais la manip à la main. Et je souhaiterais avoir une méthode permettant de traiter un grand nombre de données à la fois.

Merci d'avance à tous pour votre aide

Cordialement,

Oliv'

Bonjour,

heuuu, les jours juliens sont utilisés en astronomie pour avoir une référence de date fixe en s'affranchissant de tous les calendriers existants.

C'est vraiment ça que tu veux ?

En tout cas ça n'a rien à voir avec tes nombres 0, 1 et 4

eric

Edit : ah, en fait tu veux juste insérer les dates absentes ?

Bonjour,

il suffit d'ajouter un onglet avec l'année complète voulu

et dans la colonne 2 faire une recherchev dans ta base .

Bonjour Eriiic … moi je connais pas julien

Bonjour,

il vaudrait peut-être mieux exposer le souci dans le forum Calc ?

Je crois que c'est un pote à Marcel

Merci pour ces réponses rapides , oui effectivement le terme jour julien n'est peut être pas le terme le plus approprié...

Entre temps j'ai ajouté une question à mon post.

Je souhaiterais dans mon nouveau tableau décomposé une ligne contenant une date avec 4 passages en 4 dates identique contenant chacune 1 passage, et cela sur l'ensemble de mon tableau.

30/04/2004 4

Voici le résultat attendu:

30/04/2004 1

30/04/2004 1

30/04/2004 1

30/04/2004 1

Pourquoi avoir mis un .ods ?

As-tu MS Office ou pas ? Car ça ne peut être fait simplement que par macro (incompatible Libre Office)

Et précise où tu veux le résultat. Même feuille ou une autre ?

Et du coup, c'est 4 lignes avec 1 mais toujours avec les dates manquantes à 0 ?

eric

Non le format est bien celui d'excel, j'utilise Excel 2016, j'ai juste converti le fichier d'ou le ".ods" qui est resté. Donc le nom du fichier est : "exemple forum.ods.xlsx" et il est bien en format Excel, je comprends que cela peusse porter à confusion.

Je voudrais avoir le résultat sur une autre feuille et toujours avec les dates manquantes à 0 (toujours du premier janvier au 31 décembre).

Les deux me serviront pour des choses différentes.

oliv'

C'est surtout qu'un ods ne supporte pas les macros MS Office.

Il aurait fallu que tu attendes qq'un connaissant les macros Libre Office.

Si tu veux du 01/01 au 31/12 ajoute les 2 dates avec vide ou 0. Ca peut être sur plusieurs années.

A tester.

eric

3classeur2.xlsm (32.34 Ko)

Merci pour vos réponses

Bonjour,

Si j'ai bien compris ta demande, je te propose la solution suivante:

Il s'agit tout d'abord de charger un tableau à deux dimensions qui contiendra les données de l'onglet "Feuil1"

par exemple:

02/05/2004 5

03/05/2004 2

04/05/2004 1

05/05/2004 3

06/05/2004 1

07/05/2004 1

J'ai donc créé une fonction qui permet de charger les données depuis la procédure qui effectuera le traitement

Fonction de Chargement

Function ChargeTableau(Feuille As String, ZoneCellules As String) As Variant
    Dim Tableau As Variant
    Tableau = Sheets(Feuille).Range(ZoneCellules)
    ChargeTableau = Tableau
End Function

L'appel depuis la procédure de traitement se fait comme suit:

    Dim TB As Variant
    TB = ChargeTableau("Feuil1", "A1:B64")

La procédure de traitement :

  • Positionnement sur la cellule A1 de l'onglet Calendar
  • On part ensuite en boucle du 01/01/2004 au 31/12/2004 (ou autres dates qui peuvent être passées par paramètres)
  • On compare la date courante avec les dates contenues dans le tableau
  • S'il n'y a pas de correspondance on écrit cette date dans la cellule active puis la valeur 0 dans la cellule immédiatement à droite (déplacement avec OFFSET(x,y))
  • S'il y a correspondance on vérifie la valeur de la deuxième colonne du tableau et on écrit autant de fois la date courante et à droite comme ci-dessus la valeur 1.

De ce fait, tu obtiens ceci (échantillon du résultat):

08/10/2004 1

08/10/2004 1

08/10/2004 1

09/10/2004 1

10/10/2004 0

11/10/2004 0

12/10/2004 0

13/10/2004 0

14/10/2004 0

15/10/2004 0

16/10/2004 1

16/10/2004 1

16/10/2004 1

16/10/2004 1

16/10/2004 1

17/10/2004 0

18/10/2004 0

Code de la procédure de traitement (à modifier selon les besoins)

Sub Traitement()
    Dim TB As Variant
    Dim DD As Date 'Date début
    Dim DF As Date 'Date Fin
    Dim DateCourante As Date
    Dim i As Long
    Dim Trouve As Boolean
    TB = ChargeTableau("Feuil1", "A1:B64")
    Sheets("Calendar").Select
    Range("A1").Select
    DD = "01/01/2004"
    DF = "31/12/2004"

    For DateCourante = DD To DF
        'Recherche si date présente dans le tableau
        Trouve = False
        For i = LBound(TB) To UBound(TB)
            If DateCourante = TB(i, 1) Then
                Trouve = True
                Exit For
            End If
        Next i
        If Trouve Then
            For J = 1 To TB(i, 2)
                ActiveCell.Value = DateCourante
                ActiveCell.Offset(0, 1).Select
                ActiveCell.Value = 1
                ActiveCell.Offset(1, -1).Select
            Next J
        Else
            ActiveCell.Value = DateCourante
            ActiveCell.Offset(0, 1).Select
            ActiveCell.Value = 0
            ActiveCell.Offset(1, -1).Select
        End If
    Next DateCourante
End Sub

Bien cordialement et bon courage

Rechercher des sujets similaires à "modifier tableau passages jour julien"