IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Vos contributions VB6 Discussion :

Classe de calcul du levé, du couché et du zénith du soleil [Sources]


Sujet :

Vos contributions VB6

  1. #1
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut Classe de calcul du levé, du couché et du zénith du soleil
    Bonjour à tous,

    Je sais vous attendiez depuis longtemps ce que j'avais promis: une classe de calcul du levé et du couché du soleil (entre autre)

    Tout ceci est parti du post sur l'existence d'une fonction nuit cf post http://www.developpez.net/forums/viewtopic.php?t=408646

    Eh bien voilà...

    Je tiens à signaler que je suis parti d'une classe existante "clsSunRiseSet" développée par Scott Seligman.

    Je l'ai traduite, commentée, amméliorée (du moins j'espère) et j'ai ajouté 117 villes références.

    Dans un premier temps, je vais vous présenter son utilisation puis le code en lui-même.

    Donc pour l'utilisation, rien de plus simple que des exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Sub exemple()
     
    Dim Rep As New clsSunRiseSet 'Déclaration de la Variable du type de la classe
    Dim TablVilles		  'Déclaration d'un tableau dynamique pour récupérer l'ensemble des villes codées en dur
     
        TablVilles = Rep.TabCities	'Récupération de l'ensemble des villes références
     
        Let Rep.City = 37 		'Définition de la ville pour laquelle sont faits les calculs par index
    'ou Let Rep.City = "Paris"	' ou par nom
     
        Let Rep.Latitude = -3.75	'Définition directe de la latitude pour le calcul (ATTENION en degrés même pour les décimales)
        Let Rep.Longitude = 48.567	'Définition directe de la longitude pour le calcul (ATTENTION en degrés même pour les décimales)
        Let Rep.TimeZone = -1	'Définition directe de la zone horaire pour le calcul (ATTENTION différente du fuseau horaire)
        Let Rep.Continent = "Europe"'Définition de la zone géographique de la ville OPTIONNELLE
        Let Rep.Country = "Mon Pays"'Définition du pays de la ville OPTIONNELLE
     
        Let Rep.DateDay = CDate("21/12/2005")	'Définition directe de la date pour le calcul
        Let Rep.DaySavings = True			'Définition directe de la gestion de l'heure d'été pour le calcul
     
        Rep.CalculateSun	'Calcul de la date du levé, du couché et du zénith du soleil
     
        MsgBox Rep.CityName(37)	'Affiche le nom de la ville (uniquement par index)
        MsgBox Rep.Continent	'Affiche le nom de la zone géographique actuellement définie
        MsgBox Rep.Country		'Affiche le nom du pays actuellement défini
        MsgBox Rep.Latitude		'Affiche la latitude actuellement définie
        MsgBox Rep.Longitude	'Affiche la longitude actuellement définie
        MsgBox Rep.TimeZone		'Affiche la zone horaire actuellement définie
     
        MsgBox Rep.Daysaving	'Affiche la gestion de changement d'heure (heure d'été/heure d'hiver) actuellement utilisée
        MsgBox Rep.DateDay		'Affiche la date actuellement définie
     
        MsgBox "Le soleil se lève à : " & Rep.Sunrise	'Affiche la date de levé du soleil
        MsgBox "Le soleil se couche à : " & Rep.Sunset	'Affiche la date de couché du soleil
        MsgBox "Le soleil est à son zénith à : " & Rep.SolarNoon 'Affiche la date de zénith du soleil
     
    End Sub
    A noter que :
    - la date est par défaut celle du jour (celle de la machine)
    - la gestion du changement d'heure est par défaut non utilisée

    Plus d'informations se trouvent dans le code de la classe sur
    - les notations
    - certaines notions d'astronomie
    - les modifications
    - les ajouts
    -...

    J'espère que cela pourra vous aider et vous intéressera.

    J'ai encore des idées d'améliorations possibles que je développerai quand j'aurai un peu plus de temps.

    J'attends vos suggestions et vos réactions avec impatience.

    @+

    Théo

    Code de la classe nommée clsSunRiseSet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    575
    576
    577
    578
    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589
    590
    591
    592
    593
    594
    595
    596
    597
    598
    599
    600
    601
    602
    603
    604
    605
    606
    607
    608
    609
    610
    611
    612
    613
    614
    615
    616
    617
    618
    619
    620
    621
    622
    623
    624
    625
    626
    627
    628
    629
    630
    631
    632
    633
    634
    635
    636
    637
    638
    639
    640
    641
    642
    643
    644
    645
    646
    647
    648
    649
    650
    651
    652
    653
    654
    655
    656
    657
    658
    659
    660
    661
    662
    663
    664
    665
    666
    667
    668
    669
    670
    671
    672
    673
    674
    675
    676
    677
    678
    679
    680
    681
    682
    683
    684
    685
    686
    687
    688
    689
    690
    691
    692
    693
    694
    695
    696
    697
    698
    699
    700
    701
    702
    703
    704
    705
    706
    707
    708
    709
    710
    711
    712
    713
    714
    715
    716
    717
    718
    719
    720
    721
    722
    723
    724
    725
    726
    727
    728
    729
    730
    731
    732
    733
    734
    735
    736
    737
    738
    739
    740
    741
    742
    743
    744
    745
    746
    747
    748
    749
    750
    751
    752
    753
    754
    755
    756
    757
    758
    759
    760
    761
    762
    763
    764
    765
    766
    767
    768
    769
    770
    771
    772
    773
    774
    775
    776
    777
    778
    779
    780
    781
    782
    783
    784
    785
    786
    787
    788
    789
    790
    791
    792
    793
    794
    795
    796
    797
    798
    799
    800
    801
    802
    803
    804
    805
    806
    807
    808
    809
    810
    811
    812
    813
    814
    815
    816
    817
    818
    819
    820
    821
    822
    823
    824
    825
    826
    827
    828
    829
    830
    831
    832
    833
    834
    835
    836
    837
    838
    839
    840
    841
    842
    843
    844
    845
    846
    847
    848
    849
    850
    851
    852
    853
    854
    855
    856
    857
    858
    859
    860
    861
    862
    863
    864
    865
    866
    867
    868
    869
    870
    871
    872
    873
    874
    875
    876
    877
    878
    879
    880
    881
    882
    883
    884
    885
    886
    887
    888
    889
    890
    891
    892
    893
    894
    895
    896
    897
    898
     
    ' ------ Class clsSunRiseSet
    '
    ' --- Version RC1.1 - Théo
    '
    ' Classe développée par :               Scott Seligman (cf ci-dessous)
    ' Corrections par :                     Théo <theocourant@yahoo.fr>
    ' Traductions et commentaires du code : Théo <theocourant@yahoo.fr>
    ' Ajouts et modifications de code :     Théo <theocourant@yahoo.fr>
     
    Option Explicit
     
    ' -- The following properties are exposed:
    'Sunrise (r) - Sunrise time
    'Sunset (r) - Sunset time
    'SolarNoon (r) - Solar noon
    '
    'CityCount (r) - Number of cities
    'CityName (r) - Name of city, by index
    'City (w) - Sets the longitude/latitude/timezone based off a city
    '           name or city index
    '
    'TimeZone (r/w) - Current Timezone
    'DaySavings (r/w) - Daylight savings time in effect
    'Longitude (r/w) - Longitude to calculate for
    'Latitude (r/w) - Latitude to calculate for
    '
    'DateDay (r/w) - Date to calculate for
    '
    '
    ' -- The following method is exposed
    'CalculateSun - Calculate sunrise, sunset and solar noon
    '
    '
    ' Scott Seligman <scott@scottandmichelle.net>
    ' Based off of
    '   http://www.srrb.noaa.gov/highlights/sunrise/gen.html
     
    '=============================================================================================
    ' Traduction française par Théo
    '=============================================================================================
     
    ' -- Les propriétés suivantes sont publiques :
    'Sunrise (lecture seule) - Heure de levé du soleil
    'Sunset (lecture seule) - Heure de couché du soleil
    'SolarNoon (lecture seule) - Heure de zénith du soleil
    '
    'CityCount (lecture seule) - Nombre de villes enregistrées
    'CityName (lecture seule) - Nom des villes par index
    'City (écriture) - Définie la longitude/latitude/zone horaire
    '           d'une ville par son nom ou son index
    '
    'TimeZone (lecture/écriture) - Zone horaire pour le calcul (= - heure fuseau horaire)
    'DaySavings (lecture/écriture) - Traitement des changements d'horaires en action
    'Longitude (lecture/écriture) - Longitude pour le calcul
    'Latitude (lecture/écriture) - Latitude pour le calcul
    '
    'DateDay (lecture/écriture) - Date pour le calcul
    '
    '
    ' -- La méthode suivante est publique :
    'CalculateSun - Calcul les heures de levé, de couché et de zénith du soleil
    '
    '
    ' Scott Seligman <scott@scottandmichelle.net>
    ' Basé sur
    '   http://www.srrb.noaa.gov/highlights/sunrise/gen.html
    '
    '
    '
    'NdT:   1- L'extension GMT que l'on peut observer sur certaines variables et fonctions
    '           signifie Greenwitch Mean Time ou heure principale de Greenwitch
    '       2- Le calendrier julien a été établit par Jules César en -46 (avant JC) et compte 365 jours pour les années
    '           normales et 366 pour les années bissextiles. Il fut révoqué par le Pape Grégoire XIII pour
    '           le calendrier grégorien que l'on utilise encore actuellement.
    '          Le jour dans le calendrier julien est très utilisé en astronomie.
    '           Il est calculé à partir du 1 Janvier 4713BCE (Before Common Era : avant notre ère)
    '           Certains scientifiques utilisent le terme "Jour julien" pour définir la valeur numérique du jour
    '               par rapport à la date du 1er Janvier 12h de l'année en cours.
    '           Il commence à 12h UTC (Universal Coordinated Time). Cette heure est calculée par horloge atomique.
    '       3- Conditions suffisantes pour que l'année soit bissextile
    '               - année divisible par 4 mais pas par 100 (ex: année 1998 mais pas année 1900)
    '               - année divisible par 400 (ex: année 2000 mais pas année 2100)
    '
    '=============================================================================================
    '************************************** IMPORTANT ********************************************
    '=============================================================================================
    'NdProg:  1- La Zone Horaire correspond à - Décalage Horaire du Fuseau Horaire : ZH = -DHFH
    '         2- Les latitudes sont définies comme suit :
    '               - Est :     valeur négative
    '               - Ouest :   valeur positive
    '         3- Les longitudes sont définies comme suit :
    '               - Nord :    valeur positive
    '               - Sud :     valeur négative
    '=============================================================================================
    '
    '=============================================================================================
    ' Ajouts et modifications par Théo
    '=============================================================================================
    '
    '-- Les variables globales suivantes ont été rajoutées :
    'm_sContinent : Nom du continent
    'm_sCountry : Nom du pays
    '
    '-- Les propriétés suivantes ont été ajoutées et sont publiques :
    'Continent (lecture/écriture) - Nom de la zone géographique d'une ville
    'Country (lecture/écriture) - Nom du pays d'une ville
    '
    'TabCities (lecture seule) - Tableau contenant toutes les villes
    '
    '-- Le type suivant a été modifié :
    'typeCity : Ajout des variables Continent et Country
    '
    '-- La propriété suivante a été modifiée :
    'City (partie écriture) : Traitement de la partie affectation des variables globales
    '
    '-- Les procédures suivantes ont été modifiées :
    'InitMonths : Problème de définition nombre de jours du mois de Février
    'InitCities :   - Problème de conversion des angles entre minutes et degrés
    '               - Ajouts de certaines villes
    'AddCity : Modification suite à la restructuration du type typeCity
    '
     
    Private Type typeMonth 'Déclaration de type de variable
        Name As String      'Nom du mois
        NumDays As Long     'Nombre de jours dans ce mois
    End Type
     
    '2005-10-24:Théo
    ' Modification du type typeCity pour y intégrer de nouveaux paramètres
    'Private Type typeCity
    '    Name As String
    '    Longitude As Double
    '    Latitude As Double
    '    TimeZone As Long
    'End Type
    '
    Private Type typeCity   'Déclaration de type de variable
        Continent As String  'Zone géographique associée à la ville
        Country As String    'Pays où la ville est localisée
        Name As String       'Nom de la ville
        Longitude As Double  'Longitude de la ville
        Latitude As Double   'Latitude de la ville
        TimeZone As Long     'Zone horaire de la ville
    End Type
     
    Private m_cNumberCities As Long 'Nombre de villes enregistrées
    Private m_Cities() As typeCity  'Tableau des villes enregistrées
     
    Private m_monthList(0 To 11) As typeMonth 'Liste des mois
    Private m_monthLeap(0 To 11) As typeMonth 'Liste des mois pour année bissextiles
     
    Private m_nTimeZone As Long      'Numéro de la zone horaire sélectionnée
    Private m_bDaySavings As Boolean 'Gestion du changement d'heure sélectionnée
    Private m_nLongitude As Double   'Valeur de la longitude sélectionnée
    Private m_nLatitude As Double    'Valeur de la latitude sélectionnée
    Private m_dateSel As Date        'Date sélectionnée
    Private m_sContinent As String   'Nom de la zone géographique de la ville
    Private m_sCountry As String     'Nom du pays de la ville
     
    Private m_dateSunrise As Date 'Date du levé du soleil : jours/mois/année heures:minutes:secondes
    Private m_dateSunset As Date  'Date du couché du soleil : jours/mois/année heures:minutes:secondes
    Private m_dateNoon As Date    'Date du zénith du soleil : jours/mois/année heures:minutes:secondes
     
    Public Property Get Sunrise() As Date
    'Propriété de récupération de la date de levé du soleil
        Sunrise = m_dateSunrise
    End Property
     
    Public Property Get Sunset() As Date
    'Propriété de récupération de la date de couché du soleil
        Sunset = m_dateSunset
    End Property
     
    Public Property Get SolarNoon() As Date
    'Propriété de récupération de la date de zénith du soleil
        SolarNoon = m_dateNoon
    End Property
     
    Public Property Get CityCount() As Long
    'Propriété de récupération du nombre de villes enregistrées
        CityCount = m_cNumberCities + 1
    End Property
     
    Public Property Get CityName(nCity As Long) As String
    'Propriété de récupération du nom de la ville récupérée par index
     
        If nCity < 0 Or nCity > m_cNumberCities Then 'Contrôle de l'index dans le tableau
            CityName = "(Error)"
        Else
            CityName = m_Cities(nCity).Name 'Renvoi du nom de la ville
        End If
     
    End Property
     
    Public Property Let City(City)
    'Propriété de sélection de la ville par nom ou par index
     
    Dim nCity As Long      'Index numérique de la ville
    Dim bFound As Boolean  'Variable de contrôle de la présence de la ville dans le tableau
     
        If VarType(City) = vbString Then 'Contrôle du type texte du paramètre
            For nCity = 0 To m_cNumberCities 'Recherche du nom de la ville dans le tableau
                If Trim(LCase(City)) = Trim(LCase(m_Cities(nCity).Name)) Then
                    bFound = True 'Ville trouvée
                    Exit For      'Sortie de la boucle
                End If
            Next
            If Not bFound Then 'Gestion de la ville non trouvée
                nCity = -1
            End If
        Else
            If IsNumeric(City) Then 'Contrôle que le paramètre est numérique
                nCity = City 'Affectation du paramètre à la variable d'index
            Else
                nCity = -1 'Gestion de paramètre non numérique
            End If
        End If
     
        If nCity < 0 Or nCity > m_cNumberCities Then 'Contrôle de l'index en dehors du tableau
            m_nTimeZone = 0       'Valeur par erreur
            m_bDaySavings = False 'Valeur par erreur
            m_nLongitude = 0      'Valeur par erreur
            m_nLatitude = 0       'Valeur par erreur
            m_sContinent = ""     'Valeur par erreur  AJOUT
            m_sCountry = ""       'Valeur par erreur  AJOUT
        Else
            m_nTimeZone = m_Cities(nCity).TimeZone   'Affectation de la valeur à la variable d'échange
            m_bDaySavings = False                    'Affectation de la valeur à la variable d'échange
            m_nLongitude = m_Cities(nCity).Longitude 'Affectation de la valeur à la variable d'échange
            m_nLatitude = m_Cities(nCity).Latitude   'Affectation de la valeur à la variable d'échange
            m_sContinent = m_Cities(nCity).Continent 'Affectation de la valeur à la variable d'échange  AJOUT
            m_sCountry = m_Cities(nCity).Country     'Affectation de la valeur à la variable d'échange  AJOUT
        End If
     
    End Property
     
    Public Property Let TimeZone(nNew As Long)
    'Propriété de sélection du fuseau horaire
        m_nTimeZone = nNew
    End Property
     
    Public Property Get TimeZone() As Long
    'Propriété de récupération du fuseau horaire
        TimeZone = m_nTimeZone
    End Property
     
    Public Property Let DaySavings(bNew As Boolean)
    'Propriété de sélection de la gestion du changement d'heure
        m_bDaySavings = bNew
    End Property
     
    Public Property Get DaySavings() As Boolean
    'Propriété de récupération de la gestion du changement d'heure
        DaySavings = m_bDaySavings
    End Property
     
    Public Property Let Longitude(nNew As Double)
    'Propriété de sélection de la longitude
        m_nLongitude = nNew
    End Property
     
    Public Property Get Longitude() As Double
    'Propriété de récupération de la longitude
        Longitude = m_nLongitude
    End Property
     
    Public Property Let Latitude(nNew As Double)
    'Propriété de sélection de la latitude
        m_nLatitude = nNew
    End Property
     
    Public Property Get Latitude() As Double
    'Propriété de récupération de la latitude
        Latitude = m_nLatitude
    End Property
     
    Public Property Let DateDay(dateNew As Date)
    'Propriété de sélection de la date
        m_dateSel = dateNew
    End Property
     
    Public Property Get DateDay() As Date
    'Propriété de récupération de la dade
        DateDay = m_dateSel
    End Property
     
    Public Property Let Continent(sNew As String)
    'Propriété de sélection de la zone géographique
    'Auteur: Théo
    'Date: 27/10/2005
        m_sContinent = sNew
    End Property
     
    Public Property Get Continent() As String
    'Propriété de récupération de la zone géographique
    'Auteur: Théo
    'Date: 27/10/2005
        Continent = m_sContinent
    End Property
     
    Public Property Let Country(sNew As String)
    'Propriété de sélection du pays
    'Auteur: Théo
    'Date: 27/10/2005
        m_sCountry = sNew
    End Property
     
    Public Property Get Country() As String
    'Propriété de récupération du pays
    'Auteur: Théo
    'Date: 27/10/2005
        Country = m_sCountry
    End Property
     
    Public Property Get TabCities()
    'Propriété de récupération du tableau des villes
    'Auteur : Théo
    'Date : 26/10/2005
     
    Dim TabTemp()   'Tableau temporaire des villes
    Dim i           'Indice de boucle
     
        ReDim TabTemp(5, 0) 'Dimensionnement du tableau
     
        For i = 0 To m_cNumberCities    'Boucle de remplissage du tableau
            TabTemp(0, UBound(TabTemp, 2)) = m_Cities(i).Continent
            TabTemp(1, UBound(TabTemp, 2)) = m_Cities(i).Country
            TabTemp(4, UBound(TabTemp, 2)) = m_Cities(i).Name
            TabTemp(2, UBound(TabTemp, 2)) = m_Cities(i).Latitude
            TabTemp(3, UBound(TabTemp, 2)) = m_Cities(i).Longitude
            TabTemp(5, UBound(TabTemp, 2)) = m_Cities(i).TimeZone
     
            If i < m_cNumberCities Then     'Contrôle de l'indice de boucle
                ReDim Preserve TabTemp(5, UBound(TabTemp, 2) + 1)   'Augmentation de taille du tableau
            End If
     
        Next i
     
        TabCities = TabTemp 'Renvoi du tableau des villes enregistrées
     
    End Property
     
     
    Private Function IsLeapYear(nYear As Long) As Boolean
    'Fonction de contrôle de  du type d'année : bissextile ou non
     
        If (nYear Mod 4 = 0 And nYear Mod 100 <> 0) Or nYear Mod 400 = 0 Then
            IsLeapYear = True  'Année bissextile
        Else
            IsLeapYear = False 'Année non bissextile
        End If
    'Remarque: Conditions suffisantes pour que l'année soit bissextile
    '               - année divisible par 4 mais pas par 100 (ex: année 1998 mais pas année 1900)
    '               - année divisible par 400 (ex: année 2000)
    End Function
     
    Private Function RadToDeg(angleRad As Double) As Double
    'Fonction de conversion d'angle en radian en angle en degré
        RadToDeg = 180 * angleRad / 3.1415926535
    End Function
     
    Private Function DegToRad(angleDeg As Double) As Double
    'Fonction de conversion d'angle en degré en angle en radian
        DegToRad = 3.1415926535 * angleDeg / 180
    End Function
     
    Private Function CalcJulianDay(nMonth As Long, nDay As Long, bLeapYear _
       As Boolean) As Long
    'Fonction de calcul du jour dans le calendrier julien
     
    Dim i As Long           'Indice de boucle
    Dim nJulianDay As Long  'Numéro de jour dans le calendrier julien
     
     
        If bLeapYear Then   'Traitement du cas de l'année bissextile
            For i = 0 To nMonth - 1                                 'Boucle sur les mois précédents
                nJulianDay = nJulianDay + m_monthLeap(i).NumDays    'Additions du nombre de jour pour chaque mois
            Next
        Else                'Traitement de l'année non bissextile
            For i = 0 To nMonth - 1                                 'Boucle sur les mois précédents
                nJulianDay = nJulianDay + m_monthList(i).NumDays    'Additions du nombre de jour pour chaque mois
            Next
        End If
     
        nJulianDay = nJulianDay + nDay  'Ajout du nombre de jour du mois en cours
     
        CalcJulianDay = nJulianDay      'Renvoi du numéro du jour dans le calendrier julien
    End Function
     
    Private Function CalcGamma(nJulianDay As Long) As Double
    'Fonction de calcul de gamma ("fraction d'année") en fonction du jour en calendrier julien
        CalcGamma = (2 * 3.1415926535 / 365) * (nJulianDay - 1)
     
    End Function
     
    Private Function CalcGamma2(nJulianDay As Long, hour As Long)
    'Fonction de calcul de gamma ("fraction d'année") en fonction du jour en calendrier julien et de l'heure
        CalcGamma2 = (2 * 3.1415926535 / 365) * (nJulianDay - 1 + (hour / 24))
     
    End Function
     
    Private Function CalcEqOfTime(gamma As Double) As Double
    'Fonction de calcul du décalage horaire du zénith du soleil
     
        CalcEqOfTime = (229.18 * (0.000075 + 0.001568 * Cos(gamma) - _
           0.032077 * Sin(gamma) - 0.014615 * Cos(2 * gamma) - 0.040849 * _
           Sin(2 * gamma)))
     
    End Function
     
    Private Function CalcSolarDec(gamma As Double) As Double
    'Fonction de calcul de la déclinaison du soleil
     
        CalcSolarDec = (0.006918 - 0.399912 * Cos(gamma) + 0.070257 * _
           Sin(gamma) - 0.006758 * Cos(2 * gamma) + 0.000907 * Sin(2 * _
           gamma))
     
    End Function
     
    Private Function acos(x As Double) As Double
    'Fonction de calcul de l'arccosinus
        On Error Resume Next
        acos = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)
    End Function
     
    Private Function CalcHourAngle(lat As Double, solarDec As Double, time _
       As Boolean) As Double
    'Fonction de calcul de l'angle horaire du soleil
     
    Dim latRad As Double
     
        latRad = DegToRad(lat)  'Définition de la latitude en degré
     
        If time Then    'Cas général de calcul de l'angle horaire
            CalcHourAngle = (acos(Cos(DegToRad(90.833)) / (Cos(latRad) * _
               Cos(solarDec)) - Tan(latRad) * Tan(solarDec)))
     
        Else            'Cas de calcul pour l'angle horaire en GMT
            CalcHourAngle = -(acos(Cos(DegToRad(90.833)) / (Cos(latRad) * _
               Cos(solarDec)) - Tan(latRad) * Tan(solarDec)))
     
        End If
     
    End Function
     
    Private Function CalcDayLength(hourAngle As Double) As Double
    'Fonction de calcul de la durée du jour
        CalcDayLength = (2 * Abs(RadToDeg(hourAngle))) / 15
    End Function
     
    Public Function CalculateSun()
    'Fonction principale de la classe
     
    Dim nLatitude As Double     'Latitude
    Dim nLongitude As Double    'Longitude
    Dim dateCalc As Date        'Date de calcul
    Dim bDaySavings As Long     'Gestion du changement d'heure
    Dim nZone As Long           'Zone horaire
    Dim nJulianDay As Long      'Date en calendrier julien
    Dim gamma_solnoon As Double '"Fraction annuelle" du zénith
    Dim eqTime As Double        'Décalage horaire du zénith
    Dim solarDec As Double      'Déclinaison du soleil
    Dim timeGMT As Double       'Heure GMT du levé
    Dim solNoonGmt As Double    'Heure GMT du zénith
    Dim timeLST As Double       'Heure locale
    Dim solNoonLST As Double    'Heure locale du zénith
    Dim setTimeGMT As Double    'Heure GMT du couché
    Dim setTimeLST As Double    'Heure locale du couché
     
        nLatitude = m_nLatitude                 'Récupération de la latitude de calcul
        nLongitude = m_nLongitude               'Récupération de la longitude de calcul
        dateCalc = m_dateSel                    'Récupération de la date de calcul
        bDaySavings = IIf(m_bDaySavings, 60, 0) 'Traitement du changement d'heure : 60 minutes si changement peut-être à affiner
        nZone = m_nTimeZone                     'Zone horaire
     
        If nLatitude >= -90 And nLatitude < -89.8 Then 'Définition de la borne négative de la latitude
            nLatitude = -89.8
        End If
        If nLatitude <= 90 And nLatitude > 89.8 Then    'Définition de la borne positive de la latitude
            nLatitude = 89.8
        End If
     
        '***** Calculate the time of sunrise
        'Calcul de l'heure de levé du soleil
        nJulianDay = CalcJulianDay(Month(dateCalc), Day(dateCalc), _
           IsLeapYear(Year(dateCalc)))  'Calcul de la date dans le calendrier julien
     
        gamma_solnoon = CalcGamma2(nJulianDay, 12 + (nLongitude / 15))  'Calcul de la "fraction d'année" de la date en calendrier julien
        eqTime = CalcEqOfTime(gamma_solnoon)    'Calcul du décalage horaire du zénith
        solarDec = CalcSolarDec(gamma_solnoon)  'Calcul de la déclinaison
     
        timeGMT = CalcSunriseGMT(DatePart("y", dateCalc), nLatitude, _
           nLongitude)                                              'Calcul de l'heure GMT de levé du soleil
        timeLST = timeGMT - (60 * nZone) + bDaySavings              'Calcul de l'heure locale de levé du soleil
        m_dateSunrise = DateAdd("s", timeLST * 60, Int(m_dateSel))  'Définition de la date locale de levé du soleil
     
        '***** Calculate Solar noon
        'Calcul de l'heure de zénith du soleil
        solNoonGmt = CalcSolNoonGMT(DatePart("y", dateCalc), nLongitude)    'Calcul de l'heure GMT du zénith
        solNoonLST = solNoonGmt - (60 * nZone) + bDaySavings                'Calcul de l'heure locale du zénith
        m_dateNoon = DateAdd("s", solNoonLST * 60, Int(m_dateSel))          'Définition de la date locale du zénith
     
     
        '***** Calculate the time of sunset
        'Calcul de l'heure de couché du soleil
        setTimeGMT = CalcSunsetGMT(DatePart("y", dateCalc), nLatitude, _
           nLongitude)                                                  'Calcul de l'heure GMT du couché
        setTimeLST = setTimeGMT - (60 * nZone) + bDaySavings            'Calcul de l'heure locale du couché
        m_dateSunset = DateAdd("s", setTimeLST * 60, Int(m_dateSel))    'Définition de la date locale du couché
     
    End Function
     
    Private Function CalcSunriseGMT(nJulianDay As Long, nLatitude As Double, _
       nLongitude As Double)
    'Fonction de calcul l'heure de levé du soleil en GMT
     
    Dim gamma As Double             '"Fraction annuelle" du jour julien
    Dim eqTime As Double            'Décalage horaire du jour
    Dim solarDec As Double          'Déclinaison du jour
    Dim hourAngle As Double         'Angle horaire du jour
    Dim delta As Double             'Longitude corrigée
    Dim timeDiff As Double          '???
    Dim timeGMT As Double           'Heure GMT du levé et variable intermédiaire
    Dim gamma_sunrise As Double     '"Fraction annuelle" du levé
     
        gamma = CalcGamma(nJulianDay)                           'Calcul de la "fraction annuelle"
        eqTime = CalcEqOfTime(gamma)                            'Calcul décalage horaire
        solarDec = CalcSolarDec(gamma)                          'Calcul de la déclinaison
        hourAngle = CalcHourAngle(nLatitude, solarDec, True)    'Calcul de l'angle horaire
        delta = nLongitude - RadToDeg(hourAngle)                'Calcul de la longitude corrigée
        timeDiff = 4 * delta                                    '???
        timeGMT = 720 + timeDiff - eqTime                       'Calcul de l'heure GMT
     
     
        gamma_sunrise = CalcGamma2(nJulianDay, timeGMT / 60)    'Calcul de la fraction annuelle pour le levé
        eqTime = CalcEqOfTime(gamma_sunrise)                    'Calcul du décalage horaire pour le levé
        solarDec = CalcSolarDec(gamma_sunrise)                  'Calcul de la déclinaison pour le levé
        hourAngle = CalcHourAngle(nLatitude, solarDec, True)    'Calcul de l'angle horaire pour le levé
        delta = nLongitude - RadToDeg(hourAngle)                'Calcul de la longitude corrigée pour le levé
        timeDiff = 4 * delta                                    '???
        timeGMT = 720 + timeDiff - eqTime                       'Calcul de l'heure GMT du levé
     
        CalcSunriseGMT = timeGMT    'Renvoi de l'heure GMT du levé de soleil
     
    End Function
     
    Private Function CalcSolNoonGMT(nJulianDay As Long, nLongitude As _
       Double) As Double
    'Fonction de calcul de l'heure de zénith du soleil en GMT
     
    Dim gamma_solnoon As Double '"Fraction annuelle" du zénith
    Dim eqTime As Double        'Décalage horaire au zénith
    Dim solarNoonDec As Double  'Déclinaison
    Dim solNoonGmt As Double    'Heure GMT du zénith
     
        gamma_solnoon = CalcGamma2(nJulianDay, 12 + (nLongitude / 15))  'Calcul de la "fraction annuelle"
        eqTime = CalcEqOfTime(gamma_solnoon)                            'Calcul du décalage horaire du zénith
        solarNoonDec = CalcSolarDec(gamma_solnoon)                      'Calcul de la déclinaison
        solNoonGmt = 720 + (nLongitude * 4) - eqTime                    'Calcul de l'heure GMT du zénith
     
        CalcSolNoonGMT = solNoonGmt 'Renvoi de l'heure GMT du zénith
     
    End Function
     
    Private Function CalcSunsetGMT(nJulianDay As Long, nLatitude As Double, _
       nLongitude As Double) As Double
    'Fonction de calcul de l'heure de couché du soleil en GMT
     
    Dim gamma As Double         '"Fraction annuelle" du jour julien suivant
    Dim eqTime As Double        'Décalage horaire du jour
    Dim solarDec As Double      'Déclinaison du jour
    Dim hourAngle As Double     'Angle horaire du jour
    Dim delta As Double         'Longitude corrigée
    Dim timeDiff As Double      '???
    Dim setTimeGMT As Double    'Heure GMT du couché et variable intermédiare
    Dim gamma_sunset As Double  '"Fraction annuelle" du couché
     
        gamma = CalcGamma(nJulianDay + 1)                       'Calcul de la "fraction annuelle"
        eqTime = CalcEqOfTime(gamma)                            'Calcul décalage horaire
        solarDec = CalcSolarDec(gamma)                          'Calcul de la déclinaison
        hourAngle = CalcHourAngle(nLatitude, solarDec, False)   'Calcul de l'angle horaire
        delta = nLongitude - RadToDeg(hourAngle)                'Calcul de la longitude corrigée
        timeDiff = 4 * delta                                    '???
        setTimeGMT = 720 + timeDiff - eqTime                    'Calcul de l'heure GMT
     
     
        gamma_sunset = CalcGamma2(nJulianDay, setTimeGMT / 60)  'Calcul de la "fraction annuelle" pour le couché
        eqTime = CalcEqOfTime(gamma_sunset)                     'Calcul décalage horaire pour le couché
        solarDec = CalcSolarDec(gamma_sunset)                   'Calcul de la déclinaison pour le couché
        hourAngle = CalcHourAngle(nLatitude, solarDec, False)   'Calcul de l'angle horaire pour le couché
        delta = nLongitude - RadToDeg(hourAngle)                'Calcul de la longitude corrigée pour le couché
        timeDiff = 4 * delta                                    '???
        setTimeGMT = 720 + timeDiff - eqTime                    'Calcul de l'heure GMT du couché
     
        CalcSunsetGMT = setTimeGMT  'Renvoi de l'heure GMT du couché
     
    End Function
     
    Private Sub InitMonths()
    'Procédure d'initialisation des mois et de leurs nombres de jours
     
    'Mois année non bissextile
        m_monthList(0).Name = "January": m_monthList(0).NumDays = 31
        m_monthList(1).Name = "February": m_monthList(1).NumDays = 28
        m_monthList(2).Name = "March": m_monthList(2).NumDays = 31
        m_monthList(3).Name = "April": m_monthList(3).NumDays = 30
        m_monthList(4).Name = "May": m_monthList(4).NumDays = 31
        m_monthList(5).Name = "June": m_monthList(5).NumDays = 30
        m_monthList(6).Name = "July": m_monthList(6).NumDays = 31
        m_monthList(7).Name = "August": m_monthList(7).NumDays = 31
        m_monthList(8).Name = "September": m_monthList(8).NumDays = 30
        m_monthList(9).Name = "October": m_monthList(9).NumDays = 31
        m_monthList(10).Name = "November": m_monthList(10).NumDays = 30
        m_monthList(11).Name = "DEcember": m_monthList(11).NumDays = 31
     
    'Mois année bissextile
        m_monthLeap(0).Name = "January": m_monthLeap(0).NumDays = 31
    ' Erreur pour le nombre de jour du mois de Février pour les années bissextiles
    '    m_monthLeap(1).Name = "February": m_monthLeap(1).NumDays = 28
        m_monthLeap(1).Name = "February": m_monthLeap(1).NumDays = 29
        m_monthLeap(2).Name = "March": m_monthLeap(2).NumDays = 31
        m_monthLeap(3).Name = "April": m_monthLeap(3).NumDays = 30
        m_monthLeap(4).Name = "May": m_monthLeap(4).NumDays = 31
        m_monthLeap(5).Name = "June": m_monthLeap(5).NumDays = 30
        m_monthLeap(6).Name = "July": m_monthLeap(6).NumDays = 31
        m_monthLeap(7).Name = "August": m_monthLeap(7).NumDays = 31
        m_monthLeap(8).Name = "September": m_monthLeap(8).NumDays = 30
        m_monthLeap(9).Name = "October": m_monthLeap(9).NumDays = 31
        m_monthLeap(10).Name = "November": m_monthLeap(10).NumDays = 30
        m_monthLeap(11).Name = "DEcember": m_monthLeap(11).NumDays = 31
     
    End Sub
    '2005-10-26: Théo
    'Modification de la procédure suivante pour intégrer les évolutions de la structure de l'enregistrement d'une ville
    '
    'Private Sub AddCity(sCity As String, nLatitude As Double, nLongitude As Double, nZone As Long)
    '
    '
    '    m_cNumberCities = m_cNumberCities + 1
    '    If m_cNumberCities > UBound(m_Cities) Then
    '        ReDim Preserve m_Cities(UBound(m_Cities) + 10)
    '    End If
    '
    '
    '    m_Cities(m_cNumberCities).Name = sCity
    '    m_Cities(m_cNumberCities).Latitude = nLatitude
    '    m_Cities(m_cNumberCities).Longitude = nLongitude
    '    m_Cities(m_cNumberCities).TimeZone = nZone
    '
    'End Sub
    '
    Private Sub AddCity(sContinent As String, sCountry As String, sCity As String, nLatitude As Double, nLongitude As _
       Double, nZone As Long)
    'Procédure d'ajout d'une ville dans le tableau de référence
     
        m_cNumberCities = m_cNumberCities + 1       'Augmente le nombre de villes
        If m_cNumberCities > UBound(m_Cities) Then  'Contrôle et redimensionne le tableau des villes si besoin
            ReDim Preserve m_Cities(UBound(m_Cities) + 10)
        End If
     
     
        m_Cities(m_cNumberCities).Continent = sContinent    'Définition du continent
        m_Cities(m_cNumberCities).Country = sCountry        'Définition du pays
        m_Cities(m_cNumberCities).Name = sCity              'Définition du nom de la ville
        m_Cities(m_cNumberCities).Latitude = nLatitude      'Définition de la latitude
        m_Cities(m_cNumberCities).Longitude = nLongitude    'Définition de la longitude
        m_Cities(m_cNumberCities).TimeZone = nZone          'Définition de la zone horaire
     
    End Sub
     
    Private Sub InitCities()
    'Procédure d'initialisation du tableau des villes de référence
        m_cNumberCities = -1
        ReDim m_Cities(0)
     
    ' Erreur de la gestion des latitudes et longitudes entre ° et le transformation des ' (minutes d'angle) en °
    '    AddCity "Albuquerque, NM", 35.05, 106.39, 7
    '    AddCity "Anchorage, AK", 61.13, 149.54, 9
    '    AddCity "Atlanta, GA", 33.44, 84.23, 5
    '    AddCity "Boston, MA", 42.21, 71.03, 5
    '    AddCity "Boulder, CO", 40.125, 105.237, 7
    '    AddCity "Chicago, IL", 41.51, 87.39, 6
    '    AddCity "Dallas, TX", 32.46, 96.47, 6
    '    AddCity "Denver, CO", 39.44, 104.59, 7
    '    AddCity "Detroit, MI", 42.2, 83.03, 5
    '    AddCity "Honolulu, HA", 21.18, 157.51, 10
    '    AddCity "Indianapolis, IN", 39.46, 86.09, 5
    '    AddCity "Kansas City, MO", 39.05, 94.34, 6
    '    AddCity "Los Angeles, CA", 34.03, 118.14, 8
    '    AddCity "Miami, FL", 25.46, 80.11, 5
    '    AddCity "Minneapolis, nMonth", 44.58, 93.15, 6
    '    AddCity "New Orleans, LA", 29.57, 90.04, 6
    '    AddCity "New York City, NY", 40.43, 74.01, 5
    '    AddCity "Oklahoma City, OK", 35.28, 97.3, 6
    '    AddCity "Philadelphia, PA", 39.57, 75.09, 5
    '    AddCity "Phoenix, AZ", 33.26, 112.04, 7
    '    AddCity "Saint Louis, MO", 38.37, 90.11, 6
    '    AddCity "San Fransisco, CA", 37.46, 122.25, 8
    '    AddCity "Seattle, WA", 47.36, 122.19, 8
    '    AddCity "Washington DC", 38.53, 77.02, 5
    '    AddCity "Beijing, China", 39.55, -116.25, -8
    '    AddCity "Berlin, Germany", 52.33, -13.3, -1
    '    AddCity "Buenos Aires, Argentina", -34.36, 58.27, 3
    '    AddCity "Cairo, Egypt", -30.06, -31.22, -2
    '    AddCity "Cape Town, South Africa", -33.55, -18.22, -2
    '    AddCity "Caracas, Venezula", 10.3, 66.56, 4
    '    AddCity "Helsinki, Finland", 60.1, -24.58, -2
    '    AddCity "Hong Kong, China", 22.15, -114.1, -8
    '    AddCity "London, England", 51.3, 0.1, 0
    '    AddCity "Mexico City, Mexico", 19.24, 99.09, 6
    '    AddCity "Moscow, Russia", 55.45, -37.35, -3
    '    AddCity "New Delhi, India", 28.36, -77.12, -5.5
    '    AddCity "Ottawa, Canada", 45.25, 75.42, 5
    '    AddCity "Paris, France", 48.52, -2.2, -1
    '    AddCity "Rio de Janeiro, Brazil", -22.54, 43.14, 3
    '    AddCity "Riyadh, Saudi Arabia", 24.38, -46.43, -3
    '    AddCity "Rome, Italy", 41.54, -12.29, -1
    '    AddCity "Sydney, Australia", -33.52, -151.13, -10
    '    AddCity "Tokyo, Japan", 35.42, -139.46, -9
    '    AddCity "Zurich, Switzerland", 47.23, -8.32, -1
     
     
        AddCity "Amérique du Nord", "USA", "Albuquerque, NM", 35.083333, 106.65, 7
        AddCity "Amérique du Nord", "USA", "Anchorage, AK", 61.216667, 149.9, 9
        AddCity "Amérique du Nord", "USA", "Atlanta, GA", 33.733333, 84.383333, 5
        AddCity "Amérique du Nord", "USA", "Boston, MA", 42.35, 71.05, 5
        AddCity "Amérique du Nord", "USA", "Boulder, CO", 40.015, 105.27, 7
        AddCity "Amérique du Nord", "USA", "Chicago, IL", 41.85, 87.65, 6
        AddCity "Amérique du Nord", "USA", "Dallas, TX", 32.766667, 96.783333, 6
        AddCity "Amérique du Nord", "USA", "Denver, CO", 39.733333, 104.983333, 7
        AddCity "Amérique du Nord", "USA", "Detroit, MI", 42.333333, 83.05, 5
        AddCity "Amérique du Nord", "USA", "Honolulu, HA", 21.3, 157.85, 10
        AddCity "Amérique du Nord", "USA", "Indianapolis, IN", 39.766667, 86.15, 5
        AddCity "Amérique du Nord", "USA", "Kansas City, MO", 39.083333, 94.566667, 6
        AddCity "Amérique du Nord", "USA", "Los Angeles, CA", 34.05, 118.233333, 8
        AddCity "Amérique du Nord", "USA", "Miami, FL", 25.766667, 80.183333, 5
        AddCity "Amérique du Nord", "USA", "Minneapolis, Minnesota", 44.966667, 93.25, 6
        AddCity "Amérique du Nord", "USA", "New Orleans, LA", 29.95, 90.066667, 6
        AddCity "Amérique du Nord", "USA", "New York City, NY", 40.716667, 74.016667, 5
        AddCity "Amérique du Nord", "USA", "Oklahoma City, OK", 35.466667, 97.5, 6
        AddCity "Amérique du Nord", "USA", "Philadelphia, PA", 39.95, 75.15, 5
        AddCity "Amérique du Nord", "USA", "Phoenix, AZ", 33.433333, 112.066667, 7
        AddCity "Amérique du Nord", "USA", "Saint Louis, MO", 38.616667, 90.183333, 6
        AddCity "Amérique du Nord", "USA", "San Francisco, CA", 37.766667, 122.416667, 8
        AddCity "Amérique du Nord", "USA", "Seattle, WA", 47.6, 122.316667, 8
        AddCity "Amérique du Nord", "USA", "Washington DC", 38.883333, 77.033333, 5
        AddCity "Amérique Latine", "Argentine", "Buenos Aires", -34.6, 58.45, 3
        AddCity "Amérique Latine", "Vénézula", "Caracas", 10.5, 66.933333, 4
        AddCity "Amérique Latine", "Mexique", "Mexico City", 19.4, 99.15, 6
        AddCity "Amérique du Nord", "Canada", "Ottawa", 45.416667, 75.7, 5
        AddCity "Amérique Latine", "Brésil", "Rio de Janeiro", -22.9, 43.233333, 3
        AddCity "Afrique", "Arabie Saoudite", "Riyadh", 24.633333, -46.716667, -3
        AddCity "Afrique", "Egypte", "Le Caire", -30.1, -31.366667, -2
        AddCity "Afrique", "Afrique du Sud", "Cape Town", -33.916667, -18.366667, -2
        AddCity "Asie", "Chine", "Beijing", 39.916667, -116.416667, -8
        AddCity "Asie", "Chine", "Hong Kong", 22.25, -114.166667, -8
        AddCity "Asie", "Inde", "New Delhi", 28.6, -77.333333, -5.5
        AddCity "Asie", "Japon", "Tokyo", 35.7, -139.766667, -9
        AddCity "Europe", "Royaume-Uni", "Londres", 51.5, 0.16667, 0
        AddCity "Europe", "Allemagne", "Berlin", 52.55, -13.5, -1
        AddCity "Europe", "Finlande", "Helsinki", 60.166667, -24.966667, -2
        AddCity "Europe", "Russie", "Moscou", 55.75, -37.583333, -3
        AddCity "Europe", "France", "Paris", 48.866667, -2.333333, -1
        AddCity "Europe", "Italie", "Rome", 41.9, -12.483333, -1
        AddCity "Europe", "Suisse", "Zurich", 47.383333, -8.533333, -1
        AddCity "Océanie", "Australie", "Sydney", -33.866667, -151.216667, -10
     
    ' Villes ajoutées par Théo
        AddCity "Europe", "Irlande", "Dublin", 53.333333, 6.25, 0
        AddCity "Europe", "Suède", "Stockholm", 59.333333, -18.05, -1
        AddCity "Europe", "Espagne", "Madrid", 40.4, 3.68333333, -1
        AddCity "Europe", "Norvège", "Oslo", 59.916667, -10.75, -1
        AddCity "Europe", "Portugal", "Lisbonne", 38.716667, 9.133333, 1
        AddCity "Europe", "Royaume-Uni", "Greenwich", 51.666667, 0, 0
        AddCity "Europe", "Belgique", "Bruxelles", 50.833333, -4.333333, -1
        AddCity "Europe", "Autriche", "Vienne", 48.2, -16.366667, -1
        AddCity "Europe", "Grèce", "Athènes", 37.966667, -23.716667, -2
        AddCity "Europe", "Luxembourg", "Luxembourg", 49.612, -6.13, -1
        AddCity "Amérique du Nord", "Canada", "Toronto", 43.667, 79.417, 5
        AddCity "Amérique du Nord", "Canada", "Québec", 46.8, 71.25, 4
        AddCity "Amérique du Nord", "Canada", "Victoria", 48.433, 123.35, 8
        AddCity "Amérique du Nord", "Canada", "Vancouver", 49.25, 123.133, 8
        AddCity "Amérique du Nord", "Canada", "Edmonton", 53.55, 113.5, 7
        AddCity "Amérique du Nord", "Canada", "Winnipeg", 51.65, 99.917, 6
        AddCity "Europe", "France", "Bourg-en-Bresse", 46.2, -5.216667, -1
        AddCity "Europe", "France", "Laon", 49.566667, -3.616667, -1
        AddCity "Europe", "France", "Moulins", 46.566667, -3.333333, -1
        AddCity "Europe", "France", "Digne", 44.083333, -6.233333, -1
        AddCity "Europe", "France", "Gap", 44.55, -6.083333, -1
        AddCity "Europe", "France", "Nice", 43.7, -7.266667, -1
        AddCity "Europe", "France", "Privas", 44.733333, -4.6, -1
        AddCity "Europe", "France", "Cherleville-Mézières", 49.766667, -4.716667, -1
        AddCity "Europe", "France", "Foix", 42.95, -1.583333, -1
        AddCity "Europe", "France", "Troyes", 48.3, -4.083333, -1
        AddCity "Europe", "France", "Carcassonne", 43.216667, -2.35, -1
        AddCity "Europe", "France", "Rodez", 44.35, -2.566667, -1
        AddCity "Europe", "France", "Marseille", 43.3, -5.366667, -1
        AddCity "Europe", "France", "Caen", 49.183333, 0.366667, -1
        AddCity "Europe", "France", "Aurillac", 44.933333, -2.433333, -1
        AddCity "Europe", "France", "Angoulème", 45.666667, -0.166667, -1
        AddCity "Europe", "France", "La Rochelle", 46.166667, 1.166667, -1
        AddCity "Europe", "France", "Bourges", 47.083333, -2.383333, -1
        AddCity "Europe", "France", "Tulle", 45.266667, -1.766667, -1
        AddCity "Europe", "France", "Ajaccio", 41.916667, -8.716667, -1
        AddCity "Europe", "France", "Dijon", 47.333333, -5.033333, -1
        AddCity "Europe", "France", "Saint-Brieuc", 48.516667, 2.75, -1
        AddCity "Europe", "France", "Gueret", 46.166667, -1.866667, -1
        AddCity "Europe", "France", "Périgueux", 45.2, -0.733333, -1
        AddCity "Europe", "France", "Besançon", 47.233333, -6.033333, -1
        AddCity "Europe", "France", "Valence", 44.933333, -4.9, -1
        AddCity "Europe", "France", "Evreux", 49.05, -1.183333, -1
        AddCity "Europe", "France", "Chartres", 48.45, -1.5, -1
        AddCity "Europe", "France", "Quimper", 48, 4.1, -1
        AddCity "Europe", "France", "Nîmes", 43.833333, -4.35, -1
        AddCity "Europe", "France", "Toulouse", 43.616667, -1.45, -1
        AddCity "Europe", "France", "Auch", 43.666667, -0.6, -1
        AddCity "Europe", "France", "Bordeaux", 44.833333, 0.566667, -1
        AddCity "Europe", "France", "Montpellier", 43.6, -3.883333, -1
        AddCity "Europe", "France", "Rennes", 48.1, 1.666667, -1
        AddCity "Europe", "France", "Chateauroux", 46.816667, -1.683333, -1
        AddCity "Europe", "France", "Tours", 47.383333, -0.7, -1
        AddCity "Europe", "France", "Grenoble", 45.183333, -5.716667, -1
        AddCity "Europe", "France", "Lons-le-Saunier", 46.683333, -5.55, -1
        AddCity "Europe", "France", "Mont-de-Marsan", 43.9, 0.5, -1
        AddCity "Europe", "France", "Blois", 47.6, -1.333333, -1
        AddCity "Europe", "France", "Saint-Etienne", 45.433333, -4.383333, -1
        AddCity "Europe", "France", "Le Puy", 45.05, -3.883333, -1
        AddCity "Europe", "France", "Nantes", 47.233333, 1.583333, -1
        AddCity "Europe", "France", "Orleans", 47.9, -1.9, -1
        AddCity "Europe", "France", "Cahors", 44.466667, -1.433333, -1
        AddCity "Europe", "France", "Agen", 44.2, -0.633333, -1
        AddCity "Europe", "France", "Mende", 44.533333, -3.5, -1
        AddCity "Europe", "France", "Angers", 47.483333, 0.533333, -1
        AddCity "Europe", "France", "Saint-Lo", 49.116667, 1.083333, -1
        AddCity "Europe", "France", "Chalons-sur-Marne", 48.966667, -4.366667, -1
        AddCity "Europe", "France", "Chaumont", 48.116667, -5.133333, -1
        AddCity "Europe", "France", "Laval", 48.066667, 0.75, -1
        AddCity "Europe", "France", "Nancy", 48.7, -6.2, -1
        AddCity "Europe", "France", "Bar-le-Duc", 48.766667, -5.166667, -1
        AddCity "Europe", "France", "Vannes", 47.666667, 2.733333, -1
        AddCity "Europe", "France", "Metz", 49.116667, -6.183333, -1
        AddCity "Europe", "France", "Nevers", 47, -3.15, -1
        AddCity "Europe", "France", "Lille", 50.65, -3.083333, -1
        AddCity "Europe", "France", "Beauvais", 49.433333, -2.083333, -1
        AddCity "Europe", "France", "Alençon", 48.416667, -0.083333, -1
        AddCity "Europe", "France", "Arras", 50.283333, -2.766667, -1
        AddCity "Europe", "France", "Clermont-Ferrand", 45.783333, -3.083333, -1
        AddCity "Europe", "France", "Pau", 43.3, 0.366667, -1
        AddCity "Europe", "France", "Tarbes", 43.233333, 0.083333, -1
        AddCity "Europe", "France", "Perpignan", 42.7, -2.9, -1
        AddCity "Europe", "France", "Strasbourg", 48.583333, -7.75, -1
        AddCity "Europe", "France", "Colmar", 48.083333, -7.35, -1
        AddCity "Europe", "France", "Lyon", 45.766667, -4.833333, -1
        AddCity "Europe", "France", "Vesoul", 47.633333, -6.15, -1
        AddCity "Europe", "France", "Mâcon", 46.3, -4.833333, -1
        AddCity "Europe", "France", "Le Mans", 48, -0.2, -1
        AddCity "Europe", "France", "Chambery", 45.566667, -5.916667, -1
        AddCity "Europe", "France", "Annecy", 45.9, -6.116667, -1
        AddCity "Europe", "France", "Rouen", 49.433333, -1.083333, -1
        AddCity "Europe", "France", "Melun", 48.533333, -2.666667, -1
        AddCity "Europe", "France", "Versailles", 48.8, -2.133333, -1
        AddCity "Europe", "France", "Niort", 46.316667, 0.45, -1
        AddCity "Europe", "France", "Amiens", 49.9, -2.3, -1
        AddCity "Europe", "France", "Albi", 43.933333, -2.133333, -1
        AddCity "Europe", "France", "Montauban", 44.016667, -1.333333, -1
        AddCity "Europe", "France", "Toulon", 43.116667, -5.916667, -1
        AddCity "Europe", "France", "Avignon", 43.933333, -4.8, -1
        AddCity "Europe", "France", "La-Roche-sur-Yon", 46.666667, 1.0416667, -1
        AddCity "Europe", "France", "Poitiers", 46.583333, -0.333333, -1
        AddCity "Europe", "France", "Limoges", 45.833333, -1.25, -1
        AddCity "Europe", "France", "Epinal", 48.166667, -6.466667, -1
        AddCity "Europe", "France", "Auxerre", 47.8, -3.583333, -1
        AddCity "Europe", "France", "Belfort", 47.633333, -6.866667, -1
        AddCity "Europe", "France", "Evry", 48.633333, -2.566667, -1
        AddCity "Europe", "France", "Nanterre", 48.883333, -2.216667, -1
        AddCity "Europe", "France", "Bobigny", 48.916667, -2.45, -1
        AddCity "Europe", "France", "Créteil", 48.783333, 2.466667, -1
        AddCity "Europe", "France", "Pontoise", 49.05, -2.083333, -1
        AddCity "Europe", "France", "Pontarlier", 46.9, -6.333333, -1 'Ville où j'ai grandi (Théo)
        AddCity "Europe", "France", "Saint-Germain-en-Laye", 48.883333, -2.066667, -1  'Ville où je vis actuellement (Théo)
        AddCity "Europe", "Suisse", "Berne", 46.917, -7.467, -1
        AddCity "Europe", "Suisse", "Genève", 6.2, -6.167, -1
        AddCity "Europe", "Suisse", "Bâle", 47.567, -7.6, -1
        AddCity "Europe", "Suisse", "Lausanne", 46.533, -6.667, -1
     
    End Sub
     
    Private Sub Class_Initialize()
    'Procédure d'initialisation de la classe
     
        InitMonths          'Initialisation des mois
        InitCities          'Initialisation des villes
        m_dateSel = Now     'Initialisation de la date à celle du jour
     
    End Sub
     
    ' ------ End of class clsSunRiseSet
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    clap clap clap
    merci
    Elle est pas belle la vie ?

  3. #3
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ha ouais, là, je dis... Chapeau!

  4. #4
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut


    Vous allez me faire rougir

    Théo =>
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  5. #5
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Chapeau bas !

    PS : Juste une petite question, dans quel(s) domaine(s) ça peut servir ?

  6. #6
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par pc75
    Bonjour,

    Chapeau bas !

    PS : Juste une petite question, dans quel(s) domaine(s) ça peut servir ?
    Salut,

    En fait c'est issu d'une question d'un utilisateur à propos de l'existence d'une fonction "nuit" permettant de déterminer si on est de jour ou de nuit suivant son lieu géographique...

    Sinon tu peux en faire un éphéméride...

    Voilà

    @+

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  7. #7
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    en attendant le déplacement vers les sources

    Merci et félicitations !
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    dans quel domaine

    légal perquisition=lever du soleil
    automation= ouverture lumière, fermeture portes, chauffage, changement caméra en infra rouge, gestion des serres, programmes arrosage automatique, gestion piscine
    gestion des flux=(transport ou transpac )
    astronomie, astrologie
    programmation feux artifices
    gestion du ramadan
    statistiques sur cycle nycthémère ou diurne, calcul durée du jour
    gestion zoo, aquarium
    organisation voyages tourismes
    médecine
    navigation maritimme
    météorologie
    plaisir intellectuel de la difficulté surmontée

    en cherchant bien on en trouve

    et
    "C'est encore plus beau, lorsque c'est inutile"

    Edmon Rostand (Cyrano de Bergerac)
    Elle est pas belle la vie ?

  9. #9
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par random
    dans quel domaine

    légal perquisition=lever du soleil
    automation= ouverture lumière, fermeture portes, chauffage, changement caméra en infra rouge, gestion des serres, programmes arrosage automatique, gestion piscine
    gestion des flux=(transport ou transpac )
    astronomie, astrologie
    programmation feux artifices
    gestion du ramadan
    statistiques sur cycle nycthémère ou diurne, calcul durée du jour
    gestion zoo, aquarium
    organisation voyages tourismes
    médecine
    navigation maritimme
    météorologie
    plaisir intellectuel de la difficulté surmontée

    en cherchant bien on en trouve

    et
    "C'est encore plus beau, lorsque c'est inutile"

    Edmon Rostand (Cyrano de Bergerac)
    Je n'ai qu'un mot à dire :

    MAGNIFIQUE

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    pour te récompenser théo j'ajoute

    gestion des tarifs dans les bars
    Elle est pas belle la vie ?

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Et en plus, t'as trouvé le temps de bosser là-dessus entre tes interventions dans le forum

    Merci!
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  12. #12
    Membre éprouvé
    Avatar de ridan
    Inscrit en
    Avril 2003
    Messages
    710
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2003
    Messages : 710
    Points : 1 126
    Points
    1 126
    Par défaut
    @ bientôt

    :: Ressources VB : Cours | FAQ | Sources et surtout La recherche sur le forum

    :: Pour un forum plus propre ...

  13. #13
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Bonjour,

    Merci à tous pour vos encouragements ...

    Je ne pensais pas avoir un tel engouement.

    Merci beaucoup

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  14. #14
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    he bien bravo, un code maaaaaagnifique

    et bravo pour la traduction, vive la france (t'y a passé combien de temps? )

    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  15. #15
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par méphistopheles
    he bien bravo, un code maaaaaagnifique

    et bravo pour la traduction, vive la france (t'y a passé combien de temps? )

    salut
    Salut,

    Pour le projet dans sa globalité, j'y ai passé environ 27-30 heures (dont 7 jeudi soir après le boulot 20-3h du mat) pour
    -- la trad
    -- l'analyse du prog (y avait pas d'exemple et pas de note rien quoi)
    -- corriger les erreurs et y en avait pas mal (toutes les latitudes et les longitudes étaient fausses)
    -- ajouter certaines fonctions et propriétés qui me semblaient nécessaires
    -- rechercher de nouvelles villes et les ajouter
    -- réfléchir sur les évolutions à apporter
    -- corriger les bugs (oui il y en avait plusieurs dont une boucle infini en code masqué...)
    -- récupérer des données ...

    Enfin, je me suis bien éclaté

    @+

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Merci pour le boulot fait. C'est moi qui a lancé le sujet à propos d'une fonction NUIT. Elle sera utilisée dans un système de télésurveillance qui fonctionne (qui devra fonctionner) n'importe où dans le monde. Elle servira à prendre des décisions automaiquement c'est à dire sans interventions humaines.

  17. #17
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    cette source traine depuis pas mal de temps; il serait donc opportun de la publier dans la prochaine MAJ de la page sources VB

    Je vais donc être très terre-à-terre :

    Il serait de bon ton :
    - d'éviter les fautes de frappe (test du code proposé)
    - de proposer une petite interface utilisateur avec des combobox (filtrées en cascade) pour le choix d'une ville
    - revoir le stockage des données sans avoir à modifier la classe (dans un fichier .txt ?)
    - proposer une feuille d'ajout des villes
    - proposer un .zip complet du projet

    Merci
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  18. #18
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par ThierryAIM
    cette source traine depuis pas mal de temps; il serait donc opportun de la publier dans la prochaine MAJ de la page sources VB

    Je vais donc être très terre-à-terre :

    Il serait de bon ton :
    - d'éviter les fautes de frappe (test du code proposé)
    - de proposer une petite interface utilisateur avec des combobox (filtrées en cascade) pour le choix d'une ville
    - revoir le stockage des données sans avoir à modifier la classe (dans un fichier .txt ?)
    - proposer une feuille d'ajout des villes
    - proposer un .zip complet du projet

    Merci
    Ok je vais voir ça dès que je peux.

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

Discussions similaires

  1. Liaison entre classe de calcul et interface Javafx
    Par fabrice121 dans le forum JavaFX
    Réponses: 23
    Dernier message: 24/04/2015, 10h56
  2. Class Vector et calcul
    Par mr_samurai dans le forum SL & STL
    Réponses: 9
    Dernier message: 12/07/2008, 18h01
  3. Liaisons avec la couche physique d'une classe
    Par yanne dans le forum W4 Express
    Réponses: 2
    Dernier message: 22/06/2007, 16h45
  4. couche de classe entre application et base de donnee
    Par Lord HaSaN dans le forum Accès aux données
    Réponses: 1
    Dernier message: 24/01/2007, 15h09
  5. Réponses: 15
    Dernier message: 05/09/2006, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo