Condition dans listbox
Fermé
Saddoud_walid
Messages postés
41
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
6 novembre 2020
-
Modifié le 6 nov. 2020 à 10:44
Saddoud_walid Messages postés 41 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 6 novembre 2020 - 6 nov. 2020 à 15:52
Saddoud_walid Messages postés 41 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 6 novembre 2020 - 6 nov. 2020 à 15:52
A voir également:
- Condition dans listbox
- Excel cellule couleur si condition texte - Guide
- Condition et excel - Guide
- Nbval avec condition ✓ - Forum Excel
- Excel copier une cellule si condition ✓ - Forum Excel
- Excel colorer une cellule sous condition d'une autre cellule ✓ - Forum Excel
3 réponses
yg_be
Messages postés
23417
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2025
Ambassadeur
1 557
6 nov. 2020 à 10:52
6 nov. 2020 à 10:52
bonjour,
peux-tu utiliser les balises de code quand tu partages du code (et préciser "basic" pour du VBA): https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je ne comprends pas ce qu'est une condition dans une listbox.
ni ce que signifie "faire une condition"
je ne comprends pas non plus la suite de ton explication.
peux-tu être plus factuel, peut-être en donnant des exemples, en faisant référence à des lignes de code et à des cellules dans les feuilles?
peux-tu utiliser les balises de code quand tu partages du code (et préciser "basic" pour du VBA): https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je ne comprends pas ce qu'est une condition dans une listbox.
ni ce que signifie "faire une condition"
je ne comprends pas non plus la suite de ton explication.
peux-tu être plus factuel, peut-être en donnant des exemples, en faisant référence à des lignes de code et à des cellules dans les feuilles?
Saddoud_walid
Messages postés
41
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
6 novembre 2020
6 nov. 2020 à 11:46
6 nov. 2020 à 11:46
salut yg_be
pour mieux comprendre vous pouvez télécharger ce ficher https://wetransfer.com/downloads/12d3f7165927d113c76d22876b1c14b620201106094232/47c62c
comme vous voyer il y a une condition sur Me.ListBox1.List(I, 4) si elle est inférieure ou supérieure a textbox2... Je veux fusionner deux valeur en double (Me.ListBox1.List(I, 3)) et avoir la somme des deux valeurs en double dans (Me.ListBox1.List(I, 4))
mon code est:
pour mieux comprendre vous pouvez télécharger ce ficher https://wetransfer.com/downloads/12d3f7165927d113c76d22876b1c14b620201106094232/47c62c
comme vous voyer il y a une condition sur Me.ListBox1.List(I, 4) si elle est inférieure ou supérieure a textbox2... Je veux fusionner deux valeur en double (Me.ListBox1.List(I, 3)) et avoir la somme des deux valeurs en double dans (Me.ListBox1.List(I, 4))
mon code est:
Set F = ActiveSheet Me.ListBox1.Clear With ListBox1 .ColumnCount = 8 .ColumnWidths = "0;30;70;100;70;70;70;0" .RowSource = "" End With Set plage = F.[b4].CurrentRegion Set plage = ActiveSheet.Range("a5:a30000") Set c = plage.Find("code", , , xlPart) If Not c Is Nothing Then I = 0 premier = c.Address Do Me.ListBox1.AddItem Me.ListBox1.List(I, 0) = c.Offset(0, 0) Me.ListBox1.List(I, 1) = c.Offset(0, 0) Me.ListBox1.List(I, 2) = c.Offset(0, 1) Me.ListBox1.List(I, 3) = c.Offset(0, 2) Me.ListBox1.List(I, 4) = c.Offset(0, 15) If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) / 2 If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) - TextBox1.Value If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = TextBox1.Value If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = c.Offset(0, 15) / 2 Me.ListBox1.List(I, 7) = c.Offset(0, 3) I = I + 1 Set c = plage.FindNext(c) Loop While Not c Is Nothing And c.Address <> premier End If
yg_be
Messages postés
23417
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2025
1 557
6 nov. 2020 à 12:08
6 nov. 2020 à 12:08
il faut choisir "basic" pour du VBA.
j'ai analysé le fichier.
je ne comprends pas ce veut dire "fusionner deux valeur en double (Me.ListBox1.List(I, 3)": où sont ces valeurs dans le classeur?
j'ai analysé le fichier.
je ne comprends pas ce veut dire "fusionner deux valeur en double (Me.ListBox1.List(I, 3)": où sont ces valeurs dans le classeur?
Saddoud_walid
Messages postés
41
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
6 novembre 2020
6 nov. 2020 à 12:15
6 nov. 2020 à 12:15
cliquer sur le bouton "Résumer" du userform et vous trouver le doublon
yg_be
Messages postés
23417
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2025
1 557
6 nov. 2020 à 12:41
6 nov. 2020 à 12:41
pour "fusionner", il faut alors, avant de faire
Me.ListBox1.AddItem, vérifier si la valeur est déjà présente dans la liste, et modifier la ligne existante, au lieu d'en ajouter une nouvelle.
Saddoud_walid
Messages postés
41
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
6 novembre 2020
>
yg_be
Messages postés
23417
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2025
6 nov. 2020 à 12:52
6 nov. 2020 à 12:52
exactement ... comment le faire :(
yg_be
Messages postés
23417
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2025
1 557
>
Saddoud_walid
Messages postés
41
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
6 novembre 2020
6 nov. 2020 à 13:51
6 nov. 2020 à 13:51
un exemple:
Option Explicit Sub tri(a(), gauc, droi, NbCol, colTri) ' Quick sort Dim ref, g, d, c, temp On Error GoTo errormessage: ref = a((gauc + droi) \ 2, colTri) g = gauc: d = droi Do Do While a(g, colTri) < ref: g = g + 1: Loop Do While ref < a(d, colTri): d = d - 1: Loop If g <= d Then For c = 0 To NbCol - 1 temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp Next g = g + 1: d = d - 1 End If Loop While g <= d If g < droi Then Call tri(a, g, droi, NbCol, colTri) If gauc < d Then Call tri(a, gauc, d, NbCol, colTri) errormessage: If Err.Number = 9 Then MsgBox "Pas de Réservations pour Imprimer" End If End Sub Private Sub CommandButton1_Click() Dim li As Integer, doublon As Boolean Dim F As Worksheet, plage As Range, c, I As Long, premier As String, NbCol, g As Long Worksheets("01").Select Set F = ActiveSheet Me.ListBox1.Clear With ListBox1 .ColumnCount = 8 .ColumnWidths = "0;30;70;100;70;70;70;0" .RowSource = "" End With Set plage = F.[b4].CurrentRegion Set plage = ActiveSheet.Range("a5:a30000") Set c = plage.Find("code", , , xlPart) If Not c Is Nothing Then I = 0 premier = c.Address Do doublon = False For li = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.List(li, 2) = CStr(c.Offset(0, 1)) Then doublon = True Exit For End If Next li If doublon Then ' ... Else Me.ListBox1.AddItem Me.ListBox1.List(I, 0) = c.Offset(0, 0) Me.ListBox1.List(I, 1) = c.Offset(0, 0) Me.ListBox1.List(I, 2) = c.Offset(0, 1) Me.ListBox1.List(I, 3) = c.Offset(0, 2) Me.ListBox1.List(I, 4) = c.Offset(0, 15) If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) / 2 If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) - TextBox1.Value If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = TextBox1.Value If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = c.Offset(0, 15) / 2 Me.ListBox1.List(I, 7) = c.Offset(0, 3) I = I + 1 End If Set c = plage.FindNext(c) Loop While Not c Is Nothing And c.Address <> premier End If Dim a() a = Me.ListBox1.List NbCol = UBound(a, 2) - LBound(a, 2) + 1 Call tri(a(), LBound(a), UBound(a), NbCol, 2) Me.ListBox1.List = a Dim m As Integer Dim j As Integer Dim V(0 To 7) As Variant With Me.ListBox1 For m = 0 To .ListCount - 1 For j = 0 To .ListCount - 1 If .Column(0, m) > .Column(0, j) And m <> j Then V(0) = .Column(0, m): .Column(0, m) = .Column(0, j): .Column(0, j) = V(0) V(1) = .Column(1, m): .Column(1, m) = .Column(1, j): .Column(1, j) = V(1) V(2) = .Column(2, m): .Column(2, m) = .Column(2, j): .Column(2, j) = V(2) V(3) = .Column(3, m): .Column(3, m) = .Column(3, j): .Column(3, j) = V(3) V(4) = .Column(4, m): .Column(4, m) = .Column(4, j): .Column(4, j) = V(4) V(5) = .Column(5, m): .Column(5, m) = .Column(5, j): .Column(5, j) = V(5) V(6) = .Column(6, m): .Column(6, m) = .Column(6, j): .Column(6, j) = V(6) V(7) = .Column(7, m): .Column(7, m) = .Column(7, j): .Column(7, j) = V(7) End If Next j Next m For m = 0 To .ListCount - 1 .Column(1, m) = m + 1 Next m End With Dim z As Single, FF As Long, k 'déclare la variable T (Total) / Type à adapter With ListBox1 'prend en compte la ListBox1 (à adapter) For FF = 0 To .ListCount - 1 'boucle sur tous les lignes de la ListBox1 z = z + .Column(4, FF) 'définit le total T (à adapter car tu parles de la colonne 7 et la c'est la "7ème" colonne) Next FF 'prochaine ligne de la boucle TextBox3.Value = FormatNumber(z, 3) 'renvoie dans la TextBox1 le total T (à adapter) End With 'fin de la prise en compte de la ListBox1 Dim d As Single 'déclare la variable T (Total) / Type à adapter With ListBox1 'prend en compte la ListBox1 (à adapter) For g = 0 To .ListCount - 1 'boucle sur tous les lignes de la ListBox1 d = d + .Column(5, g) 'définit le total T (à adapter car tu parles de la colonne 7 et la c'est la "7ème" colonne) Next g 'prochaine ligne de la boucle TextBox4.Value = FormatNumber(d, 3) 'renvoie dans la TextBox1 le total T (à adapter) End With 'fin de la prise en compte de la ListBox1 Dim h As Single 'déclare la variable T (Total) / Type à adapter With ListBox1 'prend en compte la ListBox1 (à adapter) For k = 0 To .ListCount - 1 'boucle sur tous les lignes de la ListBox1 h = h + .Column(6, k) 'définit le total T (à adapter car tu parles de la colonne 7 et la c'est la "7ème" colonne) Next k 'prochaine ligne de la boucle TextBox5.Value = FormatNumber(h, 3) 'renvoie dans la TextBox1 le total T (à adapter) End With 'fin de la prise en compte de la ListBox1 End Sub Private Sub UserForm_Initialize() TextBox1.Value = 600 TextBox2.Value = 1000 End Sub
Saddoud_walid
Messages postés
41
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
6 novembre 2020
>
yg_be
Messages postés
23417
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2025
6 nov. 2020 à 15:09
6 nov. 2020 à 15:09
merci pour votre effort mais vous avez supprimer les doublons mais le résultat qui reste n'est pas la somme de deux (ou plusieurs) valeurs (Total)
je veux avoir la somme des deux (ou plusieurs) valeurs du doublon de tel sorte que j'aurai a la fin un seul matricule avec la somme de valeurs (total )
merci encore
je veux avoir la somme des deux (ou plusieurs) valeurs du doublon de tel sorte que j'aurai a la fin un seul matricule avec la somme de valeurs (total )
merci encore
yg_be
Messages postés
23417
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2025
1 557
>
Saddoud_walid
Messages postés
41
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
6 novembre 2020
6 nov. 2020 à 15:11
6 nov. 2020 à 15:11
en effet, j'ai laissé de la place à la ligne 59 pour que tu puisses faire cette partie du travail.