Importer des noms d'une ListBox dans Excel

Bonjour,

Je suis sous Windows 10 et Excel 2003.

J'ai créé un userform qui contient un combobox et un commandboutton et lorsque je clique sur le commandbutton, j'ai un message d'erreur.

Voici ce que j'ai fais:

Private Sub UserForm2_Initialize()

Dim ListeDéroulante As CboxPilotes

Dim vAdresseDernierPilote

vAdresseDernierPilote = Range("A20").Address.End(xlUp).Address

With CboxPilotes.ListeDéroulante

.RowSource = ("A13:") & vAdresseDernierPilote

.ListIndex = 0

End With

End Sub

Private Sub bAjout1_Click()

Dim vNouvelleCellule

vNouvelleCellule = Range("A13").End(xlDown).Offset(1, 0).Address

Range(vNouvelleCellule) = CboxPilotes.ListeDéroulante

End Sub

Merci si quelqu'un peut m'aider.

Bonjour,

Tu ne dis pas quelle est l'erreur.

Ni sur quelle ligne.

Tu ne précises pas la nature de tes éléments personnalisés : CboxPilotes, ListeDéroulante

Le code que tu fournis est probablement incomplet...

(NB- Un code indenté + utilisation de la balise code dans ton post auraient été bienvenus, moins brouillon)

Pas de fichier !

Bref, si tu fais le max pour ne pas avoir de réponse, ou pas de réponse efficace, c'est la bonne voie

Tu peux toujours supprimer un Address parasite intercalé à la 4e ligne...

A part ça...

Bonjour MFerrand,

Window 10, Excel 2003.

Je joint le fichier en pièce jointe. Je souhaiterai lorsque je clique sur le bouton (Choix Pilotes) choisir un pilote dans la liste qui s'ouvre et par un clic sur(Ajouter) qu'il s'insère dans la cellule A14 et ainsi de suite jusqu'à A21 et en parallèle, incrémenter le compteur situé en B10.

J'ai trouvé ce code sur un livre d'Excel 2003.

Merci de prendre de ton temps pour m'aider.

