XL 2010 Dresser un Array à partir de plusieurs Arrays

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

Je me suis amusé à rédiger une fonction qui renvoie, suivant la date, le nom du jour de la semaine dans la langue choisie parmi une liste de langues incluse dans la fonction.
Le dernier item de chaque Array est le nom de la langue.
VB:
Function NomJourSemaineTrip$(fecha As Date, ChxLangue As Byte, Optional NomLangue As Boolean = False)
'Renvoie le jour de la semaine correspondant à une date
'- fecha : une date
'- ChxLangue : choix de la langue. Ex : 1 --> Afrikaans | 2 --> Albanais | 3 --> Allemand | 4 --> Anglais | 5 --> Basque | 6 --> Ch'ti |...
'- NomLangue : si omis ou False --> nom du jour de la semaine dans la langue choisie
'              si True --> nom de la langue choisie
'https://unicode-table.com/fr/#0435
'Magic_Doctor

Dim langue As Variant

    Select Case ChxLangue
        Case 1: langue = Array("Sonndag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag", "Afrikaans")
        Case 2: langue = Array("E diel", "E hënë", "E martë", "E mërkurë", "E enjte", "E premte", "E shtunë", "Albanais")
        Case 3: langue = Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Allemand")
        Case 4: langue = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Anglais")
        Case 5: langue = Array("Igande", "Astelehen", "Astearte", "Asteazken", "Ortzegun", "Ortziral", "Larunbat", "Basque")
        Case 6: langue = Array("Disul", "Dilun", "Dimeurzh", "Dimerc'her", "Diriaou", "Digwener", "Disadorn", "Breton")
        Case 7: langue = Array("Diminche", "Lundi", "Mardi", "Mékerdi", "Judi", "Verdi", "Sinmdi", "Ch'ti")
        Case 8: langue = Array("Dumenica", "Luni", "Martì", "Mercurì", "Ghjovi", "Venneri", "Sabatu", "Corse")
        Case 9: langue = Array("Demen", "Lendi", "Madi", "Mèkredì", "Jedi", "Vandredi", "Sanmdi", "Créole")
        Case 10: langue = Array("S" & ChrW(248) & "ndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "L" & ChrW(248) & "rdag", "Danois")
        Case 11: langue = Array("Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Espagnol")
        Case 12: langue = Array("Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Nejapäev", "Reede", "Laupäev", "Estonien")
        Case 13: langue = Array("Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai", "Finnois")
        Case 14: langue = Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Français")
        Case 15: langue = Array("Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado", "Galicien")
        Case 16: langue = Array("Arateî", "Arakôi", "Araapy", "Ararundy", "Arapo", "Arapoteî", "Arapokôi", "Guaraní")
        Case 17: langue = Array("Vasárnap", "Hétf" & ChrW(337), "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Hongrois")
        Case 18: langue = Array("Sunnudagur", "Mánudagur", ChrW(222) & "ri" & ChrW(240) & "judagur", "Mi" & ChrW(240) & "vikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Islandais")
        Case 19: langue = Array("Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Italien")
        Case 20: langue = Array("Nichiyôbi", "Getsuyôbi", "Kayôbi", "Suiyôbi", "Mokuyôbi", "Kinyôbi", "Doyôbi", "Japonais")
        Case 21: langue = Array("Sv" & ChrW(275) & "tdiena", "Pirmdiena", "Otrdiena", "Tre" & ChrW(353) & "diena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Letton")
        Case 22: langue = Array("Sekmadienis", "Pirmadienis", "Antradienis", "Tre" & ChrW(269) & "iadienis", "Ketvirtadienis", "Penktadienis", ChrW(352) & "e" & ChrW(353) & "tadienis", "Lituanien")
        Case 23: langue = Array("Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Néerlandais")
        Case 24: langue = Array("S" & ChrW(248) & "ndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "L" & ChrW(248) & "rdag", "Norvégien")
        Case 25: langue = Array("Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado", "Portugais")
        Case 26: langue = Array("Dewo", "Aa" & ChrW(595) & "nde", "Mawbaare", "Njeslaare", "Naasaande", "Mawnde", "Hoore-Biir", "Poular")
        Case 27: langue = Array("Dimanche", "Dilun", "Dimars", "Dimècre", "Dijoù", "Divèndre", "Dissate", "Provençal")
        Case 28: langue = Array("Intichaw", "Killachaw", "Atichaw", "Quyllurchaw", "Illapachaw", "Ch'askachaw", "K'uychichaw", "Quechua")
        Case 29: langue = Array("Duminicã", "Luni", "Martì", "Miercurì", "Joi", "Vineri", "Sâmbãtã", "Roumain")
        Case 30: langue = Array(ChrW(1042) & ChrW(1086) & ChrW(1089) & ChrW(1082) & ChrW(1088) & ChrW(1077) & ChrW(1089) & ChrW(1077) & ChrW(1085) & ChrW(1100) & ChrW(1077), _
                                ChrW(1055) & ChrW(1086) & ChrW(1085) & ChrW(1077) & ChrW(1076) & ChrW(1100) & ChrW(1085) & ChrW(1080) & ChrW(1082), _
                                ChrW(1042) & ChrW(1090) & ChrW(1086) & ChrW(1088) & ChrW(1085) & ChrW(1080) & ChrW(1082), _
                                ChrW(1057) & ChrW(1088) & ChrW(1077) & ChrW(1076) & ChrW(1072), _
                                ChrW(1063) & ChrW(1077) & ChrW(1090) & ChrW(1074) & ChrW(1077) & ChrW(1088) & ChrW(1075), _
                                ChrW(1055) & ChrW(1103) & ChrW(1090) & ChrW(1085) & ChrW(1080) & ChrW(1094) & ChrW(1072), _
                                ChrW(1057) & ChrW(1091) & ChrW(1073) & ChrW(1073) & ChrW(1086) & ChrW(1094) & ChrW(1072), "Russe")
        Case 31: langue = Array("Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", ChrW(268) & "etvrtak", "Petak", "Subota", "Serbo-Croate")
        Case 32: langue = Array("Söndag", "M" & ChrW(229) & "ndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Suédois")
        Case 33: langue = Array("Ned" & ChrW(283) & "le", "Pond" & ChrW(283) & "lí", "Úterý", "St" & ChrW(345) & "da", ChrW(268) & "tvrtek", "Pátek", "Sobota", "Tchèque")
        Case 34: langue = Array("Pazar", "Pazartesi", "Sali", ChrW(199) & "ar" & ChrW(351) & "amba", "Per" & ChrW(351) & "embe", "Cuma", "Cumartesi", "Turc")
        Case 35: langue = Array("Ch" & ChrW(7911) & " Nh" & ChrW(7853) & "t", "Th" & ChrW(7913) & " Hai", "Th" & ChrW(7913) & " Ba", "Th" & ChrW(7913) & " T" & ChrW(7921), _
                                "Th" & ChrW(7913) & " N" & ChrW(7863) & "m", "Th" & ChrW(7913) & " Sáu", "Th" & ChrW(7913) & " B" & ChrW(7834) & "y", "Vietnamien")
    End Select
   
    NomJourSemaineTrip = IIf(NomLangue, langue(7), langue(Weekday(fecha) - 1)) 'Option Base 0
   
End Function
Serait-il possible de dresser un Array qui comprenne uniquement tous les noms de langues pour pouvoir le récupérer ailleurs dans une macro afin d'éviter la corvée de l'écrire ?
 
Solution
Bonsoir,

J'ai peaufiné cette fonction qui marche maintenant très bien et sans le recours d'une date pour dresser un ou des tableaux dans des modules.
VB:
Function NomJourSemaineTrip$(Optional fecha As Date, Optional ChxLangue As Byte, Optional NomLangue As Boolean = False, Optional items As Boolean = False)
'Renvoie le jour de la semaine correspondant à une date
'- fecha : une date
'- ChxLangue : choix de la langue. Ex : 1 --> Afrikaans | 2 --> Albanais | 3 --> Allemand |...
'- NomLangue : si omis ou False --> nom du jour de la semaine dans la langue choisie
'              si True --> nom de la langue choisie
'- items : si True --> nombre d'items dans le tableau "ListeLangues"
'https://unicode-table.com/fr/#0435
'Magic_Doctor

Dim...

soan

XLDnaute Barbatruc
Bonsoir,

pour ta ligne '- ChxLangue : choix de la langue. Ex : 1 --> Afrikaans | ...

correction à faire au bout : 5 --> Basque | 6 --> Breton | 7 --> Ch'ti |...



pour ta demande, voici l'array qui contient uniquement les langues :

VB:
Sub Essai()
  Dim Langues
  Langues = Array("Afrikaans", "Albanais", "Allemand", "Anglais", "Basque", "Breton", "Ch'ti", "Corse", "Créole", _
    "Danois", "Espagnol", "Estonien", "Finnois", "Français", "Galicien", "Guaraní", "Hongrois", "Islandais", _
    "Italien", "Japonais", "Letton", "Lituanien", "Néerlandais", "Norvégien", "Portugais", "Poular", "Provençal", _
    "Quechua", "Roumain", "Russe", "Serbo-Croate", "Suédois", "Tchèque", "Turc", "Vietnamien")
End Sub

y'a plus qu'à faire un copier / coller. :)

soan
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re,

Pour la ligne en REM, évidemment, je ne l'avais pas mise à jour.

Pour l'Array, c'est exactement ce que j'avais écrit dans la macro. Je voulais simplement savoir si, dans la fonction, on peut dresser automatiquement cet Array, pour le récupérer ensuite (au cas où l'on modifierait la liste des langues dans la fonction, sans avoir à devoir ensuite modifier l'Array dans la ou les macros) dans une ou des macros.
J'avais tenté un bricolage du genre :

VB:
Dim ListeLangues()

    ReDim ListeLangues(1 To 35)
    For ChxLangue = LBound(ListeLangues) To UBound(ListeLangues)
        ListeLangues(ChxLangue) = langue(7)
    Next
Si ça avait marché, il aurait alors suffit de rajouter un paramètre dans la fonction pour récupérer dans une macro l'Array en question.
 

soan

XLDnaute Barbatruc
Re,

ouvre le fichier ci-joint, et fais Ctrl e

VB:
Option Explicit

'ici, il y a ta fonction NomJourSemaineTrip()

Sub Essai()
  Dim Langues(1 To 35), i As Byte
  For i = 1 To 35
    Langues(i) = NomJourSemaineTrip(#2/20/2021#, i, -1)
  Next i
  'Vérif par écriture sur la feuille, en colonne A
  Application.ScreenUpdating = 0
  For i = 1 To 35
    Cells(i, 1) = Langues(i)
  Next i
End Sub

soan
 

Pièces jointes

  • Exo Magic_Doctor.xlsm
    25.6 KB · Affichages: 24

Magic_Doctor

XLDnaute Barbatruc
Re,

Merci pour ta réponse.
Le but de l'opération n'est pas de récupérer tous les items de l'Array sur une feuille, mais dans un autre Array (dans une macro) qui servira à remplir un dictionnaire destiné à alimenter un ComboBox. Tout se passe dans les modules et pas sur la feuille.
Tous ces problèmes je les ai déjà résolus. Si je veux confectionner un Array dans la fonction, c'est à la fois pour le fun et voir si c'est possible. Je pense que oui. Mais je jongle mal avec les Arrays et autres ParamArray.
L'avantage serait aussi le suivant : si on modifiait la liste de langues dans la fonction, automatiquement cette modification serait prise en compte dans les macros utilisant l'Array en question.
 

soan

XLDnaute Barbatruc
Re,

si tu relis le code VBA, tu pourras voir ceci :

VB:
  'Vérif par écriture sur la feuille, en colonne A
  Application.ScreenUpdating = 0
  For i = 1 To 35
    Cells(i, 1) = Langues(i)
  Next i

c'est-à-dire que l'affichage sur la feuille n'est rien d'autre qu'une vérif ; sans cette vérif, le code VBA de ma sub Essai() se résume à ceci :​

VB:
Sub Essai()
  Dim Langues(1 To 35), i As Byte
  For i = 1 To 35
    Langues(i) = NomJourSemaineTrip(#2/20/2021#, i, -1)
  Next i
End Sub

et les 35 langues sont dans l'array Langues() : un tableau à une dimension de 35 éléments.

soan
 

soan

XLDnaute Barbatruc
@Magic_Doctor

je suis content que ça a marché ! 👍 :)

dans un code VBA, les constantes de dates doivent être encadrées de dièses ; c'est imposé par la syntaxe du VBA ; « #2/20/2021# » est donc la constante date du 20 février 2021 ; pour cet exo, tu peux mettre n'importe quelle date car elle n'est pas utilisée pour calculer un jour de semaine : il s'agit juste de récupérer la langue.

j'aurais même pu mettre : Langues(i) = NomJourSemaineTrip(Date, i, -1) mais dans une boucle For i = 1 To 35 c'est mieux d'éviter de « récupérer » 35× la date du jour ! ;)

bonne journée à toi aussi. 🍀

soan
 

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai peaufiné cette fonction qui marche maintenant très bien et sans le recours d'une date pour dresser un ou des tableaux dans des modules.
VB:
Function NomJourSemaineTrip$(Optional fecha As Date, Optional ChxLangue As Byte, Optional NomLangue As Boolean = False, Optional items As Boolean = False)
'Renvoie le jour de la semaine correspondant à une date
'- fecha : une date
'- ChxLangue : choix de la langue. Ex : 1 --> Afrikaans | 2 --> Albanais | 3 --> Allemand |...
'- NomLangue : si omis ou False --> nom du jour de la semaine dans la langue choisie
'              si True --> nom de la langue choisie
'- items : si True --> nombre d'items dans le tableau "ListeLangues"
'https://unicode-table.com/fr/#0435
'Magic_Doctor

Dim langue, NbItems As Byte

    On Error Resume Next
  
    Select Case ChxLangue
        Case 1: langue = Array("Sonndag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag", "Afrikaans")
        Case 2: langue = Array("E diel", "E hënë", "E martë", "E mërkurë", "E enjte", "E premte", "E shtunë", "Albanais")
        Case 3: langue = Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Allemand")
        Case 4: langue = Array("Sonndich", "Mendich", "Denschdich", "Mittich", "Donnerschtich", "Fraidich", "Samschdich", "Allemand (Bavarois)")
        Case 5: langue = Array("Sunntig", "Määntig", "Ziischtig", "Mittwuch", "Dunschtig", "Friitig", "Samschtig", "Allemand (Suisse)")
        Case 6: langue = Array("Sunndi", "Mandi", "Zischdi", "Mittwuch", "Dunnerschdi", "Fridi", "Sàmschdi", "Alsacien")
        Case 7: langue = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Anglais")
        Case 8: langue = Array("Domingo", "Luns", "Martes", "Miércols", "Chuebes", "Biernes", "Sabado", "Aragonais")
        Case 9: langue = Array("Domingu", "Llunes", "Martes", "Miércols", "Xueves", "Vienres", "Sábadu", "Asturien")
        Case 10: langue = Array("Igande", "Astelehen", "Astearte", "Asteazken", "Ortzegun", "Ortziral", "Larunbat", "Basque")
        Case 11: langue = Array("Nedjelja", "Ponedeljak", "Utorak", "Srijeda", "Cxetvrtak", "Petak", "Subota", "Bosniaque")
        Case 12: langue = Array("Disul", "Dilun", "Dimeurzh", "Dimerc'her", "Diriaou", "Digwener", "Disadorn", "Breton")
        Case 13: langue = Array("Nedelja", "Ponedelnik", "Vtornik", "Srjada", ChrW(268) & "etv" & ChrW(227) & "rt" & ChrW(227) & "k", "Pet" & ChrW(227) & "k", "S" & ChrW(227) & "bota", "Bulgare")
        Case 14: langue = Array("Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte", "Catalan")
        Case 15: langue = Array("Unododaquasgvi", "Unadodaquonvi", "Taline iga", "Tsoine iga", "Nvgine iga", "Tsungilosdi", "Unadodawidena", "Cherokee")
        Case 16: langue = Array("Diminche", "Lundi", "Mardi", "Mékerdi", "Judi", "Verdi", "Sinmdi", "Ch'ti")
        Case 17: langue = Array("dy' Sul", "dy' Lun", "dy' Meurth", "dy' Mergher", "dy' Yow", "dy' Gwener", "dy' Sadorn", "Cornique")
        Case 18: langue = Array("Dumenica", "Luni", "Martì", "Mercurì", "Ghjovi", "Venneri", "Sabatu", "Corse")
        Case 19: langue = Array("Demen", "Lendi", "Madi", "Mèkredì", "Jedi", "Vandredi", "Sanmdi", "Créole")
        Case 20: langue = Array("S" & ChrW(248) & "ndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "L" & ChrW(248) & "rdag", "Danois")
        Case 21: langue = Array("Didòmhnaich", "Diluain", "Dimàirt", "Diciadain", "Diardaoin", "Dihaoine", "Disathairne", "Écossais")
        Case 22: langue = Array("Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Espagnol")
        Case 23: langue = Array("Doman" & ChrW(265) & "o", "Lundo", "Mardo", "Merkredo", ChrW(308) & "a" & ChrW(365) & "di", "Vendredo", "Sabato", "Espéranto " & ChrW(9775))
        Case 24: langue = Array("Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Nejapäev", "Reede", "Laupäev", "Estonien")
        Case 25: langue = Array("Sunnudagur", "Mánadagur", "Týsdagur", "Mikudagur", "Hósdagur", "Fríggjadagur", "Leygardagur", "Féroïen")
        Case 26: langue = Array("Sigatabu", "M" & ChrW(333) & "niti", "T" & ChrW(363) & "siti", "Vukelulu", "Lotulevu", "Vakaraubuka", "Vakarauwai", "Fidjien")
        Case 27: langue = Array("Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai", "Finnois")
        Case 28: langue = Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Français")
        Case 29: langue = Array("Domenie", "Lunis", "Martars", "Miercus", "Joibe", "Vinars", "Sàbide", "Frioulan")
        Case 30: langue = Array("Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado", "Galicien")
        Case 31: langue = Array("Dydd Sul", "Dydd Llun", "Dydd Mawrth", "Dydd Mercher", "Dydd Iau", "Dydd Gwener", "Dydd Sadwrn", "Gallois")
        Case 32: langue = Array("Arateî", "Arakôi", "Araapy", "Ararundy", "Arapo", "Arapoteî", "Arapokôi", "Guaraní")
        Case 33: langue = Array("Dinmanche", "Lundi", "Mardi", "Méquerdi", "Jeudi", "Venderdi", "Samedi", "Guernésiais")
        Case 34: langue = Array("Vasárnap", "Hétf" & ChrW(337), "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Hongrois")
        Case 35: langue = Array("Sundio", "Lundio", "Mardio", "Merkurdio", "Jovdio", "Venerdio", "Saturdio", "Ido " & ChrW(9775))
        Case 36: langue = Array("Sapaat", "Ataasinngorneq", "Marlunngorneq", "Pingasunngorneq", "Sisamanngorneq", "Tallimanngorneq", "Arfininngorneq", "Inuit")
        Case 37: langue = Array("Domhnaoh", "Luan", "Mairt", "Ceadaoin", "Deardaoin", "Aoine", "Satharn", "Irlandais")
        Case 38: langue = Array("Sunnudagur", "Mánudagur", ChrW(222) & "ri" & ChrW(240) & "judagur", "Mi" & ChrW(240) & "vikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Islandais")
        Case 39: langue = Array("Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Italien")
        Case 40: langue = Array("Nichiyôbi", "Getsuyôbi", "Kayôbi", "Suiyôbi", "Mokuyôbi", "Kinyôbi", "Doyôbi", "Japonais")
        Case 41: langue = Array("Dînmanche", "Lundi", "Mardi", "Mêcrédi", "Jeudi", "Vendrédi", "Sanm’di", "Jersiais")
        Case 42: langue = Array("Sv" & ChrW(275) & "tdiena", "Pirmdiena", "Otrdiena", "Tre" & ChrW(353) & "diena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Letton")
        Case 43: langue = Array("Duménnega", "Lûnedí", "Martedí", "Merculedí", "Zœggia", "Venardí", "Sabbu", "Ligurien")
        Case 44: langue = Array("Zóndig", "Maondig", "Daensdig", "Goonsdig", "Dónderdig", "Vriedig", "Zaoterdig", "Limbourgeois")
        Case 45: langue = Array("Sekmadienis", "Pirmadienis", "Antradienis", "Tre" & ChrW(269) & "iadienis", "Ketvirtadienis", "Penktadienis", ChrW(352) & "e" & ChrW(353) & "tadienis", "Lituanien")
        Case 46: langue = Array("Piv" & ChrW(257) & "p" & ChrW(479) & "va", "E" & ChrW(382) & ChrW(382) & ChrW(245) & "mp" & ChrW(479) & "va", "Tuoiznap" & ChrW(479) & "va", "Kuolm" & ChrW(245) & "ndp" & ChrW(479) & "va", "Ne" & ChrW(316) & ChrW(316) & ChrW(245) & "ndp" & ChrW(479) & "va", "Br" & ChrW(275) & ChrW(263) & "ig", "P" & ChrW(363) & "olp" & ChrW(479) & "va", "Livonien")
        Case 47: langue = Array("Sonndeg", "Méindeg", "Dënschdeg", "Mëttwoch", "Donneschdeg", "Freideg", "Samschdeg", "Luxembourgeois")
        Case 48: langue = Array("Il-" & ChrW(294) & "add", "It-Tnejn", "It-Tlieta", "Il-Erbg" & ChrW(295) & "a", "Il-" & ChrW(294) & "amis", "Il-Gimg" & ChrW(295) & "a", "Is-Sibt", "Maltais")
        Case 49: langue = Array("Nedela", "Ponedelnik", "Vtornik", "Sreda", "Chetvrtok", "Petok", "Sabota", "Macédonien")
        Case 50: langue = Array("Jedoonee", "Jelhune", "Jemayrt", "Jecrean", "Jerdein", "Jeheiney", "Jesarn", "Manxois")
        Case 51: langue = Array("R" & ChrW(257) & "tapu", "R" & ChrW(257) & "hine", "R" & ChrW(257) & "t" & ChrW(363), "R" & ChrW(257) & "apa", "R" & ChrW(257) & "pare", "R" & ChrW(257) & "mere", "R" & ChrW(257) & "horoi", "Maori")
        Case 52: langue = Array("Domingku", "Lune", "Marte", "Myerkole", "Kwefe", "Fyerne", "Safado", "Mapuche")
        Case 53: langue = Array("Dumenëga", "Lünesdi", "Metesdi", "Mercuredi", "Zœgia", "Venardi", "Sabu", "Monégasque")
        Case 54: langue = Array("Dummeneca", "Lunnerì", "Marterì", "Miercurì", "Gioverì", "Viernarì", "Sàbbato", "Napolitain")
        Case 55: langue = Array("Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Néerlandais")
        Case 56: langue = Array("Dîmmaunche", "Lundi", "Mardi", "Mercrédi", "Jéeudi", "Vendrédi", "Sammedi", "Normand")
        Case 57: langue = Array("Sunnudagr", "Mánadagr", "Týsdagr", ChrW(211) & ChrW(240) & "insdagr", ChrW(222) & ChrW(243) & "rsdagr", "Fr" & ChrW(225) & "dagr", "Laugardagr", "Norrois")
        Case 58: langue = Array("S" & ChrW(248) & "ndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "L" & ChrW(248) & "rdag", "Norvégien")
        Case 59: langue = Array("Dimenge", "Diluns", "Dimars", "Dimècres", "Dijóus", "Divendres", "Dissabte", "Occitan")
        Case 60: langue = Array("Djadomingo", "Djaluna", "Djamars", "Djarason", "Djaweps", "Djabièrna", "Djasabra", "Papiamento")
        Case 61: langue = Array("Dimenche", "Léndi", "Mardi", "Mécrdi", "Jheùdi", "Vendrdi", "Sémedi", "Poitevin")
        Case 62: langue = Array("Niedziela", "Poniedzia" & ChrW(322) & "ek", "Wtorek", ChrW(346) & "roda", "Czwartek", "Pi" & ChrW(261) & "tek", "Sobota", "Polonais")
        Case 63: langue = Array("Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado", "Portugais")
        Case 64: langue = Array("Dewo", "Aa" & ChrW(595) & "nde", "Mawbaare", "Njeslaare", "Naasaande", "Mawnde", "Hoore-Biir", "Poular")
        Case 65: langue = Array("Dimanche", "Dilun", "Dimars", "Dimècre", "Dijoù", "Divèndre", "Dissate", "Provençal")
        Case 66: langue = Array("Intichaw", "Killachaw", "Atichaw", "Quyllurchaw", "Illapachaw", "Ch'askachaw", "K'uychichaw", "Quechua")
        Case 67: langue = Array("Ra" & ChrW(257) & " p" & ChrW(333) & " hitu", "Ra" & ChrW(257) & " p" & ChrW(333) & " tahi", "Ra" & ChrW(257) & " p" & ChrW(333) & " rua", "Ra" & ChrW(257) & " p" & ChrW(333) & " toru", "Ra" & ChrW(257) & " p" & ChrW(333) & " h", "Ra" & ChrW(257) & " p" & ChrW(333) & " rima", "Ra" & ChrW(257) & " p" & ChrW(333) & " ono", "Rapanui")
        Case 68: langue = Array("Duminicã", "Luni", "Martì", "Miercurì", "Joi", "Vineri", "Sâmbãtã", "Roumain")
        Case 69: langue = Array(ChrW(1042) & ChrW(1086) & ChrW(1089) & ChrW(1082) & ChrW(1088) & ChrW(1077) & ChrW(1089) & ChrW(1077) & ChrW(1085) & ChrW(1100) & ChrW(1077), _
                                ChrW(1055) & ChrW(1086) & ChrW(1085) & ChrW(1077) & ChrW(1076) & ChrW(1100) & ChrW(1085) & ChrW(1080) & ChrW(1082), _
                                ChrW(1042) & ChrW(1090) & ChrW(1086) & ChrW(1088) & ChrW(1085) & ChrW(1080) & ChrW(1082), _
                                ChrW(1057) & ChrW(1088) & ChrW(1077) & ChrW(1076) & ChrW(1072), _
                                ChrW(1063) & ChrW(1077) & ChrW(1090) & ChrW(1074) & ChrW(1077) & ChrW(1088) & ChrW(1075), _
                                ChrW(1055) & ChrW(1103) & ChrW(1090) & ChrW(1085) & ChrW(1080) & ChrW(1094) & ChrW(1072), _
                                ChrW(1057) & ChrW(1091) & ChrW(1073) & ChrW(1073) & ChrW(1086) & ChrW(1094) & ChrW(1072), "Russe (1)")
        Case 70: langue = Array("Voskresen’ye", "Ponedel’nik", "Vtornik", "Sreda", "Chetverk", "Pyatnitsa", "Subbota", "Russe (2)")
        Case 71: langue = Array("Aso S" & ChrW(257), "Aso Gafua", "Aso Lua", "Aso Lulu", "Aso Tofi", "Aso Faraile", "Aso To’ona’i", "Samoan")
        Case 72: langue = Array("Dumíniga", "Lunis", "Martis", "Mércuris", "Giòvia", "Chenábura", "Sáppadu", "Sarde")
        Case 73: langue = Array("Sunday", "Monanday", "Tysday", "Wadensday", "Fuirsday", "Friday", "Seturday", "Scots")
        Case 74: langue = Array("Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", ChrW(268) & "etvrtak", "Petak", "Subota", "Serbo-Croate")
        Case 75: langue = Array("D" & ChrW(297) & "m" & ChrW(227) & "ch", "L" & ChrW(369) & "di", "Mardi", "Mekrëdi", "Djödi", "V" & ChrW(227) & "drëdi", "Samdi", "Sercquiais")
        Case 76: langue = Array("Sontaha", "Mantaha", "Labobedi", "Laboraro", "Labone", "Labohlano", "Moqebelo", "Sesotho")
        Case 77: langue = Array("Nede" & ChrW(318) & "a", "Pondelok", "Utorok", "Streda", ChrW(352) & "tvrtok", "Piatok", "Sobota", "Slovaque")
        Case 78: langue = Array("Nedelja", "Ponedeljek", "Torek", "Sreda", ChrW(268) & "etrtek", "Petek", "Sobota", "Slovène")
        Case 79: langue = Array("Njed" & ChrW(378) & "ela", "P" & ChrW(243) & "nd" & ChrW(378) & "ela", "Wutora", "Srjeda", ChrW(352) & "tw" & ChrW(243) & "rtk", "Pjatk", "Sobota", "Sorbian")
        Case 80: langue = Array("Söndag", "M" & ChrW(229) & "ndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Suédois")
        Case 81: langue = Array("Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi", "Swahili")
        Case 82: langue = Array("T" & ChrW(257) & "pati", "Monir" & ChrW(275), "Mahana Piti", "Mahana Toru", "Mahana Maha", "Mahana Pae", "Mahana M" & ChrW(257) & "'a", "Tahitien")
        Case 83: langue = Array("Ned" & ChrW(283) & "le", "Pond" & ChrW(283) & "lí", "Úterý", "St" & ChrW(345) & "da", ChrW(268) & "tvrtek", "Pátek", "Sobota", "Tchèque")
        Case 84: langue = Array("Pazar", "Pazartesi", "Sali", ChrW(199) & "ar" & ChrW(351) & "amba", "Per" & ChrW(351) & "embe", "Cuma", "Cumartesi", "Turc")
        Case 85: langue = Array("Aso S" & ChrW(257), "Aso Gafua", "Aso Lua", "Aso Tolu", "Aso F" & ChrW(257), "Aso Lima", "Aso Ono", "Tuvaluan")
        Case 86: langue = Array("Swondaha", "Musumbuluwo", ChrW(7740) & "avhuvhili", ChrW(7740) & "avhuraru", ChrW(7740) & "avhu" & ChrW(7755) & "a", ChrW(7740) & "avhutanu", "Mugivhela", "Venda")
        Case 87: langue = Array("Ch" & ChrW(7911) & " Nh" & ChrW(7853) & "t", "Th" & ChrW(7913) & " Hai", "Th" & ChrW(7913) & " Ba", "Th" & ChrW(7913) & " T" & ChrW(7921), _
                                "Th" & ChrW(7913) & " N" & ChrW(7863) & "m", "Th" & ChrW(7913) & " Sáu", "Th" & ChrW(7913) & " B" & ChrW(7834) & "y", "Vietnamien")
        Case 88: langue = Array("Balüdel", "Telüdel", "Kilüdel", "Folüdel", "Lulüdel", "Mälüdel", "Velüdel", "Volapük " & ChrW(9775))
        Case 89: langue = Array("Pühäpäiv", "Iispäiv", "T" & ChrW(245) & ChrW(245) & "s" & ChrW(245) & "päiv", "Kolmapäiv", "Neläpäiv", "Riidi", "Puulpäiv", "V" & ChrW(245) & "ro")
        Case 90: langue = Array("Dimenge", "Londi", "M" & ChrW(229) & "rdi", "Mierkidi", "Djudi", "Vénrdi", "Semdi", "Wallon")
        Case 91: langue = Array("iSonto", "uMombuluko", "uLwesibili", "uLwesithathu", "uLwesine", "uLewishlanu", "uMgqibelo", "Zoulou")
    End Select
  
    NbItems = 91  'nombre de langues répertoriées dans la fonction
  
    If items Then
        NomJourSemaineTrip = NbItems                     'nombre total de langues dans le tableau "ListeLangues"
    ElseIf NomLangue Then
        NomJourSemaineTrip = langue(7)                   'langue choisie
    Else
        NomJourSemaineTrip = langue(Weekday(fecha) - 1)  'jour de la semaine, correspondant á la date "fecha", dans la langue choisie (Option Base 0)
    End If
  
End Function
Dans un module il n'y a plus qu'à écrire ceci pour récupérer l'intégralité des langues proposées dans la fonction :
VB:
Dim ListeLangues, NbItems As Byte, i As Byte

    NbItems = NomJourSemaineTrip(, , , True)         'nombre de langues répertoriées dans la fonction "NomJourSemaineTrip"
  
    'Dresse un tableau avec la liste des langues répertoriées dans la fonction "NomJourSemaineTrip"
    ReDim ListeLangues(NbItems)
    For i = 1 To NbItems
        ListeLangues(i) = NomJourSemaineTrip(, i, True)
    Next
L'intérêt, c'est de n'avoir rien à modifier où que ce soit si l'on décide de rajouter d'autres jours de la semaine en d'autres langues. Tout se passe uniquement dans la fonction. Ne pas oublier de mettre manuellement à jour la variable NbItems.
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

On est d'accord, la fonction marche. Je me demandais, peut-être naïvement, s'il serait possible de renvoyer une matrice directement à partir de la fonction.
Plutôt que d'écrire ce qu'il y a dans le précédent post, écrire ceci :
VB:
Function NomJourSemaineTrip(Optional fecha As Date, Optional ChxLangue As Byte, Optional NomLangue As Boolean = False, Optional items As Boolean = False, Optional tablo As Boolean = False)
'Renvoie le jour de la semaine correspondant à une date
'- fecha : une date
'- ChxLangue : choix de la langue. Ex : 1 --> Afrikaans | 2 --> Albanais | 3 --> Allemand |...
'- NomLangue : si omis ou False --> nom du jour de la semaine dans la langue choisie
'              si True --> nom de la langue choisie
'- items : si True --> nombre d'items dans le tableau "ListeLangues"
'- tablo : si True --> renvoie la matrice "ListeLangues"

Dim langue, ListeLangues, NbItems As Byte, i As Byte

    On Error Resume Next  'devient alors nécessaire
    
    Select Case ChxLangue
        Case 1: langue = Array("Sonndag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag", "Afrikaans")
        Case 2: langue = Array("E diel", "E hënë", "E martë", "E mërkurë", "E enjte", "E premte", "E shtunë", "Albanais")
        Case 3: langue = Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Allemand")
        Case 4: langue = Array("Sonndich", "Mendich", "Denschdich", "Mittich", "Donnerschtich", "Fraidich", "Samschdich", "Allemand (Bavarois)")
        Case 5: langue = Array("Sunntig", "Määntig", "Ziischtig", "Mittwuch", "Dunschtig", "Friitig", "Samschtig", "Allemand (Suisse)")
        Case 6: langue = Array("Sunndi", "Mandi", "Zischdi", "Mittwuch", "Dunnerschdi", "Fridi", "Sàmschdi", "Alsacien")
        Case 7: langue = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Anglais")
        Case 8: langue = Array("Domingo", "Luns", "Martes", "Miércols", "Chuebes", "Biernes", "Sabado", "Aragonais")
        Case 9: langue = Array("Domingu", "Llunes", "Martes", "Miércols", "Xueves", "Vienres", "Sábadu", "Asturien")
        Case 10: langue = Array("Igande", "Astelehen", "Astearte", "Asteazken", "Ortzegun", "Ortziral", "Larunbat", "Basque")
    End Select
    
    NbItems = 10  'nombre de langues répertoriées dans la fonction
        
    If tablo Then
        'Liste de toutes les langues figurant dans la fonction
        ReDim ListeLangues(NbItems)
        For i = 1 To NbItems
            ListeLangues(i) = langue(7)
        Next
        NomJourSemaineTrip = ListeLangues
    ElseIf items Then
        NomJourSemaineTrip = NbItems                     'nombre total de langues dans le tableau "ListeLangues"
    ElseIf NomLangue Then
        NomJourSemaineTrip = langue(7)                   'langue choisie
    Else
        NomJourSemaineTrip = langue(Weekday(fecha) - 1)  'jour de la semaine, correspondant á la date "fecha", dans la langue choisie (Option Base 0)
    End If
    
End Function
Il suffirait alors, dans un module, d'écrire, par exemple :
VB:
Sub Essai()

    [H12] = NomJourSemaineTrip(, , , , True)(5)  'si ça marchait, renverrait "Allemand (Suisse)"

End Sub
 

patricktoulon

XLDnaute Barbatruc
bonsoir
VB:
Sub Essai()
    MsgBox NomJourSemaineTrip(, , , , True)(5)   'si ça marchait, renverrait "Allemand (Suisse)"
End Sub

Function NomJourSemaineTrip(Optional fecha As Date, Optional ChxLangue As Byte, Optional NomLangue As Boolean = False, Optional items As Boolean = False, Optional tablo As Boolean = False)
'Renvoie le jour de la semaine correspondant à une date
'- fecha : une date
'- ChxLangue : choix de la langue. Ex : 1 --> Afrikaans | 2 --> Albanais | 3 --> Allemand |...
'- NomLangue : si omis ou False --> nom du jour de la semaine dans la langue choisie
'              si True --> nom de la langue choisie
'- items : si True --> nombre d'items dans le tableau "ListeLangues"
'- tablo : si True --> renvoie la matrice "ListeLangues"

    Dim langue, ListeLangues, NbItems As Byte, i As Byte, t$, tt


    Select Case ChxLangue
    Case 1: langue = Array("Sonndag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag", "Afrikaans")
    Case 2: langue = Array("E diel", "E hënë", "E martë", "E mërkurë", "E enjte", "E premte", "E shtunë", "Albanais")
    Case 3: langue = Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Allemand")
    Case 4: langue = Array("Sonndich", "Mendich", "Denschdich", "Mittich", "Donnerschtich", "Fraidich", "Samschdich", "Allemand (Bavarois)")
    Case 5: langue = Array("Sunntig", "Määntig", "Ziischtig", "Mittwuch", "Dunschtig", "Friitig", "Samschtig", "Allemand (Suisse)")
    Case 6: langue = Array("Sunndi", "Mandi", "Zischdi", "Mittwuch", "Dunnerschdi", "Fridi", "Sàmschdi", "Alsacien")
    Case 7: langue = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Anglais")
    Case 8: langue = Array("Domingo", "Luns", "Martes", "Miércols", "Chuebes", "Biernes", "Sabado", "Aragonais"):
    Case 9: langue = Array("Domingu", "Llunes", "Martes", "Miércols", "Xueves", "Vienres", "Sábadu", "Asturien")
    Case 10: langue = Array("Igande", "Astelehen", "Astearte", "Asteazken", "Ortzegun", "Ortziral", "Larunbat", "Basque"): t = t & " Basque"
    End Select

    If fecha = 0 And ChxLangue = 0 And NomLangue = False And Item = False And tablo = True Then
        NomJourSemaineTrip = Split("Afrikaans,Albanais,Allemand,Allemand(Bavarois),Allemand (Bavarois),Allemand (Suisse),Alsacien,Anglais,Aragonais,Asturien,Basque", ",")
        Exit Function
    End If

    On Error Resume Next  'devient alors nécessaire

    NbItems = 10  'nombre de langues répertoriées dans la fonction

    If tablo Then
        'Liste de toutes les langues figurant dans la fonction
        ReDim ListeLangues(NbItems)
        For i = 1 To NbItems
            ListeLangues(i) = langue(7)
            Err.Clear
        Next
        NomJourSemaineTrip = ListeLangues
    ElseIf items Then
        NomJourSemaineTrip = NbItems                     'nombre total de langues dans le tableau "ListeLangues"
    ElseIf NomLangue Then
        NomJourSemaineTrip = langue(7)                   'langue choisie
    Else
        NomJourSemaineTrip = langue(Weekday(fecha) - 1)  'jour de la semaine, correspondant á la date "fecha", dans la langue choisie (Option Base 0)
    End If

End Function
bien sur des lors que les argument sont optionnels tu peut appeler comme ça
VB:
Sub Essai2()
    MsgBox NomJourSemaineTrip(tablo:=True)(5)   'si ça marchait, renverrait "Allemand (Suisse)"
End Sub
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
ou bien encore en gardant ta structure en faisant un peu de menage au passage
VB:
Sub Essai()
    MsgBox NomJourSemaineTrip(, , , , True)(5)   'si ça marchait, renverrait "Allemand (Suisse)"
End Sub
Sub Essai2()
    MsgBox NomJourSemaineTrip(tablo:=True)(5)   'si ça marchait, renverrait "Allemand (Suisse)"
End Sub

Function NomJourSemaineTrip(Optional fecha As Date, Optional ChxLangue As Byte, Optional NomLangue As Boolean = False, Optional items As Boolean = False, Optional tablo As Boolean = False)
'Renvoie le jour de la semaine correspondant à une date
'- fecha : une date
'- ChxLangue : choix de la langue. Ex : 1 --> Afrikaans | 2 --> Albanais | 3 --> Allemand |...
'- NomLangue : si omis ou False --> nom du jour de la semaine dans la langue choisie
'              si True --> nom de la langue choisie
'- items : si True --> nombre d'items dans le tableau "ListeLangues"
'- tablo : si True --> renvoie la matrice "ListeLangues"

    Dim langue, ListeLangues, NbItems As Byte, i As Byte, t$, tt

    Select Case ChxLangue
    Case 1: langue = Array("Sonndag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag", "Afrikaans")
    Case 2: langue = Array("E diel", "E hënë", "E martë", "E mërkurë", "E enjte", "E premte", "E shtunë", "Albanais")
    Case 3: langue = Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Allemand")
    Case 4: langue = Array("Sonndich", "Mendich", "Denschdich", "Mittich", "Donnerschtich", "Fraidich", "Samschdich", "Allemand (Bavarois)")
    Case 5: langue = Array("Sunntig", "Määntig", "Ziischtig", "Mittwuch", "Dunschtig", "Friitig", "Samschtig", "Allemand (Suisse)")
    Case 6: langue = Array("Sunndi", "Mandi", "Zischdi", "Mittwuch", "Dunnerschdi", "Fridi", "Sàmschdi", "Alsacien")
    Case 7: langue = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Anglais")
    Case 8: langue = Array("Domingo", "Luns", "Martes", "Miércols", "Chuebes", "Biernes", "Sabado", "Aragonais"):
    Case 9: langue = Array("Domingu", "Llunes", "Martes", "Miércols", "Xueves", "Vienres", "Sábadu", "Asturien")
    Case 10: langue = Array("Igande", "Astelehen", "Astearte", "Asteazken", "Ortzegun", "Ortziral", "Larunbat", "Basque"): t = t & " Basque"
    End Select

  
    If tablo Then
        'Liste de toutes les langues figurant dans la fonction
        If fecha = 0 And ChxLangue = 0 And NomLangue = False And Item = False  Then
            ListeLangues = Split("x,Afrikaans,Albanais,Allemand,Allemand(Bavarois),Allemand (Suisse),Alsacien,Anglais,Aragonais,Asturien,Basque", ",") 'x devant base 1
            NomJourSemaineTrip = ListeLangues
        End If
    ElseIf items Then
        NomJourSemaineTrip = UBound(ListeLangues)                     'nombre total de langues dans le tableau "ListeLangues"
    ElseIf NomLangue Then
        NomJourSemaineTrip = langue(7)                   'langue choisie
    Else
        NomJourSemaineTrip = langue(Weekday(fecha) - 1)  'jour de la semaine, correspondant á la date "fecha", dans la langue choisie (Option Base 0)
    End If

End Function
 

Discussions similaires

Statistiques des forums

Discussions
293 048
Messages
1 928 125
Membres
183 854
dernier inscrit
issmaaiil54