case à cocher dans listbox pour mettre en couleur

papapaul

XLDnaute Impliqué
:confused: Cases cochées qui mettent en couleur.
Ce que je voudrais c’est simplement cocher ou décocher
à loisir : que la couleur se mette si j’ai coché et rien si pas coché.
Autant de fois que je veux tant que le usf est ouvert.
Mais surtout jamais la meme evidement.

J’y arrive pas, alors j’ai inventé un bouton
et un doubleclick mais ca marche pas très bien.
J’ai déjà posté la dessus, alors excusez moi d’y revenir mais
des couleurs différentes sur chaque item coché sans avoir besoin
de mes infâmes bidouillages, est-ce possible ?
J’ai tout fait grace à des tas de trucs et d’idées trouvés sur ce forum.
Merci à tous mais là je suis complètement paumé.

Au secours les pros. :eek:
 

Pièces jointes

  • USF_daltonv2.zip
    25.7 KB · Affichages: 74
  • USF_daltonv2.zip
    25.7 KB · Affichages: 74
  • USF_daltonv2.zip
    25.7 KB · Affichages: 88

papapaul

XLDnaute Impliqué
Re : case à cocher dans listbox pour mettre en couleur

:( Bonjour à tous, ci-dessous le code qui m'ennuie
Y a t'il moyen de faire quelquechose comme :
For each x in ...?
alors coul = coul +1
Ou alors faire de x une sorte de ubound ou array?
pour que je puisse cocher comme je veux dans la v8 ci-dessus
et éviter la couleur noire ?
Merci à tous les courageux :eek:

Private Sub ListBox1_Change()
Dim x As Integer: Dim Cel As Range
Dim coul As Byte
Application.ScreenUpdating = False
With ActiveSheet
coul = 35
For x = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(x) = True Then
coul = coul + 1

For Each Cel In .Range("a1").CurrentRegion
If Cel = ListBox1.List(x) And Cel.Interior.ColorIndex = xlNone Then Cel.Interior.ColorIndex = coul
Next Cel
Else
If ListBox1.Selected(x) = False Then
coul = 0
For Each Cel In .Range("a1").CurrentRegion
If Cel = ListBox1.List(x) Then Cel.Interior.ColorIndex = xlNone
Next Cel
End If
End If
Next x
End With
On Error Resume Next
Application.ScreenUpdating = True
End Sub

Bonne soirée sur xld :rolleyes:
 

CB60

XLDnaute Barbatruc
Re : case à cocher dans listbox pour mettre en couleur

Bonsoir
J'ai regardé la macro et changer la séquence de couleur, à la place de coul=35 j'ai mis 32 et plus bas à la place de coul=0 j'ai mis 3 et je n'ai plus le noir qui apparait.
 

papapaul

XLDnaute Impliqué
Re : case à cocher dans listbox pour mettre en couleur

:) Merci beaucoup CB60
Ok deja plus la couleur noire, c'est bien, meme tres bien
Mais quand je coche en remontant la liste, la couleur
reste la meme (ici vert),
Il faudrai que la couleur change pour
chaque "cochage" successif que je commence par en haut,
par en bas ou par le milieu ou n'importe comment.
Et que "decocher" remette à blanc bien sur.
Et la j'ai bien peur que ce soit plus compliqué.
En tout cas merci à toi. ;)
 

CB60

XLDnaute Barbatruc
Re : case à cocher dans listbox pour mettre en couleur

re
En ajoutant un bouton avec comme instruction:

Private Sub CommandButton1_Click()
Call IniListBox1
End Sub

cela remet ton USF à zéro

Pour enlever les couleurs, pour la couleur verte je ne sais pas

PS j'ai dis des bêtises cela ne fonctionne pas.
 
Dernière édition:

papapaul

XLDnaute Impliqué
Re : case à cocher dans listbox pour mettre en couleur

:cool: Merci de te pencher la dessus
Mais c'est justement que je voudrais : éviter les boutons
comme ici dans ma v2.
Ca limiterait les clicks.
Pas si simple :confused:
Remplacer les boutons par un simple click
en mettant les macros dans listbox1_click et camarche pas.
Bon courage à tous
 

Pièces jointes

  • USF_daltonv2.zip
    25.8 KB · Affichages: 43
  • USF_daltonv2.zip
    25.8 KB · Affichages: 42
  • USF_daltonv2.zip
    25.8 KB · Affichages: 42

JYLL

Nous a quitté
Repose en paix
Re : case à cocher dans listbox pour mettre en couleur

Bonsoir Papapaul et tout le monde,

J'ai regardé ton problème, pas simple car on ne connait pas le nom des cases à cocher car elles sont créées en lors de la recherche, dans tu ne peut pas écrire le code qui peut les gérer.

Si tu supprimes ta listebox et que tu mets un cadre. Dans ce cadre tu mets X cases à cocher avec la propriétè visible = false et au fur et à mesure que tu trouves tes doublons tu les mets à visible=true. Comme elles existent tu peux exploiter l'éveinement quand tu les coches et c'est là que tout devient automatique. Il faudra remettre une listbox à l'intérieure du cadre. Je sais qu'il y a du travail, mais autrement je ne vois pas comment faire.

A te lire.
 

Bebere

XLDnaute Barbatruc
Re : case à cocher dans listbox pour mettre en couleur

bonjour le fil
papapaul,ajouté coul=3 et un peu changé le code,autrement,tu fais un tableau avec les chiffres des couleurs que tu veux et ta couleur deviendrait coul(index)
au lieu de coul=coul+1
à bientôt
 