Je modifie légèrement ce que j'ai dit précédemment... Reprends ton livre et trouve les éléments que tu as oublié d'intégrer ou qui te sont passés inaperçus, et qui devraient permettre de définir les données manquantes (qui génèrent erreur parce qu'elles manquent dans ton fichier).

A défaut il sera plus sage de les virer pour construire simplement la procédure que tu souhaites.

Re,

J'ai suivi ton conseil et j'ai réécris le programme en relisant le livre depuis le début, mais je bute sur une ligne d'inscription que voici:

Sheets("Feuil1").Cells(14, 1).Value = Me.Constructeur.Value

Elle inscrit bien le nom du pilote en A14 mais à la validation du second nom, elle efface le premier pour mètre le suivant à sa place.

Comment modifier cette ligne pour avoir le second nom en dessous du premier et ainsi de suite...

Merci encore.

N'ayant pas lu le livre, je ne sais ce qu'est Constructeur : si on est dans le Userform, c'est sans doute le nom donné à un contrôle.

Mes déductions s'arrêtent là !

Bonjour,

Je suis sous Windows 10 Excel 2003.

De retour de vacances, je me permet de reprendre le fil de cette discussion. Comme MFerrand à supposé, c'est le nom d'un comboBox.

Par appuie sur le bouton OK, j'inscrit le nom d'un pilote dans A14, lors de la saisie d'un second pilote, je voudrai qu'il vienne s'inscrire en dessous du premier pilote donc en A15 et en suivant pour chaque ajout que j'écris au coup par coup mais je ni parviens pas. Je me permet de joindre le code que j'ai recréé parmi divers ouvrages.

C'est la ligne 40 que je ne parviens pas à modifier.

Merci encore pour votre aide.

Private Sub OK_Click()

10 ListeDeroulanteModifiable.Hide

20 Application.ScreenUpdating = False

' Constructeur est le nom donné au contrôle ComboBox

30 Marque = Constructeur.Value

' Stockage du choix effectué dans la liste déroulante en T6 qui viens s'inscrire à partir de A14

40 Range("A14").Value = Marque ' C'est sur cette ligne que je voudrais faire ma modification.

50 Columns("T:T").Select

60 On Error GoTo Ajoute

70 Selection.Find(What:=Marque, After:=ActiveCell, LookIn:=xlFormulas, _

LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _

MatchCase:=False).Activate

80 Range("T6").Select

90 Exit Sub

100 Ajoute:

' Une nouvelle marque étant ajoutée, ajout de celle-ci à la fin de la colonne T

110 Range("T6").End(xlDown).Offset(1, 0).Value = Marque

120 Range("T6").Select

End Sub

Private Sub Annuler_Click()

120 ListeDeroulanteModifiable.Hide

End Sub

bonsoir MFerrand, peponne

quand je poste un code je le sélectionne et j'appui sur le bouton "code " que l'on ne peux pas rater en écrivant une réponse

c'est écrit sur le 5ème bouton a partir de la gauche

je reprends donc ton code sans l'indenter

Private Sub OK_Click()
10 ListeDeroulanteModifiable.Hide
20 Application.ScreenUpdating = False
' Constructeur est le nom donné au contrôle ComboBox
30 Marque = Constructeur.Value

' Stockage du choix effectué dans la liste déroulante en T6 qui viens s'inscrire à partir de A14
40 Range("A14").Value = Marque ' C'est sur cette ligne que je voudrais faire ma modification.
50 Columns("T:T").Select

60 On Error GoTo Ajoute
70 Selection.Find(What:=Marque, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
80 Range("T6").Select
90 Exit Sub
100 Ajoute:
' Une nouvelle marque étant ajoutée, ajout de celle-ci à la fin de la colonne T
110 Range("T6").End(xlDown).Offset(1, 0).Value = Marque
120 Range("T6").Select
End Sub
Private Sub Annuler_Click()
120 ListeDeroulanteModifiable.Hide
End Sub

et voila il est beaucoup plus lisible du coup

après pour indenter un code j'utilise ce site http://www.vbindent.com/?indent et ce qui donne

Private Sub OK_Click()
    10 ListeDeroulanteModifiable.Hide
    20 Application.ScreenUpdating = False
' Constructeur est le nom donné au contrôle ComboBox
    30 Marque = Constructeur.Value

' Stockage du choix effectué dans la liste déroulante en T6 qui viens s'inscrire à partir de A14
    40 Range("A14").Value = Marque ' C'est sur cette ligne que je voudrais faire ma modification.
    50 Columns("T:T").Select

    60 On Error GoTo Ajoute
    70 Selection.Find(What:=Marque, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False).Activate
    80 Range("T6").Select
    90 Exit Sub
    100 Ajoute:
' Une nouvelle marque étant ajoutée, ajout de celle-ci à la fin de la colonne T
    110 Range("T6").End(xlDown).Offset(1, 0).Value = Marque
    120 Range("T6").Select
End Sub
Private Sub Annuler_Click()
    120 ListeDeroulanteModifiable.Hide
End Sub

encore plus lisible n'est ce pas et plus facile de détecter les erreurs


bonsoir Peponne

le code indenter permets de voir déja que le screenupdating ne reviens pas en fin de code car il maque

Application.ScreenUpdating = True

a mettre au-dessus de

end sub

les 2

range ("T6").select

sont superflu et mis par l'enregistreur

Re,

J'ai bien pris en compte vos remarques, et j'ai bien modifié les lignes comme conseillé mais je ne parviens toujours pas à mètre les pilotes les un au dessous des autres. Quelqu'un pourrait m'aider svp.

Cordialement

bonjour Peponne31

et est ce que comme ceci ça ira

Private Sub bAjout1_Click()
    Dim lig As Integer
    UserForm1.Hide
    With Sheets("feuil3")
        Application.ScreenUpdating = False
' Constructeur est le nom donné au contrôle ComboBox
        Marque = CBx_conxtructeur.Value

' Stockage du choix effectué dans la liste déroulante en T6 qui viens s'inscrire à partir de A14
        lig = .Range("A" & .Rows.Count).End(xlUp)(2).Row
        If lig < 14 Then lig = 14
        Range("A" & lig) = Marque ' C'est sur cette ligne que je voudrais faire ma modification.
'Range("A14").Value

        .Columns("T:T").Select

        On Error GoTo Ajoute
        Selection.Find(What:=Marque, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
'Range("T6").Select
        Exit Sub
        Ajoute:
' Une nouvelle marque étant ajoutée, ajout de celle-ci à la fin de la colonne T

        .Range("T6").End(xlDown).Offset(1, 0).Value = Marque
'Range("T6").Select
        Application.ScreenUpdating = True
    End With
End Sub

dans ton code l'userform1 se nomme listedéroulante et donne un bug du a ce nom, pareil pour ta combobox

Bonjour,

Il serait préférable de définir ton propre modèle de ce que tu veux faire ! Tu serais peut-être plus à même d'expliquer ce que tu veux obtenir, plutôt que d'essayer d'adapter une construction dont tu ne maîtrises pas les éléments...

Cordialement.

Bonjour MFerrand,

Je vais être Team Manager d'une équipe de 8 pilotes de Karting, je voudrais faire un tableau qui comporterai une liste définie de pasage des pilotes, un autre tableau avec temps de repos par pilote (avec compteur temps qui décompte à partir de 3h cellule verte de 3h à 3h10 cellule orange et de 3h10 à 3h 15 cellule rouge avec Bip). Je voudrai reprendre le principe de fonctionement du temps de repos des pilotes pour faire un décompte sur le même principe mais en décomptemps à partir de 2h15mn.

PS: Le code que ma envoyé grisan29 fonctionne bien si je n'ai rien en dessous de A21, est-il possible de le modifier pour qu'il ne prenne en compte que les cellules de A14:A21, me laissent le champ libre pour y inserrer un second tableau pour le temps de repos ?

Cordialement

Rechercher des sujets similaires à "importer noms listbox"