Supprimer des lignes dans une listBox
Bonjour,
Je me permet de venir demander de l'aide car j'ai un petit problème avec un code pour une ListBox ...
Je vous expose le problème :
- Je remplis la listbox avec ce code
If Sheets("Conf_Controle").Range("A2").Value = "X" Then
For Each Cel In Sheets("Historiques").Range("A3:A" & Sheets("Historiques").Range("A" & Rows.Count).End(xlUp).Row)
If Cel.Offset(0, 15).Value = "1" And Cel.Offset(0, 0).Value = UserForm_Auth.ComboBox_NumInterne.Value Then
UserForm_Auth.ListBox1.AddItem
UserForm_Auth.ListBox1.List(I, 0) = Cel.Offset(0, 62).Value
UserForm_Auth.ListBox1.List(I, 1) = Cel.Offset(0, 2).Value
UserForm_Auth.ListBox1.List(I, 2) = Cel.Offset(0, 3).Value
UserForm_Auth.ListBox1.List(I, 3) = Cel.Offset(0, 6).Value
UserForm_Auth.ListBox1.List(I, 4) = Cel.Offset(0, 7).Value
UserForm_Auth.ListBox1.List(I, 5) = Cel.Offset(0, 8).Value
UserForm_Auth.ListBox1.List(I, 6) = Cel.Offset(0, 10).Value
UserForm_Auth.ListBox1.List(I, 7) = Cel.Offset(0, 11).Value
UserForm_Auth.ListBox1.List(I, 8) = Cel.Offset(0, 13).Value
UserForm_Auth.ListBox1.List(I, 9) = Cel.Offset(0, 14).Value
I = I + 1
Controle01 = "1"
End If
Jusqu'à la pas de problème cela remplis bien mes colonnes mais j'aimerais que si il trouve dans une colonne bien spécifique une certaine phrase bah il me supprime des lignes suivant une variable :
Exemple I= 5 il me supprime les 5 dernières lignes dans ma listBox.
J'ai le début mais entre if et end If .... rien
If Cel.Offset(0, 3).Value = "Suppression contrôle 1" And Controle01 = "1" Then
End If
J'aimerais bien vous faire un exemple mais il me serais nécessaire de faire une jolie base de données assez complexe.
Bonjour,
Après plusieurs recherches je trouve toujours aucune solution je vous joins un fichier exemple avec quelques explications :
1) On clique sur le Bouton1 de la feuille un Userform va être lancer
2) On appuis sur Générer le contenue de la listBox va être généré
Ce que je souhaite c'est dans mon exemple fourni c'est sans passer par la fonction CLEAR de listbox c'est supprimer les 13 premières lignes dans ce sens-là :
- On remplis notre ListBox
Lorsque dans Type nous avons " Suppression Cont 1" on supprime les 4 premières lignes
On remplit notre ListBox
On retombe sur un "Suppression Cont 1" on supprime les 7 Lignes
On remplit notre Listbox
Pourquoi j'utilise pas CLEAR c'est simple ici nous avons 1 contrôle mais demain dans mon fichier il y aura plusieurs contrôles et la génération va être faite grâce à un Combobox via les Numéros.
Je vous remercie pour les réponses que vous pourrez m'apporter.
Salut Antho49000,
tu dis qu'il y aura plusieurs contrôles à démêler : comment reconnaît-on le contrôle concerné?
Je vois des n° différents pour un (même?) contrôle en colonne A.
Pour que nous soyons certains de bien comprendre ce que tu veux, ce serait chouette que tu mettes sur ta même Feuil1 en colones H,I... le résultat de ce que tu attends!
A+
Bonjour,
Alors je vais expliquer un peu mon fichier car effectivement j'ai du mal m'exprimer sur le sujet
Mon fichier est un fichier de suivi de contrôle technique, de Dekra etc ... avec des alertes ( c'est pour cela que je disais des contrôles ) .
Et ceci est la phase de l'historique des différents contrôles effectuer sur les véhicules :
Colonne A ==> N° du véhicule
Colonne B ==> L'utilisateur
Colonne C ==> Le type d'historique
[*]Suppression Cont 1 ... ==> la personne à supprimer le contrôle ( exemple il a changé le nom du contrôle technique en contrôle véhicule
[*] Modif ==> L'utilisateur a changer les dates par exemple
Colonne D,E,F ==> [ Contrôle 1 ] date du contrôle, date du prochain , Si le contrôle est valide
Je remet un fichier avec beaucoup plus d'explication en PJ
Merci beaucoup pour les réponses que vous pourrez m'apporter
Salut Antho49000,
voici ton fichier, à tester en situation réelle...
Le petit bouton rouge appelle l'USF et fait le ménage dans la foulée!
Private Sub UserForm_Activate()
'
iCol = Cells(1, Columns.Count).End(xlToLeft).Column
nbCtrl = (iCol - 1) / 3
iIdx = -1
'
For x = 1 To nbCtrl
iCol = 3 + (x * 3)
sFlag = "---Test" & x & "---'"
iRow = Cells(Rows.Count, iCol).End(xlUp).Row
'
iStart = 0
For y = 2 To iRow
If LCase(Cells(y, iCol)) = "x" And iStart = 0 Then iStart = y
If Cells(y, 3) = "Suppression Cont " & x Then iStart = 0
Next
If iStart > 0 Then
iIdx = iIdx + 1
Me.lstCtrl.AddItem
Me.lstCtrl.List(iIdx, 0) = sFlag
For Z = iStart To iRow
If LCase(Cells(Z, iCol)) = "x" Then
iIdx = iIdx + 1
Me.lstCtrl.AddItem
Me.lstCtrl.List(iIdx, 0) = Cells(Z, 1)
Me.lstCtrl.List(iIdx, 1) = Cells(Z, 2)
Me.lstCtrl.List(iIdx, 2) = Cells(Z, 3)
Me.lstCtrl.List(iIdx, 3) = Cells(Z, iCol - 2)
Me.lstCtrl.List(iIdx, 4) = Cells(Z, iCol - 1)
End If
Next
End If
Next
'
End Sub
A+
Merci beaucoup !!!!
Je n'ai pas mis le même script dans mon fichier final ( car beaucoup plus complexe que celui que j'ai envoyer ), mais je me suis inspiré de la réponse de curulis57 et cela me permet de faire ce que je désire et même plus
Merci beaucoup curulis57