Excel adaptation de code
Résolu
ced3c
Messages postés
237
Date d'inscription
Statut
Membre
Dernière intervention
-
ced3c Messages postés 237 Date d'inscription Statut Membre Dernière intervention -
ced3c Messages postés 237 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Excel adaptation de code
- Code ascii - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
5 réponses
Bonjour,
Puisqu'il est question de moi...
1- pas de monsieur stp...
2- Tu as mal adapté!
Le nombre de colonnes de ta listbox doit être défini à l'initialisation de ton Userform. Donc dans la procédure UserForm_Initialize.
Tu dis vouloir 15 colonnes, mais tu n'en met que 5 (ça va marcher beaucoup moins bien ...) :
Alors :
Remplissage de la combobox
Affichage dans la listbox sur combobox_change
Puisqu'il est question de moi...
1- pas de monsieur stp...
2- Tu as mal adapté!
Le nombre de colonnes de ta listbox doit être défini à l'initialisation de ton Userform. Donc dans la procédure UserForm_Initialize.
Tu dis vouloir 15 colonnes, mais tu n'en met que 5 (ça va marcher beaucoup moins bien ...) :
ListBox_remise.ColumnCount = 5 ListBox_remise.ColumnWidths = "100;100;100;100;100"
Alors :
Remplissage de la combobox
Private Sub UserForm_Initialize() With Sheets("Cheques") For j = 3 To .Range("B" & Rows.Count).End(xlUp).Row CB_cherche_remise = .Range("E" & j) '...et filtre les doublons If CB_cherche_remise.ListIndex = -1 Then CB_cherche_remise.AddItem .Range("E" & j) Next j End With 'HUM HUM !!! ICI With ListBox_remise .ColumnCount = 15 '15 COLONNES!!!! .ColumnWidths = "40;40;40;40;40;40;40;40;40;40;40;40;40;40;40" End With End Sub
Affichage dans la listbox sur combobox_change
Private Sub CB_cherche_remise_Change() Dim Col As Byte Dim Lign As Long, DrLig As Long If CB_cherche_remise = "" Then Exit Sub ListBox_remise.Clear With Sheets("Cheques") DrLig = .Range("A" & Rows.Count).End(xlUp).Row For Lign = 1 To DrLig If .Cells(Lign, 5) = CB_cherche_remise Then ListBox_remise.AddItem .Cells(Lign, 1) For Col = 1 To 14 ListBox_remise.List(ListBox_remise.ListCount - 1, Col) = .Cells(Lign, Col + 1) Next Col End If Next Lign End With 'format euro sur colonne montant For i = 0 To ListBox_remise.ListCount - 1 ListBox_remise.List(i, 2) = Format(ListBox_remise.List(i, 2), "0.00 €") Next i End Sub
Oui en effet je me suis "légèrement" trompé ^^ (me tape sur la caboche)
Rectifications faites
Néanmoins l'erreur persiste et elle me colore la ligne lors du débogage
toujours avec le même message d'erreur
Rectifications faites
Néanmoins l'erreur persiste et elle me colore la ligne lors du débogage
ListBox_remise.List(ListBox_remise.ListCount - 1, Col) = .Cells(Lign, Col + 1)
toujours avec le même message d'erreur
Le voici
Le code est dans l'userform Usf_cherche_remise
par activation du userform via la feuille data, il faut passer par le bouton rechercher un numéro de remise dans l'onglet "remise de chèques".
https://www.cjoint.com/?0Jpndavy630
Merci encore une fois de m'aider
Le code est dans l'userform Usf_cherche_remise
par activation du userform via la feuille data, il faut passer par le bouton rechercher un numéro de remise dans l'onglet "remise de chèques".
https://www.cjoint.com/?0Jpndavy630
Merci encore une fois de m'aider
Bon il y avait deux problèmes :
- la listbox se modifiait à chaque changement de ligne de la combobox lors du chargement
=> résolu par l'ajout d'une variable booléenne
- on ne peut pas modifier plus de 10 colonnes par la propriété List d'une ListBox...
Du moins pas comme je te l'ai montré...
Il a fallut ruser, mais ceci semble fonctionner.
Code complet de ton UserForm :
- la listbox se modifiait à chaque changement de ligne de la combobox lors du chargement
=> résolu par l'ajout d'une variable booléenne
- on ne peut pas modifier plus de 10 colonnes par la propriété List d'une ListBox...
Du moins pas comme je te l'ai montré...
Il a fallut ruser, mais ceci semble fonctionner.
Code complet de ton UserForm :
Dim LaComboChange As Boolean Private Sub CB_cherche_remise_Change() 'Dim Col As Byte Dim mesDonnees(), k As Long, Liste '() Dim Lign As Long, DrLig As Long, maLigne As Long If CB_cherche_remise = "" Or LaComboChange = True Then Exit Sub ListBox_remise.Clear With Sheets("Cheques") DrLig = .Range("A" & Rows.Count).End(xlUp).Row For Lign = 1 To DrLig If .Cells(Lign, 5) = CB_cherche_remise Then k = k + 1 maLigne = Lign ReDim Preserve mesDonnees(1 To 15, 1 To k) 'ListBox_remise.AddItem .Cells(Lign, 1) For Col = 1 To 15 'ListBox_remise.List(ListBox_remise.ListCount - 1, Col) = .Cells(Lign, Col + 1) mesDonnees(Col, k) = .Cells(Lign, Col) Next Col End If Next Lign If UBound(mesDonnees, 2) = 1 Then Liste = .Range("A" & maLigne & ":O" & maLigne) ListBox_remise.List = Liste ListBox_remise.List(0, 2) = Format(ListBox_remise.List(0, 2), "0.00 €") Else Liste = Application.Transpose(mesDonnees) ListBox_remise.List = Liste 'format euro sur colonne montant For i = 0 To ListBox_remise.ListCount - 1 ListBox_remise.List(i, 2) = Format(ListBox_remise.List(i, 2), "0.00 €") Next i End If End With End Sub Private Sub UserForm_Initialize() LaComboChange = True With Sheets("Cheques") For j = 3 To .Range("B" & Rows.Count).End(xlUp).Row CB_cherche_remise = .Range("E" & j) '...et filtre les doublons If CB_cherche_remise.ListIndex = -1 Then CB_cherche_remise.AddItem .Range("E" & j) Next j End With LaComboChange = False With ListBox_remise .ColumnCount = 15 .ColumnWidths = "40;40;40;40;40;40;40;40;40;40;40;40;40;40;40" End With End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question