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
| Sub Demo1()
'Chaque tableau font la même taille et chaque position d'éléments de la liste à une correspondance sur la même postion des autres tableaux (1 dimension)
'Par défaut un tableau commence à l'indice 0 - donc si on à 5 valeurs dans le tableau les indices seront 0, 1, 2, 3 et 4
Position = Array(1, 2, 3, 4, 5) 'Tableau 1 dimension juste pour illustrer la position des valeurs dans les tableaux Liste, Correspondance, Couleur et Num_Couleur
Liste = Array("RTT (RM)", "ABSENT", "CONGES", "MALADIE (Journée)", "JOURS EXCEPTIONNELS") 'Tableau représentant la liste à sélectionner => 5 valeurs
Correspondance = Array("RTT", "ABS", "CP", "MALADIE", "CP Excep") 'Tableau représentant ici la correspondance à un éléments de la liste qui a été sélectionné => 5 valeurs
'Chaque valeurs
Couleur = Array("Vert", "Rouge", "Orange", "Marron", "Jaune") 'Tableau représentant ici la couleur à un éléments de la liste qui a été sélectionné => 5 valeurs => juste pour illustrer
Num_Couleur = Array(1, 2, 3, 4, 5) 'Tableau représentant ici la valeur de la couleur à un éléments de la liste qui a été sélectionné => 5 valeurs => pour utilisation de Interior.Color ou Interior.ColorIndex
'On pourrait aussi faire un tableau pour avoir une correspondance sur la couleur de la typo/font
For i = LBound(Position) To UBound(Position)
'LBound Renvoie le plus petit indice disponible pour la dimension indiquée du tableau - ici 0 => 1er élémént
'UBound Renvoie l'indice le plus élevé disponible pour la dimension indiquée du tableau - ici 4
MsgBox "Pour la position " & i & " du tableau nous avons : " & Liste(i) & vbCrLf & _ 'dans la boucle on récupère chaque valeur de i : i commençant à 0 finissant à 4 - cf explication plus haut
" - en position (dans l'ordre des éléments) : " & Position(i) & vbCrLf & _ 'En indiquant i dans chaque tableau on a une correspondance à chaque éléments de la liste pour chaque tableau
" - de correspondance : " & Correspondance(i) & vbCrLf & _ '
ainsi que sa position, sa correspondance, sa couleur (pour illuster) et la valeur de la couleur
" - de couleur : " & Couleur(i) & vbCrLf & " - N° de couleur : " & Num_Couleur(i)
Next
MsgBox "Donc si on Match pour CONGES, on aura sa position" & vbCrLf & _
"(contrairement au tableau on aura une valeur de 1 à 5 : le nb d'éléments) => MaPosition -1 pour Match dans le tableau"
MonCONGES = "CONGES" 'MonCONGES pourrait être Target si on le remplace dans la procédure adéquat
MaPosition = Application.Match(MonCONGES, Liste, 0) 'Match est équivalent dans une formule excel par exemple : =EQUIV(41;B2:B5;0) Position de 41 dans la plage B2:B5 (4)
MsgBox "La Valeur de MaPosition est : " & MaPosition
'Donc on cherche la position de la valeur sélectionné dans la liste - dans l'exemple j'ai simulé que c'était "CONGES" qui était sélectionné
MsgBox "Pour la position " & MaPosition - 1 & " nous avons : " & Liste(MaPosition - 1) & vbCrLf & " - de correspondance : " & Correspondance(MaPosition - 1) & vbCrLf & _ 'le résultat dans un MsgBox
" - de couleur : " & Couleur(MaPosition - 1) & vbCrLf & " - N° de couleur : " & Num_Couleur(MaPosition - 1)
MsgBox "Maintenant on va vérifier si un éléments de la liste exsite"
If Not IsError(MaPosition) Then 'ici donc pour remplacer par exemple "If Target = "AT (Journée)" Then
" on vérifié la valeur "MaPosition" dans Application.Match
MsgBox "L'éléments de la liste " & Liste(MaPosition - 1) & " existe," & vbCrLf & _ 'ce qui nous donnera toutes les valeurs voulus (en restant sur l'exemple "If Target = "AT (Journée)")
"je peux donc renvoyer la valeur de MaPosiotion -1 sur les autres tableaux pour récupérer " & vbCrLf & _ 'dans ton code tu as : "AT" et ".Color = vbMagenta" , etc
"la correspondance, la couleur ou le chiffre correspondant à la couleur" 'donc à partir de ce principe avec 4 lignes de code tu génères automatiquement l'ensemble des cas selon la valeur sélectionnée de ta liste
End If
End Sub |
Partager