Remplir un ComboBox

Bonjour à tous,

je suis en train de préparer mon projet en VBA et je reste bloquée car je n'arrive pas à remplir mon userform comme je souhaite.

Il s'agit d'une partie concernant attribution d'une véhicule à un employé, et transmission des données dans une feuille "Véhicule" dans le userform selon le véhicule sélectionner dans la liste déroulante.

Serait-il possible de m'aider s'il vous plait?

Je vous remercie d'avance de votre aide.

Bonjour,

Sur quoi donc bloques-tu ? Il n'y a rien !

A tout hasard :

    Listvehicule.List = [Tableau2].Columns(1).Value
    Dim Tablo(), i%
    With [Tableau23]
        ReDim Tablo(1 To .Rows.Count)
        For i = 1 To .Rows.Count
            Tablo(i) = .Cells(i, 2) & " " & .Cells(i, 3)
        Next i
    End With
    Listattribution.List = Tablo

Ah

Je suis vraiment désolée, je me suis trompée de fichier.

Voilà le vrai.

Si on ne t'a pas encore expliqué que s'agissant des procédures d'évènements, et les procédures d'évènements des contrôles d'un Userform en sont !, on évite d'écrire la déclaration de procédure, pour laisser VBA le faire sans erreur, il est temps !!!

Tu aurais donc pu te rendre compte que ton Initialize n'est pas reconnue comme telle ! (indice : aucune initiale ne se mettait en majuscule ! c'était au moins une raison de vérifier... !)

Cela ne modifie pas mes conseils précédents là où la config. n'a pas été modifiée :

Private Sub UserForm_Initialize()
    Dim i As Integer, Tablo()
    Typevehicule.List = Array("Véhicule de tourisme", "Scooter frigorifique", "camion frigorifique")
    Listvehicules.List = [Tableau3].Value
    With [Tableau23]
        ReDim Tablo(1 To .Rows.Count)
        For i = 1 To .Rows.Count
            Tablo(i) = .Cells(i, 2) & " " & .Cells(i, 3)
        Next i
    End With
    Listattribution.List = Tablo
End Sub

Dans le détail des suppressions :

Dim j As Long Ceci est inutile, une variable suffit pour ce type d'utilisation, même si on a à l'utiliser plusieurs fois, ce sera dans des conditions ne nécessitant aucune conservation de valeur antérieure durant le déroulement de la procédure. De plus, je ne te vois pas partie pour dépasser 32767 lignes... donc le type Long n'est pas justifié !

Typevehicule.ColumnCount = 1 Ceci est absurde, la valeur par défaut de la propriété est déjà 1 ! Et si tu devais mettre une autre valeur, cela se modifie dans la fenêtre de Propriétés. Cela n'a d'intérêt à être fixé lors de l'initialisation que si tu as plusieurs cas optionnels conduisant à des initialisations différentes : alors une valeur est mise par défaut "en dur" et si on initialise pour un autre cas, là on la modifie en fonction du cas...

For i = 1 To 11

Next i Ceci est également absurde ! Les TextBox sont visibles par défaut... à moins que tu ne t'amuses à mettre la propriété Visible à False par défaut pour le plaisir de la réinitialiser à True !!!

Set onglet = Sheets("Véhicules") Ceci est inadéquat, de même que la déclaration de variable correspondante. Du moins peu performant. Pourquoi mettre des Tableaux Excel pour ne pas les utiliser ! Il induisent quelques contraintes mais apportent aussi une contrepartie : nommés automatiquement par Excel, le nom est utilisable par VBA. Comme de plus on aura à servir ces tableaux, il sera plus facile d'y accéder directement que de passer par la feuille...

Je répète aussi qu'il est impératif qu'un tableau Excel ne comporte aucune ligne vide !

Je n'ai pas regardé le reste, mais tes énumérations là où une boucle serait plus agréable, ne serait-ce qu'à regarder... !

Et aussi, une indentation correcte implique un retrait par rapport à la marge de l'alignement de base, sauf pour les déclarations de procédures (Sub et End Sub ou équivalents) et les étiquettes de branchements (que VBA met d'ailleurs automatiquement à la marge) ; j'admets une variante pratiquée par certains de mettre les déclarations de variables à la marge en tête de procédure, mais au-delà, cela masquerait les étiquettes de branchements lorsqu'il y en a...

Cordialement.

NB- Il me paraît curieux que ta liste de véhicules ne comporte que des numéros, et que tu puisses te débrouiller avec ça seulement...

Rechercher des sujets similaires à "remplir combobox"