Couleur de ligne temporaire

Bonjour,

J'ai 3 boutons qui me permettent de:

- Incrémenter une ligne dans ListBox,

- Incrémenter une ligne a partir de la ligne précédente dans une ListBox,

- Modifier la ligne.

Une fois que j'ai applique l'un de ces boutons, je souhaiterais avoir un visuel sur les lignes créées ou modifiées.

Par exemple, une ligne en couleur qui disparait par la suite, juste afin de retrouver dans tous ces milliers de lignes, la ligne en question.

J'ai déjà pu jouer sur le placement de la ligne pour la retrouver en haut de ma listbox ou en bas si nouvelle ligne incrémentée, mais un visuel couleur en plus serait pas mal!

Avez-vous une idee?

a+

Bonjour

Un essai avec ligne concernée en surbrillance. Cela te convient-il ?

Bye !

bonjour gmb,

Désolé de ma réponse tardive.

Je regarderai Lundi ta solution.

Je te tiens au courant.

Merci en tout cas de ta proposition et ton soutien technique.

@+

Bonjour,

Je ne vois rien du tout, le formulaire étant infiniment petit.

 Rows(ligne & ":" & ligne).Select
 ActiveWindow.ScrollRow = ligne

J'ai vu que vous avez inséré ce code mais sur le formulaire je ne vois pas ce que cela fait en termes de surbrillance quand j'applique l'un des 3 boutons (5/8/14).

C'est pas dans Excel que je souhaite avoir un visuel colore mais la ListBox afin d'avoir un repère quand insertion ou modifciation de la ligne.

a+

bonjour,

