Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Modifier le contenu d’un Array

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,

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)
 
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:
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.
 
Bonjour Sylvanu,

Et oui, Il était tard...
Ça marche bien comme ça :
VB:
    For i = 1 To UBound(listeoptions) + 1
        NouvelItem(i) = IIf(item <> listeoptions(i - 1), listeoptions(i - 1), IIf(compt(7) = 1, "No " & item, item))
    Next
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…