Excel adaptation de code
Résolu/Fermé
ced3c
Messages postés
237
Date d'inscription
samedi 19 juillet 2008
Statut
Membre
Dernière intervention
28 mai 2016
-
Modifié par pijaku le 15/10/2014 à 10:50
ced3c Messages postés 237 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 28 mai 2016 - 15 oct. 2014 à 15:06
ced3c Messages postés 237 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 28 mai 2016 - 15 oct. 2014 à 15:06
A voir également:
- Excel adaptation de code
- Liste déroulante excel - Guide
- Code ascii de a - Guide
- Si et excel - Guide
- Code puk bloqué - Guide
- Aller à la ligne excel - Guide
5 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
15 oct. 2014 à 10:59
15 oct. 2014 à 10:59
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
ced3c
Messages postés
237
Date d'inscription
samedi 19 juillet 2008
Statut
Membre
Dernière intervention
28 mai 2016
5
15 oct. 2014 à 11:33
15 oct. 2014 à 11:33
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
15 oct. 2014 à 12:32
15 oct. 2014 à 12:32
Peux tu refaire passer ton fichier?
ced3c
Messages postés
237
Date d'inscription
samedi 19 juillet 2008
Statut
Membre
Dernière intervention
28 mai 2016
5
15 oct. 2014 à 13:00
15 oct. 2014 à 13:00
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
15 oct. 2014 à 13:44
15 oct. 2014 à 13:44
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
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
15 oct. 2014 à 13:27
15 oct. 2014 à 13:27
Bonjour a vous deux,
listbox: 10 colonnes maxi de 0 a 9
bye
listbox: 10 colonnes maxi de 0 a 9
bye
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
15 oct. 2014 à 13:50
15 oct. 2014 à 13:50
Salut,
Excuse moi je n'avais pas vu ta réponse...
En effet, 10 colonnes maxi de 0 a 9 !
J'ai du me gratter la tête et google pour trouver ça et une solution...
Excuse moi je n'avais pas vu ta réponse...
En effet, 10 colonnes maxi de 0 a 9 !
J'ai du me gratter la tête et google pour trouver ça et une solution...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ced3c
Messages postés
237
Date d'inscription
samedi 19 juillet 2008
Statut
Membre
Dernière intervention
28 mai 2016
5
15 oct. 2014 à 15:06
15 oct. 2014 à 15:06
Encore un grand merci pijaku et f894009
Merci d'avoir prie le temps de m'aider pijaku, je n'aurai pas trouvé comment adapté de cette façon.
Tout marche a merveille :)
Merci d'avoir prie le temps de m'aider pijaku, je n'aurai pas trouvé comment adapté de cette façon.
Tout marche a merveille :)