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

XL 2010 Connaître la position d’un item dans un Array

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J’ai une ComboBox avec sa liste d’items. Quand je choisis un item dans la liste je dois alors le valider avec un ComboBox et quelque chose se passe.

Il se trouve que dans cette liste d’items il y en a un (à la 4ème position) qui s’intitule "Image". Quand je le valide, cet item devient (dans la liste de la ComboBox) "No Image", et si je revalide, il redevient "Image". Bref, ça marche très bien.

Pour peaufiner la macro qui gère tout ça, plutôt que d’écrire, pour que cet item soit toujours sélectionné :
VB:
Sheets("Hoja1").ComboChx.ListIndex = 3  ‘nous sommes en Base 0
Je voudrais automatiquement récupérer la position de cet item dans la liste. Voilà comment je m’y suis pris, mais ça ne marche pas :
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

Application.ScreenUpdating = False

Dim dico As Object, listeoptions As Variant, i%, NewItem$

    Set dico = CreateObject("Scripting.Dictionary")
   
    If item = "Image" Then
        Compteurs 7, 2 '--> compt(7) compteur associé au CommandButton qui valide l'item "Image" / "No Image"
   
        ActiveSheet.Shapes("LatLong").Visible = IIf(compt(7) = 1, True, False) 'une image qui apparaît ou pas

        NewItem = IIf(compt(7) = 1, "No Image", "Image")
        listeoptions = Array("Calculatrice", "Bloc Note", "Relooking", NewItem, "Help") 'items de la ComboChx "ComboChx" de la feuille "Hoja1"
        For i = 0 To UBound(listeoptions) 'rempli le dictionnaire ("dico") avec les éléments de la matrice "listeoptions" (Option Base 0)
            dico(listeoptions(i)) = ""
        Next
        Sheets("Hoja1").ComboChx.List = dico.keys    'dresse la liste de la ComboBox "ComboChx" à partir du dictionnaire
       
        '***************** NE MARCHE PAS *****************
        'For i = -1 To UBound(listeoptions)
        '    i = i + 1
        '    If listeoptions(i) = NewItem Then Exit For
        'Next
        '*************************************************

        Sheets("Hoja1").ComboChx.ListIndex = 3 'sélection du 4ème item ("Image" / "No Image") de la liste de la ComboBox "ComboChx"
       
        '***************** NE MARCHE PAS *****************
        'Sheets("Hoja1").ComboChx.ListIndex = i 'sélection du 3ème item (Image / No Image) de la liste de la ComboBox "ComboChx"
        '*************************************************
                                                                               
    End If

[C2500].Select: Application.ScreenUpdating = True

End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…