Microsoft 365 Code pour index

Marvin57

XLDnaute Occasionnel
bonjour tout le monde,

dans le fichier ci-joint, je peux appeler un formulaire depuis l'onglet "ACCUEIL".

Mon souhait ;

Lorsque je choisi une ligne dans la listbox et que je clique sur supprimer, il devrait automatiquement me remettre les numéros de la colonne ID à jour.

Explications ;

Si je choisi par exemple la ligne qui à le numéro ID 11 et que je le supprime, alors il devrait me remettre un ID 11 dans la colonne ID afin que les numéros ID se suivent toujours.

Est-ce possible ?

Merci à vous tous pour vos réponses.

Marvin57
 

Pièces jointes

  • essai trier index.xlsm
    20.4 KB · Affichages: 4
Solution
re
comme ça vite fait
tu vire tout le code en entier de ton userform et tu met celui ci
VB:
Private Sub CommandButton1_Click()
'dim R as range
'envoi toutes les références dans le tableau
    Set r = Sheets("TDB").Range("tblbd").ListObject.ListRows.Add.Range
    r.Cells(1).Value = Me.TextBox1.Value
    r.Cells(1).Value = Me.TextBox2.Value
    r.Cells(1).Value = Me.TextBox3.Value
    Sheets("TDB").Activate
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Dim x&
    Application.ScreenUpdating = True
    With ListBox1
        If ListBox1.ListIndex = -1 Then MsgBox ("Veuillez effectuer un choix d'article préalable !!!"): Exit Sub
        If MsgBox("Voulez vous supprimer l'article sélectionné ?", vbYesNo) = vbYes Then...

patricktoulon

XLDnaute Barbatruc
re
Bonjour
je détecte là même si est là ton besoins un problème conceptuel
un ID c'est un identifiant que l'on attribut a une ligne de donnée
par conséquent il est unique et ne peut être réutilisé
un ligne supprimée supprimant par la force des choses un id doit resté supprimée


en début d'année tu atribut l'id (xx04) à paul
en milieu d'année tu supprime Paul
en fin d'année tu ne peux pas ajouter un certain Robert avec (xx04) comme ID (identifiant )
car en fin d'année si tu dois faire un listing ou chercher la donnée de paul pour une raison ou une autre tu aura celles de robert

à méditer
mon intervention s'arrêtera là;)
 

Marvin57

XLDnaute Occasionnel
re
Bonjour
je détecte là même si est là ton besoins un problème conceptuel
un ID c'est un identifiant que l'on attribut a une ligne de donnée
par conséquent il est unique et ne peut être réutilisé
un ligne supprimée supprimant par la force des choses un id doit resté supprimée


en début d'année tu atribut l'id (xx04) à paul
en milieu d'année tu supprime Paul
en fin d'année tu ne peux pas ajouter un certain Robert avec (xx04) comme ID (identifiant )
car en fin d'année si tu dois faire un listing ou chercher la donnée de paul pour une raison ou une autre tu aura celles de robert

à méditer
mon intervention s'arrêtera là;)
Bonjour patrick,

Merci pour le retour.

Alors je viens de modifier le fichier comme il est en réel, à peu de choses prêt.

Ma demande au départ était de savoir si je supprime une ligne , donc l'ID en question est supprimé.
Ensuite si je veux créer un nouvel article il pourrait me redonner l'ID effacé ou non ?

Dans le fichier ci-joint j'ai effacé l'article ayant eu l'ID 5. Maintenant lorsque j'appelle le formulaire tu verra qu'il me donne l'ID 18 au lieu de me donner l'ID 17 vu que le 5 avait été supprimé.

Alors lorsque je te lis je ne sais plus vraiment si mon fichier actuel est bien construit !

Comment gérer cela d'après toi ?

Merci beaucoup A+
 

Pièces jointes

  • essai trier index.xlsm
    25 KB · Affichages: 2

