Petit problème de liste sous VBA

Bonjour à tous,

Donc je vous expose mon problème :

Je possède un un classeur avec 2 colonnes qui servent de validation de données, une pour les nom et une pour les sites. Ensuite il y a 2 USF, une pour ajouter un nom et l'autre un site. Le problème est que lorsque j'insert un nom ou un site il me perd le tri.

Auriez vous une solution ?

Voici un fichier exemple.

Merci pour votre aide

Christian

16test-ajout.xlsm (25.61 Ko)

Bonjour,

les tris fonctionnent

Cdlt

Bonjour Jean Eric

Effectivement ça fonctionne, en fait mes test n'étaient pas terrible, en faisant le test avec "NOM1" "NOM2" etc... il ne fait pas le tri alphabétique vu que c'est toujours le même nom... Hors avec des prénom ça fonctionne...

je suis parfois très C..

Parcontre dans ce même contexte mais pour la suppression ? il ne faudrait pas supprimer les lignes mais uniquement les valeurs puis combler les vides an gardant le tri ?

Je trouve des code mais il ne concerne que la suppression de lignes.

Merci à toi

Christian

Re,

Tu peux reformuler

cco86260 a écrit :

Parcontre dans ce même contexte mais pour la suppression ? il ne faudrait pas supprimer les lignes mais uniquement les valeurs puis combler les vides an gardant le tri ?

Christian

Oui biensure

Donc admettons :

Sur la colonne A sont situés les noms (a partir de A1 jusqu'à A20))

Sur la colonne C sont situés les sites (a partir de C1 jusqu'à C20)

Ce que je veux c'est avoir un bouton "Supprimer" sur chaque USF qui, lorsque je clique dessus supprime la valeur correspondante sans me supprimer la ligne, le hic c'est qu'il va y avoir une cellule vide, et c'est ce que je souhaite éviter.

J'espère m'être bien expliqué

Merci

Bonjour

Ne supprimes pas la ligne et le problème est résolu

Un exemple pour les noms

Private Sub CommandButton3_Click()
' Suppression
Dim Cel As Range

  If Me.TextBox1 = "" Then
    MsgBox "Nom et prénom, obligatoire"
  Else
    With Sheets("Feuil1")
      Set Cel = .Columns("A").Find(what:=Me.TextBox1, LookIn:=xlValues, lookat:=xlWhole)
      If Not Cel Is Nothing Then
        If MsgBox("Suppression de " & Me.TextBox1 & " ?", _
                  vbCritical + vbYesNo + vbDefaultButton2, _
                  "Opération irréversible") <> vbYes Then Exit Sub
        Cel.Delete shift:=xlShiftUp
        InitListBox
      End If
    End With
  End If
End Sub

Super Banzai64,

Par contre il faut taper le nom avant de le supprimer, c'est bon quand même, mais en le sélectionnant dans la listbox ?

Merci encore

Bonjour

Rajoutes cette macro

Private Sub ListBox1_Click()
  Me.TextBox1 = Me.ListBox1
End Sub

Salut Banzai64

Ba en faite en attendant j'ai essayer ça...

Private Sub CommandButton3_Click()
' Suppression
Dim Cel As Range
Dim LigneSelectionnée As Integer

  LigneSelectionnée = Me.ListBox1.ListIndex + 1
         If Me.ListBox1.ListCount >= 0 And LigneSelectionnée > 0 Then
    With Sheets("Feuil1")
      Set Cel = .Columns("A").Find(what:=Me.ListBox1, LookIn:=xlValues, lookat:=xlWhole)
      If Not Cel Is Nothing Then
        If MsgBox("Suppression de " & Me.ListBox1 & " ?", _
                  vbCritical + vbYesNo + vbDefaultButton2, _
                  "Opération irréversible") <> vbYes Then Exit Sub
        Cel.Delete shift:=xlShiftUp
        InitListBox
      End If
    End With
  End If
End Sub

ça fonctionne mais est ce que c'est propre ?

Bonjour

Pourquoi tu n'as pas essayé ce que je t'ai proposé ?

Ba comme je l'ai dis, en attendant une réponse j'étais après essayer... histoire de savoir pour moi aussi vu que j'essaye d'apprendre

Mais si le tiens est plus propre je le met


Bon ! Je viens de mettre ton code et effectivement c'est mieux que moi, car au moins la selection dans la listbox s'aafiche dans la textbox.

Merci a toi

et maintenant je reprend le sujet "Comment sauvegarder 3 feuilles d'un classeur" sauf que maintenant après avoir enfin suivi tes conseil ce sera "comment enregistrer une feuille d'un classeur".

Merci encore

Rechercher des sujets similaires à "petit probleme liste vba"