si on ajoute une MFC au tableau et on crée 2 plages nommées, une pour la colonne "colonne" et une pour la ligne = "ligne" (voir module de la feuille 'database..."

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     With Target
          ThisWorkbook.Names.Add "colonne", Target.Column
          ThisWorkbook.Names.Add "ligne", Target.Row
     End With
End Sub

Bonjour BsAlv,

Merci pour votre code et votre soutien.

C'est un code VBA pour retrouver la ligne insérée ou modifiée sur la ListBox, cela peut être n'importe qu'elle ligne sélectionnée de la ListBox.

Ce qui se passe sur l'Excel, je n'en ai pas besoin.

En vous remerciant,

@+

re,

alors il faut improviser

Et dès que vous ne l'avez plus besoin ajouter quelque part au bon moment ThisWorkbook.Names.Add "colonne", 0

Private Sub CommandButton5_Click()

     With Sheets("DATABASE_VUSHF").Range("Tableau1").ListObject
          If .ListRows.Count > 0 Then
               With .DataBodyRange.Cells(.ListRows.Count, 1)
                    h = Left(.Value, 2) & Format(Mid(.Value, 3, 5) + 1, "00000") & "-1"
               End With
               With .ListRows.Add.Range
                    ThisWorkbook.Names.Add "colonne", .Column  '<<<<<<<<<<<<<<<
                    ThisWorkbook.Names.Add "ligne", .Row   '<<<<<<<<<<<<<<<<<<<<<

                    .Range("A1").Value = h   'nouveau numéro en A1
                    .Range("AA1").Resize(, 5).Value = Array(TextBox26.Value, TextBox27.Value, TextBox28.Value, TextBox29.Value, TextBox30.Value)     'ces 5 textboxes en AA:AE
               End With

etc 

Re,

J'arrive pas a voir ce que cela fait sur la Lisbox.

Je vais toujours a ma dernière ligne créée mais elle n'est pas marquee par un visuel different, couleur de fond etc

Par exemple, quand je sélectionne au depart ma ligne dans la ListBox, elle a un fond de couleur bleu, pourquoi ne pas retrouver cette couleur de fond bleue initiale (le temps du process) jusqu'a ce que je sélectionne une autre ligne pour un autre process.

A+

re,

aha, je pensais toujours à la feuille et ne pas au listbox, Alors les dernières lignes de la macro après votre initialize, si vous savez déjà la ligne, il ne faut plus faire ce match, puis on dit le topindex et on selectionne la ligne, je pense que c'est "r-1"

   UserForm_Initialize

     r = Application.Match(s, LO.ListColumns("ELECTRONIC NAME").DataBodyRange, 0)     'rechercher ce nouveau electronic name
     ListBox20.TopIndex = Application.Max(r - 5, 0)     'top of your list, 5 lignes plus haut avec min 0
     ListBox20.Selected(r-1) = True           'on selectionne cette ligne

End Sub

Bonjour BsAlv,

J'avoue que je suis perdu.

J'ai pas compris le code, ou dois le placer? a la place de quoi?

a+

re,

on recherche la ligne dans votre tableau, puis on positionne la première ligne du listbox 25 lignes plus haut (ne fonctionne pas si la ligne se trouve au bout de la colonne) avec topindex et puis on sélectionne la ligne

J'avoue que je ne l'ai pas testé correctement, car mon écran est trop petit pour votre userform

Re,

Ok je vais tester.

Autre chose, vos codes pour créer l'identifiant sont supers, mais le fait de ne pas les avoir sous cette forme, cela ne me permet pas de les ranger dans l'ordre.

AA0001-01 / AA0001-02  .... / AA0001-10

J'ai cela a la place

image

Pour le bouton 5 j'ai donc changer le code comme suit, pour avoir A00001-01 / AA00002-01 / AA00003-01

Private Sub CommandButton5_Click()

With Sheets("DATABASE_VUSHF").Range("Tableau1").ListObject

If .ListRows.Count > 0 Then

With .DataBodyRange.Cells(.ListRows.Count, 1)

h = Left(.Value, 2) & Format(Mid(.Value, 3, 5) + 1, "00000") & "-01"

End With

With .ListRows.Add.Range

.Range("A1").Value = h 'nouveau numéro en A1

.Range("AA1").Resize(, 5).Value = Array(TextBox26.Value, TextBox27.Value, TextBox28.Value, TextBox29.Value, TextBox30.Value) 'ces 5 textboxes en AA:AE

End With

Else

MsgBox "problème, It's the first lign"

End If

End With

MsgBox "new signature created!"

UserForm_Initialize

ListBox20.TopIndex = ListBox20.ListCount - 1

End Sub

Pour le bouton 14, je cherche l'incrementation comme suit, AA00001-01 / AA00001-02 / AA00001-03 / ... / AA00001-10 / AA00001-11 ...

Private Sub CommandButton14_Click()

Dim LO

Set LO = Sheets("DATABASE_VUSHF").Range("Tableau1").ListObject 'ce tableau

With ComboBox1

'Debug.Print .Text

If .Text = "" Then Exit Sub 'si vide, arrête

r = Application.Match(.Text, LO.ListColumns("ELECTRONIC NAME").DataBodyRange, 0) 'ligne du tableau où ce nom se trouve

If Not IsNumeric(r) Then MsgBox "Not found !!!???": Exit Sub 'normallement ceci serait impossible

s = Left(.Value, 8) & Split(.Value, "-")("1") + 1 ' "electronic name" suivant

r1 = Application.Match(s, LO.ListColumns("ELECTRONIC NAME").DataBodyRange, 0) 'rechercher ce nouveau electronic name

If IsNumeric(r1) Then MsgBox "This ""Electronic Name"" already exists !!!", vbCritical, s: Exit Sub 'existe déjà = arrête

End With

Set c = LO.ListRows.Add(r + 1).Range 'insérer une nouvelle ligne après la ligne actuelle

c.Value = c.Offset(-1).Value 'copier et coller les données de l'ancienne ligne >>>> je ne suis pas sû que je peux faire cela, c'est plutôt un exemple

c.Cells(1).Value = s 'seulement l' "Electronic Name" est différent

'votre système de mise à jour

MsgBox "new mode created!"

UserForm_Initialize

ListBox20.TopIndex = ListBox20.ListIndex + 1

End Sub

mais pour le bouton 14, je n'ai pas encore trouve la solution, un conseil ?

a+

re, quelque chose comme ça à première vue et si, un moment donné, ces numéros dépassent 99, alors on utilise "000" au lieu de "00"

s = Left(.Value, 8) & format(Split(.Value, "-")(1) + 1,"00")  ' "electronic name" suivant

Re,

Merci pour tout BsAlv,

Tout fonctionne comme je le souhaite, ton soutien technique est excellent!!!!

a+

Rechercher des sujets similaires à "couleur ligne temporaire"