patricktoulon

XLDnaute Barbatruc
re
comme ça vite fait
tu vire tout le code en entier de ton userform et tu met celui ci
VB:
Private Sub CommandButton1_Click()
'dim R as range
'envoi toutes les références dans le tableau
    Set r = Sheets("TDB").Range("tblbd").ListObject.ListRows.Add.Range
    r.Cells(1).Value = Me.TextBox1.Value
    r.Cells(1).Value = Me.TextBox2.Value
    r.Cells(1).Value = Me.TextBox3.Value
    Sheets("TDB").Activate
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Dim x&
    Application.ScreenUpdating = True
    With ListBox1
        If ListBox1.ListIndex = -1 Then MsgBox ("Veuillez effectuer un choix d'article préalable !!!"): Exit Sub
        If MsgBox("Voulez vous supprimer l'article sélectionné ?", vbYesNo) = vbYes Then
            x = .List(.ListIndex, 3)
            [Tab_6].Rows(x).EntireRow.Delete
        End If
    End With
    MsgBox ("Suppression  de la ligne effectuée !!!")
    reliste
End Sub

Private Sub ListBox1_Click()
    Dim tblBD()
    With ListBox1
        TextBox1 = .List(.ListIndex, 0)
        TextBox2 = .List(.ListIndex, 1)
        TextBox3 = .List(.ListIndex, 2)
    End With
End Sub

Private Sub UserForm_Initialize()
    reliste
End Sub
Sub reliste()
    Dim tblBD()
    tblBD = [Tab_6].Resize(, 4).Value: For i = 1 To UBound(tblBD): tblBD(i, 4) = i: Next
    Me.ListBox1.List = tblBD
    Me.ListBox1.ColumnCount = 4
    Me.ListBox1.ColumnWidths = "40;50;50"
End Sub
 

Marvin57

XLDnaute Occasionnel
re
comme ça vite fait
tu vire tout le code en entier de ton userform et tu met celui ci
VB:
Private Sub CommandButton1_Click()
'dim R as range
'envoi toutes les références dans le tableau
    Set r = Sheets("TDB").Range("tblbd").ListObject.ListRows.Add.Range
    r.Cells(1).Value = Me.TextBox1.Value
    r.Cells(1).Value = Me.TextBox2.Value
    r.Cells(1).Value = Me.TextBox3.Value
    Sheets("TDB").Activate
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Dim x&
    Application.ScreenUpdating = True
    With ListBox1
        If ListBox1.ListIndex = -1 Then MsgBox ("Veuillez effectuer un choix d'article préalable !!!"): Exit Sub
        If MsgBox("Voulez vous supprimer l'article sélectionné ?", vbYesNo) = vbYes Then
            x = .List(.ListIndex, 3)
            [Tab_6].Rows(x).EntireRow.Delete
        End If
    End With
    MsgBox ("Suppression  de la ligne effectuée !!!")
    reliste
End Sub

Private Sub ListBox1_Click()
    Dim tblBD()
    With ListBox1
        TextBox1 = .List(.ListIndex, 0)
        TextBox2 = .List(.ListIndex, 1)
        TextBox3 = .List(.ListIndex, 2)
    End With
End Sub

Private Sub UserForm_Initialize()
    reliste
End Sub
Sub reliste()
    Dim tblBD()
    tblBD = [Tab_6].Resize(, 4).Value: For i = 1 To UBound(tblBD): tblBD(i, 4) = i: Next
    Me.ListBox1.List = tblBD
    Me.ListBox1.ColumnCount = 4
    Me.ListBox1.ColumnWidths = "40;50;50"
End Sub
OK Merci. Je vois ça ce soir et je te tiens au courant.
A+
 

Marvin57

