XL 2010 Modifier le contenu d’un Array

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Supposons cette procédure :
VB:
Sub UnExemple(item$)
‘item ne peut être que l’un des 5 items de "listeoptions"

Dim listeoptions As Variant

listeoptions = Array("Calculatrice", "Bloc Note", "Relooking", "Image", "Help")  ‘le contenu de la liste d’une ComboBox
item = IIf(compt(7) = 1, "No " & item, item)  ‘compt(7) est un compteur (déclaré en Public) lié à un CommandButton, il ne peut prendre comme valeurs 1 ou 2
Je voudrais qu’automatiquement "listeoptions" se modifie en fonction de la valeur du paramètre "item" de la manière suivante :

Si item = "Relooking", alors :
VB:
listeoptions = Array("Calculatrice", "Bloc Note", item, "Image", "Help")
Si item = "Help", alors :
VB:
listeoptions = Array("Calculatrice", "Bloc Note", "Relooking", "Image", item)
 

Magic_Doctor

XLDnaute Barbatruc
Je viens de tenter ça en simplifiant au maximum. Ça commence à marcher, mais curieusement dans l'Array n'apparaît qu'un item sur deux.
VB:
Sub Actualiser_ComboChx(item$)
'Actualisation la liste de la ComboBox "ComboChx" après avoir sélectionné et validé l'item "Image" / "No Image"
'- item : l'item de la liste de la ComboBox "ComboChx" que l'on veut modifier

Dim listeoptions As Variant, i As Byte, NouvelItem$(5)

    listeoptions = Array("Calculatrice", "Bloc Note", "Relooking", "Image", "Help") 'liste originelle de tous items (avant modifications) de la ComboBox
   
    For i = 0 To UBound(listeoptions)
        i = i + 1
        NouvelItem(i) = IIf(item <> listeoptions(i - 1), listeoptions(i - 1), IIf(compt(7) = 1, "No " & item, item))
    Next
   
    listeoptions = Array(NouvelItem(1), NouvelItem(2), NouvelItem(3), NouvelItem(4), NouvelItem(5)) 'items de la ComboChx "ComboChx" de la feuille "Hoja1"
   
    'Pour tester sur la feuille
   
    compt(7) = 2
   
    [B16] = listeoptions(0)
    [B17] = listeoptions(1)
    [B18] = listeoptions(2)
    [B19] = listeoptions(3)
    [B20] = listeoptions(4)

End Sub
----------------------------------------------------------------------
Sub MonTest()

    Actualiser_ComboChx "Help"

End Sub
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Magic_Doctor,
Bien évidemment un item sur deux avec cette structure :
VB:
 For i = 0 To UBound(listeoptions)
        i = i + 1
        NouvelItem(i) = IIf(item <> listeoptions(i - 1), listeoptions(i - 1), IIf(compt(7) = 1, "No " & item, item))
Next
A chaque incrément de i par For ... vous incrémentez i de 1, donc ça fait 1,3,5 .... :)
Supprimez ce i=i+1.
 

Statistiques des forums

Discussions
311 721
Messages
2 081 927
Membres
101 842
dernier inscrit
seb0390