Synthétiser un Array avec beaucoup d'éléments

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 !

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

J'ai un Array qui contient en fait les membres d'une matrice (si l'on peut s'exprimer ainsi...) :

relax = Array(feriado(1), feriado(2), feriado(3), feriado(4), ... , feriado(50))

Les éléments de la matrice se succèdent par ordre croissant sans qu'aucun ne manque de 1 à 50.
La matrice a été déclarée comme statique : Dim feriado(50) As Date

1/ Peut-on synthétiser la syntaxe de l'Array dans le genre "feriado(1) To feriado(50) ?
Car supposons par ex. qu'il y ait 250 éléments...

Par la suite, dans la macro, j'ai écrit :

For i = 1 To UBound(relax)
If i = 14 Or i = 15 Or i = 16 Or i = 17 Or i = 18 Then
If Fecha = relax(i) Then verdict = 1: Exit For
.
.
.
ElseIf i = 22 Or i = 23 Or i = 24 Or i = 25 Or i = 26 Or i = 27 Or i = 28 Or i = 29 Or i = 30 Or i = 31 Or i = 32 Or i = 33 Or i = 34 Or i = 35 Or i = 36 Or i = 37 Or i = 38 Or i = 39 Or i = 40 Or i = 41 Or i = 42 Or i = 43 Or i = 44 Or i = 45 Or i = 46
If Fecha = relax(i) Then verdict = 5: Exit For
.
.
.
Endif

2/ Peut-on résumer la 2ème condition (i allant de 22 à 46) dans le genre dans le genre i = 22 To i = 50 ?

Merci de tout conseil
 
Re : Synthétiser un Array avec beaucoup d'éléments

Apres cette ligne
Code:
relax = Array(feriado(1), feriado(2), feriado(3), feriado(4), ... , feriado(50))
relax est egal a feriado donc pourquoi utiliser une variable

++
Minick
 
Re : Synthétiser un Array avec beaucoup d'éléments

Si tu en a le temps Minick, regarde le fichier que l’on peut récupérer sur le fil que je viens de relancer et qui s’intitule : « Question à Roger2327 sur les lunaisons ».
Dans le fichier cet Array se trouve dans le module « Fonctions » / « EstFerie ».

À+
 
Re : Synthétiser un Array avec beaucoup d'éléments

Comme je le pense elle ne sert a rien cette variable enfin si j'ai bien vu.

Remplace
Code:
Dim Année As Integer, feriado(52) As Date, relax As Variant
Par
Code:
Dim Année As Integer, feriado(52) As Date
puis
Code:
    For i = 1 To UBound(relax)
        Select Case i
            Case 14 To 18  'Feriados no laborables (+++)
                If Fecha = relax(i) Then verdict = 1: Exit For
            Case 6, 9, 12  'Feriados laborables ± moviles desplazados
                If Fecha = relax(i) Then verdict = 3: Exit For
            Case 7, 10, 13  'Feriados laborables ± moviles
                If Fecha = relax(i) Then verdict = 4: Exit For
            Case 22, 23  'Equinoxes (+++)
                If Fecha = relax(i) Then verdict = 7: Exit For
            Case 24, 25  'Solstices (+++)
                If Fecha = relax(i) Then verdict = 8: Exit For
            Case 26, 27  'Changements d'heure (+++)
                If Fecha = relax(i) Then verdict = 9: Exit For
            Case 28 To 52  'Cumpleaños
                If Fecha = relax(i) Then verdict = 5: Exit For
            Case Else  'Demás feriados laborables (+++)
                If Fecha = relax(i) Then verdict = 2: Exit For
        End Select
    Next i
par
Code:
    For i = 1 To UBound(feriado)
        Select Case i
            Case 14 To 18  'Feriados no laborables (+++)
                If Fecha = feriado(i) Then verdict = 1: Exit For
            Case 6, 9, 12  'Feriados laborables ± moviles desplazados
                If Fecha = feriado(i) Then verdict = 3: Exit For
            Case 7, 10, 13  'Feriados laborables ± moviles
                If Fecha = feriado(i) Then verdict = 4: Exit For
            Case 22, 23  'Equinoxes (+++)
                If Fecha = feriado(i) Then verdict = 7: Exit For
            Case 24, 25  'Solstices (+++)
                If Fecha = feriado(i) Then verdict = 8: Exit For
            Case 26, 27  'Changements d'heure (+++)
                If Fecha = feriado(i) Then verdict = 9: Exit For
            Case 28 To 52  'Cumpleaños
                If Fecha = feriado(i) Then verdict = 5: Exit For
            Case Else  'Demás feriados laborables (+++)
                If Fecha = feriado(i) Then verdict = 2: Exit For
        End Select
    Next i
et supprime
Code:
relax = Array(feriado(1), feriado(2), feriado(3), feriado(4), feriado(5), feriado(6), feriado(7), feriado(8), feriado(9), feriado(10), feriado(11), feriado(12), feriado(13), ...
 
- 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
6
Affichages
551
Retour