XLDnaute Occasionnel
re
comme ça vite fait
tu vire tout le code en entier de ton userform et tu met celui ci
VB:
Private Sub CommandButton1_Click()
'dim R as range
'envoi toutes les références dans le tableau
    Set r = Sheets("TDB").Range("tblbd").ListObject.ListRows.Add.Range
    r.Cells(1).Value = Me.TextBox1.Value
    r.Cells(1).Value = Me.TextBox2.Value
    r.Cells(1).Value = Me.TextBox3.Value
    Sheets("TDB").Activate
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Dim x&
    Application.ScreenUpdating = True
    With ListBox1
        If ListBox1.ListIndex = -1 Then MsgBox ("Veuillez effectuer un choix d'article préalable !!!"): Exit Sub
        If MsgBox("Voulez vous supprimer l'article sélectionné ?", vbYesNo) = vbYes Then
            x = .List(.ListIndex, 3)
            [Tab_6].Rows(x).EntireRow.Delete
        End If
    End With
    MsgBox ("Suppression  de la ligne effectuée !!!")
    reliste
End Sub

Private Sub ListBox1_Click()
    Dim tblBD()
    With ListBox1
        TextBox1 = .List(.ListIndex, 0)
        TextBox2 = .List(.ListIndex, 1)
        TextBox3 = .List(.ListIndex, 2)
    End With
End Sub

Private Sub UserForm_Initialize()
    reliste
End Sub
Sub reliste()
    Dim tblBD()
    tblBD = [Tab_6].Resize(, 4).Value: For i = 1 To UBound(tblBD): tblBD(i, 4) = i: Next
    Me.ListBox1.List = tblBD
    Me.ListBox1.ColumnCount = 4
    Me.ListBox1.ColumnWidths = "40;50;50"
End Sub
Re,

alors il y a un soucis lorsque je saisi un nouvel article ( voir image)
ERREUR.png
 

Marvin57

XLDnaute Occasionnel
re
comme ça vite fait
tu vire tout le code en entier de ton userform et tu met celui ci
VB:
Private Sub CommandButton1_Click()
'dim R as range
'envoi toutes les références dans le tableau
    Set r = Sheets("TDB").Range("tblbd").ListObject.ListRows.Add.Range
    r.Cells(1).Value = Me.TextBox1.Value
    r.Cells(1).Value = Me.TextBox2.Value
    r.Cells(1).Value = Me.TextBox3.Value
    Sheets("TDB").Activate
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Dim x&
    Application.ScreenUpdating = True
    With ListBox1
        If ListBox1.ListIndex = -1 Then MsgBox ("Veuillez effectuer un choix d'article préalable !!!"): Exit Sub
        If MsgBox("Voulez vous supprimer l'article sélectionné ?", vbYesNo) = vbYes Then
            x = .List(.ListIndex, 3)
            [Tab_6].Rows(x).EntireRow.Delete
        End If
    End With
    MsgBox ("Suppression  de la ligne effectuée !!!")
    reliste
End Sub

Private Sub ListBox1_Click()
    Dim tblBD()
    With ListBox1
        TextBox1 = .List(.ListIndex, 0)
        TextBox2 = .List(.ListIndex, 1)
        TextBox3 = .List(.ListIndex, 2)
    End With
End Sub

Private Sub UserForm_Initialize()
    reliste
End Sub
Sub reliste()
    Dim tblBD()
    tblBD = [Tab_6].Resize(, 4).Value: For i = 1 To UBound(tblBD): tblBD(i, 4) = i: Next
    Me.ListBox1.List = tblBD
    Me.ListBox1.ColumnCount = 4
    Me.ListBox1.ColumnWidths = "40;50;50"
End Sub
Je viends de modifier la ligne en jaune en cela ci-dessous et ça à l'air de fonctionner. Est-ce correct ?

VB:
    Set R = Sheets("TDB").Range("Tab_6").ListObject.ListRows.Add.Range
 

Statistiques des forums

Discussions
312 247
Messages
2 086 585
Membres
103 247
dernier inscrit
bottxok