Pièces jointes

  • USF_daltonv7.zip
    21.6 KB · Affichages: 30
  • USF_daltonv7.zip
    21.6 KB · Affichages: 30
  • USF_daltonv7.zip
    21.6 KB · Affichages: 28

papapaul

XLDnaute Impliqué
Re : case à cocher dans listbox pour mettre en couleur

:) Encore une fois, merci Bebère, Jean-Yves et les autres.
Pour la mise en couleur c'est pas tout à fait ca mais bon
ça évite l'utilisation de boutons et c'est déjà très bien.
Par contre si je veux ajouter des feuilles ou les cellules
ne contiennent pas "nom" comme dans le
fichier joint, évidemment y a un probleme avec la méthode.
If Left(Cel, 3) <> "nom" Then Col.Add Cel, CStr(Cel)
pour une cellule unique ça me compte 1 et je veux bien sur
faire un comptage seulement sur les cellules identiques.

On peut peut-être adapter un truc comme dans la macro1
If cel1 = cel2 And cel1.Address <> cel2.Address Then
compt = compt + 1 'incrémente le compteur
J'ai essayé mais avec seulement 2 mois d'expérience en vba
C'est comme si j'attaquais l'himalaya.:confused:

Encore autre chose : (décidement il est exigeant celui-la :eek: )
Comme cette méthode de détection des doublons intéresse beaucoup
de monde autour de moi. Peut-on imaginer un Range("a1").currentregion
qui s'adapte quelque soit le classeur et quelque soient le nbre des colonnes
et des lignes plutôt qu'un range prédéfini ?

Merci par avance à tous les costauds d'xld et si j'y arrive pas,
Je me dis que je progresse quand même.
Amitiés à tous :cool:
 

Pièces jointes

  • USF_dalton_4feuilles.zip
    22.4 KB · Affichages: 31
  • USF_dalton_4feuilles.zip
    22.4 KB · Affichages: 32
  • USF_dalton_4feuilles.zip
    22.4 KB · Affichages: 35

Bebere

XLDnaute Barbatruc
Re : case à cocher dans listbox pour mettre en couleur

papapaul,dis nous ces noms doivent ils être là,peut on les supprimer,ou les inclure,etc...et les 2feuilles que tu as ajoutées tu veux alimenté la listbox avec quelle colonne,A,B,duo A et B,précise ta pensée
j'avais mis le if left(nom.... pour éviter qu'ils aillent dans la listbox
une collection c'est sans doublons et il faut un argument string(chaîne) d'ou le
x,cstr(x)
à te lire
 

JYLL

Nous a quitté
Repose en paix
Re : case à cocher dans listbox pour mettre en couleur

Re bonsoir Papapaul et tous les membres de ce fil,

J'ai fais une petite modification, j'ai mis la macro de la feuille dans ThisWorkbook ce qui permet d'ajouter autant de feuilles que l'on veut sans à avoir à retoucher le code, le fait de sélectionner une feuille fait aparaître la Userform.

Espère avoir fait avancé le smilblic....
 

Pièces jointes

  • USF_dalton_4feuilles.zip
    18.3 KB · Affichages: 23
  • USF_dalton_4feuilles.zip
    18.3 KB · Affichages: 22
  • USF_dalton_4feuilles.zip
    18.3 KB · Affichages: 22

papapaul

XLDnaute Impliqué
Re : case à cocher dans listbox pour mettre en couleur

:p Merci Jean-Yves, mais avant de voir ta réponse,
j'ai étudié les explications de bébère (merci por tout) et j'ai modifié sub ini comme ci-dessous. Et j'ai choisi currentregion
Ca marche :D Ma listbox s'initialise bien (que les doublons)
et sur chaque feuille (quelque que soit la plage sans ligne vide bien sur)

Trop content moi mais évidement reste un probleme, quand je coche,
la mise en couleur fonctionne tjs sur donald et dalton mais pas les autres.
Surement un souci avec worksheet_activate, mais je sais pas quoi faire.
Je continue à chercher.:eek:

Sub IniListBox1()
Dim Compte As Byte, Col As New Collection, Item As Variant, Cel As Range
Application.ScreenUpdating = False
With ActiveSheet
For Each Cel In .Range("a1").CurrentRegion 'définit la variable plage
On Error Resume Next
If Left(Cel, 3) <> Item Then Col.Add Cel, CStr(Cel)
On Error GoTo 0
Next Cel
ListBox1.Clear
For Each Item In Col
For Each Cel In .Range("a1").CurrentRegion 'définit la variable plage
If Cel = Item Then Compte = Compte + 1
Next Cel
If Compte > 1 Then
ListBox1.AddItem Item
ListBox1.List(ListBox1.ListCount - 1, 1) = Compte
End If
Compte = 0
Next Item
End With
Set Col = Nothing
Application.ScreenUpdating = True
End Sub

En tout cas super sympa votre aide:)
 

Pièces jointes

  • USF_dalton_4feuillesv4.zip
    22.6 KB · Affichages: 22

JYLL

Nous a quitté
Repose en paix
Re : case à cocher dans listbox pour mettre en couleur

Re Bonsoir Papapaul et le participants,


Je viens de modifier les macro pour pouvoir tenir compte automatiquement du nombre de colonnes et de lignes. J'ai également modifié pour que cela fonctionne avec les nombres en mettant cstr(Cel). Reste qu'il manque encore le teste pour les valeurs trouvées 1 seule fois.

J'espère que l'on avance.

A plus
 

Pièces jointes

  • USF_dalton_4feuilles.zip
    24.6 KB · Affichages: 27
  • USF_dalton_4feuilles.zip
    24.6 KB · Affichages: 24
  • USF_dalton_4feuilles.zip
    24.6 KB · Affichages: 27