Coloriser une ligne sélectionnée dans une listbox

Bonjour,

ci joint un programme qui va me permettre d'organiser mon tournoi de Judo.

122judo-v03.xlsm (82.66 Ko)

les feuilles "villes" sont les feuilles des clubs de judo qui viendront

la feuille "liste globale" : résultat d'une macro qui aura récupérée chaque judoka de chaque club et qui les classe par ville, club, genre et poids

un user form sous forme de listbox qui me permet d'afficher uniquement : par exemple les filles nées en 2005

un bouton qui permet de créer la poule (de combat), une case qui me permetde n'afficher que les Filles ou Garçon, et une autre pour les dates de naissances.

Donc voilà tout ça c'est fait et ça marche (si si je vous jure), bon faut pas trop regarder le code (je n'y comprends pas grand chose et je me suis servi de bouts de programmes trouvé dans votre forum pour faire faire à excel ce que je voulais ou à peu près)

Maintenant dans ma listbox j'ai par exemple 12 personnes quand je clique une ligne il la met directement dans la feuille de poule et j'aimerai que soit il me colorise la ligne dans la listbox pour pas que je la reselectionne, soit il la supprime de la listbox : et là je sèche grave !!!! j'ai donc besoin de votre aide.

Private Sub ListBox1_Click() 'au clic dans la ListBox1
Dim LI As Long 'définit la variable LI (LIgne)

LI = Me.ListBox1.Column(0, Me.ListBox1.ListIndex) 'définit la ligne LI (récupérée dans la colonne 0 Masquée de la ListBox1)
O.Range("A" & LI & ":D" & LI).Copy
RR.Range("B" & iEcr & ":E" & iEcr).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
iEcr = iEcr + 1
'mettre une couleur sur la ligne selectionnée dans la listbox
'O.Range("A" & LI & ":D" & LI).Interior.ColorIndex = 6
'supprime la ligne selectionnée de la listbox
'O.Range("A" & LI & ":D" & LI).Delete
End Sub

J'ai trouvé ça mais ça me génère une erreur

si je mets on error resume next il me copie deux lignes dans mon tableau résultat et il en supprime une

est ce qu'il serait possible de juste coloriser la ligne cliquée ?

Private Sub ListBox1_Click() 'au clic dans la ListBox1
Dim LI As Long 'définit la variable LI (LIgne)
Dim j As Long
LI = Me.ListBox1.Column(0, Me.ListBox1.ListIndex) 'définit la ligne LI (récupérée dans la colonne 0 Masquée de la ListBox1)
O.Range("A" & LI & ":D" & LI).Copy
RR.Range("B" & iEcr & ":E" & iEcr).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
iEcr = iEcr + 1
'mettre une couleur sur la ligne selectionnée dans la listbox
'O.Range("A" & LI & ":D" & LI).Interior.ColorIndex = 6
'Me.ListBox1.Column(0, Me.ListBox1.ListIndex).ColorIndex = 6
For j = ListBox1.ListCount - 1 To 0 Step -1
    On Error Resume Next
    If ListBox1.Selected(j) = True Then
    'on Supprime l'élément selectionné dans la ListBox.
    'ListBox1.RemoveItem (j)
    ListBox1.Interior.ColorIndex = 6
    End If
Next j

End Sub

Bonjour,

    With Me.ListBox1
        .RemoveItem .ListIndex
    End With

NB- Dommage de ne pas pas récrire le code issu d'enregistrement pour l'épurer un peu ! (Select ! Paramètres par défaut ! Et même le copier-coller gagnerait à être remplacé par une méthode VBA...)

Cordialement.

Merci Mr Ferrand,

à 100% d'accord avec toi, j'avais commencé le projet il y a plus d'un an, je l'ai laissé tomber en me disant que j'avais le temps. et .....

Le tournoi à lieu ce Dimanche donc oui je vais faire en sorte de l'aboutir un peu plus pour l'année prochaine et pour le diffuser aux autres clubs voisins mais là je suis un peu pressé par le temps.

Merci dans tous les cas je vais essayer ta modif de suite.


Re,

Désolé mais àa me fait pareil il me copie les deux lignes et en supprime une

je pense que quand je clique sur une ligne il la sélectionne, la copie, la supprime et sélectionne celle d’après et la copie également.

il faudrait peut etre dire à la listbox de lacher le bouton select de ma souris (^_^)

Private Sub ListBox1_Click() 'au clic dans la ListBox1
Dim LI As Long 'définit la variable LI (LIgne)
Dim j As Long
LI = Me.ListBox1.Column(0, Me.ListBox1.ListIndex) 'définit la ligne LI (récupérée dans la colonne 0 Masquée de la ListBox1)
O.Range("A" & LI & ":D" & LI).Copy
RR.Range("B" & iEcr & ":E" & iEcr).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
iEcr = iEcr + 1
For j = ListBox1.ListCount - 1 To 0 Step -1
    On Error Resume Next
    If ListBox1.Selected(j) = True Then
        With Me.ListBox1
            .RemoveItem .ListIndex
        End With
    End If
Next
End Sub

C'est que ta boucle n'a pas de raison d'être !

On utilise Selected en cas de multisélection (et ListIndex n'est plus utilisable dans ce cas, n'a plus la même signification...)

Tu n'as qu'un seul élément sélectionné que tu copies dans ta plage... c'est cet élément là qui est à supprimer !

il supprime la ligne puis il me met

Erreur d'éxecution '-2147467259(80004005)':

erreur non repertoriée

et si je remet mon on error resume next

il me copie deux lignes

Private Sub ListBox1_Click() 'au clic dans la ListBox1
Dim LI As Long 'définit la variable LI (LIgne)
Dim j As Long
LI = Me.ListBox1.Column(0, Me.ListBox1.ListIndex) 'définit la ligne LI (récupérée dans la colonne 0 Masquée de la ListBox1)
O.Range("A" & LI & ":D" & LI).Copy
RR.Range("B" & iEcr & ":E" & iEcr).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
iEcr = iEcr + 1
With Me.ListBox1
    .RemoveItem .ListIndex
End With
End Sub

J'ai vu... L'évènement se déclenche une 2e fois à la suppression ! Ça me paraît pas logique, et c'est pas spécifié dans l'Aide, mais c'est le cas. Je regarde comment on peut contourner...

Merci encore,

et pour ne pas t’embêter un simple changement de couleur suffirait

mais je ne réussis pas j'ai essayé en rendant invisible la ligne mais il me rend invisible la liste complète

backcolour non plus, je pense que je vais trouver mais je suis stréssé car l'échéance s'approche à grand pas....

donc va au plus simple je reviendrai vers toi si ça ne te dérange pas quand j'aurai épuré mon soft pour que tu valides les modifs.

Tu ne peux pas colorer une ligne dans un contrôle...

Mais j'ai trouvé... Puisque tu as déclaré une variable j on va l'utiliser :

    j = Me.ListBox1.ListIndex
    LI = Me.ListBox1.Column(0, j)
    '... suit ta copie... puis
    With Me.ListBox1
        .ListIndex = -1
        .RemoveItem j
    End With

Toppissime Merci beaucoup !!!!!!!!!!

Rechercher des sujets similaires à "coloriser ligne selectionnee listbox"