Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Modifier Valeur d'une liste

5 réponses
Avatar
DAVID
Bonjour à tous

Dans un UserForm j'ai ce code ci dessous qui me permet de créer des
enregistrements dans un tableau.

J'ai ajouté un bouton Modifier et Supprimer

Après avoir cliqué sur une valeur dans une ListBox, cela m'affiche
l'enregistrement sélectionner dans un TextBox

J'aimerais pouvoir modifier l'enregistrement en cliquant sur Modifier et
pouvoir Supprimer l'enregistrement en cliquant sur Supprimer !

Étant novice et après quelques recherches, je n'y arrive pas.

Merci de votre aide

Private Sub UserForm_Initialize()
LsbModePaiement.RowSource = ("BD!MODEPAIEMENT")
LsbModePaiement.ListIndex = -1
TxtModePaiement.Value = ""
End Sub

Private Sub CmdModePaiementNouveau_Click()
Sheets("BD").Activate
num = Sheets("BD").Range("K65536").End(xlUp).Row + 1
Range("K" & num).Value = TxtModePaiement.Value
UserForm_Initialize
Sheets("MENU").Activate
End Sub

Private Sub LsbModePaiement_Click()
TxtModePaiement.Value = LsbModePaiement.Value
End Sub

Private Sub CmdModePaiementModifier_Click()

End Sub

Private Sub CmdModePaiementSupprimer_Click()

End Sub

5 réponses

Avatar
Pounet95
Bonsoir David,

Si j'ai compris ton problème, voici mes suggestions : à copier dans le code
de ton userform
Attention dans la base de données BD , ici la liste commence en colonne A
ligne 3
Il n'y a pas de gestion de la valeur du txtModePaiement ni d'autres erreurs
possibles
telles que la duplication de données existantes après un click dans la liste
qui met la valeur dans le txt
ni ce qui se passe quand il n'y a plus de mode de paiement !!!!

A toi d'adapter
Pounet95


Private Sub UserForm_Initialize()
Liste_Modes_Paiement
lsbMODEPAIEMENT.ListIndex = -1
txtModePaiement.Text = ""
End Sub

Private Sub CmdModePaiementNouveau_Click()
With Sheets("BD")
num = .Range("A65536").End(xlUp).Row + 1
.Range("A" & num).Value = txtModePaiement.Text
End With
'recalculer la liste
Liste_Modes_Paiement
End Sub

Private Sub LsbModePaiement_Click()
txtModePaiement.Text = lsbMODEPAIEMENT.List(lsbMODEPAIEMENT.ListIndex)
End Sub

Private Sub CmdModePaiementModifier_Click()
'index dans liste déroulante
ndx = lsbMODEPAIEMENT.ListIndex
'la 1ère ligne de la BD est 3 qui correspond à LisIndex=0
'donc, décaler d'autant pour retrouver la ligne
With Sheets("BD")
.Cells(ndx + 3, 1) = txtModePaiement.Text
End With
End Sub

Private Sub CmdModePaiementSupprimer_Click()
'Récupérer Index
ndx = lsbMODEPAIEMENT.ListIndex
'D'abord vider la référence à la liste déroulante
lsbMODEPAIEMENT.RowSource = ""
'la 1ère ligne de la BD est 3 qui correspond à LisIndex=0
'donc, décaler d'autant pour retrouver la ligne
With Sheets("BD")
.Cells(ndx + 3, 1).EntireRow.Delete
End With
'Effacer texte
txtModePaiement.Text = ""
'recalculer la liste
Liste_Modes_Paiement
End Sub


Private Sub Liste_Modes_Paiement()
On Error Resume Next
ActiveWorkbook.Names("ModePaiement").Delete
With Sheets("BD")
.Activate
deb = 3 ' 1ére ligne de données
fin = .[A65536].End(xlUp).Row 'dernière ligne
.Range(.Cells(deb, 1), .Cells(fin, 1)).Select
ActiveWorkbook.Names.Add Name:="ModePaiement", RefersTo:=Selection
End With
'Réaffecter la liste
lsbMODEPAIEMENT.RowSource = "ModePaiement"
End Sub


"DAVID" a écrit dans le message de groupe de
discussion : OYp#
Bonjour à tous

Dans un UserForm j'ai ce code ci dessous qui me permet de créer des
enregistrements dans un tableau.

J'ai ajouté un bouton Modifier et Supprimer

Après avoir cliqué sur une valeur dans une ListBox, cela m'affiche
l'enregistrement sélectionner dans un TextBox

J'aimerais pouvoir modifier l'enregistrement en cliquant sur Modifier et
pouvoir Supprimer l'enregistrement en cliquant sur Supprimer !

Étant novice et après quelques recherches, je n'y arrive pas.

Merci de votre aide

Private Sub UserForm_Initialize()
LsbModePaiement.RowSource = ("BD!MODEPAIEMENT")
LsbModePaiement.ListIndex = -1
TxtModePaiement.Value = ""
End Sub

Private Sub CmdModePaiementNouveau_Click()
Sheets("BD").Activate
num = Sheets("BD").Range("K65536").End(xlUp).Row + 1
Range("K" & num).Value = TxtModePaiement.Value
UserForm_Initialize
Sheets("MENU").Activate
End Sub

Private Sub LsbModePaiement_Click()
TxtModePaiement.Value = LsbModePaiement.Value
End Sub

Private Sub CmdModePaiementModifier_Click()

End Sub

Private Sub CmdModePaiementSupprimer_Click()

End Sub



Avatar
DAVID
Merci pour le travail que tu m'a accordé.

Je vais essayer de comprendre le principe afin de l'adapter à mon projet.

1ère question ! Liste_Modes_Paiement

C quoi ? D'ou ça vient ?
Avatar
DAVID
Désolé j'ai bien compris.

Par contre lors de la suppression, cela efface la ligne entière mais le
problème c'est que j'ai des données à droite et gauche du tableau
Avatar
Pounet95
Bonsoir,

Liste_Mode_Paiement est le nom de la procédure que j'ai ajouté à ton projet.
Cette procédure est appelée chaque fois que besoin.

Pour la ligne effacée, replacer
.Cells(ndx + 3, 1).EntireRow.Delete
par
.Cells(ndx + 3, 1).Delete


"DAVID" a écrit dans le message de groupe de
discussion : #
Désolé j'ai bien compris.

Par contre lors de la suppression, cela efface la ligne entière mais le
problème c'est que j'ai des données à droite et gauche du tableau



Avatar
DAVID
merci beaucoup. Je vais essayer d'adapter et reviens si besoin. Bonne soirée