Modifier BDD via userform
Bonjour,
J'ai créé un fichier pour constituer une BDD alimenter par un Userform. J'ai réussi à coder pratiquement tout ce que je voulais sauf le bouton "modifier".
Lorsque je sélectionne une ligne de la ListBox, je souhaite pouvoir modifier les colonnes "Statut" , "Depuis le" et "Commentaires".
Sauf que quand j'exécute mon code en cliquant sur le bouton "modifier" il n'exécute pas entièrement le code.
Seule la colonne "statut" se modifie. Les autres colonnes restent inchanger et je ne sais pas d'où vient l'erreur.
Merci d'avance pour votre aide.
Bonsoir LeBlédard225 et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Ainsi que sur les fonctionnalités (Nouveau Forum au bas de page notamment)
Merci de votre participation
Cordialement
Re,
Après analyse, votre ListBox est liée au tableau par RowSource (très mauvaise idée
Ce qui se produit lors de la modification en mettant un point d'arrêt (F9) sur la première ligne d'instruction, vous pouvez le voir
Exécution du code pas à pas avec F8
La modification de la première cellule
Entraine immédiatement l'exécution de ceci
On retourne donc au commencement...
J'espère que cela pourra vous aider
Parfait, Parfait.
Il faut donc que je lie ma BDD à la ListBox en utilisant une ligne de code et le tour est joué.
Merci pour cette analyse.
Re,
On peut aussi utiliser un Flag (variable booléenne) au moment de la modification
FlgModif = TrueQue l'on teste dans la sub Listbox1_click,
Sub ListBox1_Click()
If FlgModif = True Then Exit Submais pas certain que cela ne posent pas d'autres soucis
Parfait,
Je teste tout ça et je te redis.
Merci
Salut @BrunoM45,
Après avoir lié ma ListBox à mon tableau avec une ligne de code ou encore utilisé une variable booléenne le résultat est le même.
Le code ne s'exécute pas entièrement.
Je suis preneur si vous avez d'autres pistes pour régler ce problème.
Merci d'avance pour votre support.
Bonjour LeBlédard225
Pouvez-vous nous poster votre fichier ainsi modifié SVP
A+
Hello BrunoM45, à tout le forum,
Ci dessous le fichier.
Re,
Voici une possibilité avec un Flag
Ceci dit, ce n'est pas la meilleures des solutions car ça active pas mal d'évènements
Le mieux est de supprimer le RowSource de ta ListBox et de l'alimenter à l'initialisation de ton USF
il y a un tas de sujet la-dessus
A+
Hello,
Du coup, après plusieurs recherches, j'ai découvert l'entièreté de mon problème.
En effet, une ListBox ne peut contenir que 10 colonnes à la base (moi j'en ai 15), combiné au fait qu'en utilisant la propriété RowSource pour charger la ListBox on ne peut pas modifier les données (comme me l'a indiqué @BrunoM45).
J'ai donc cherché des solutions pour forcer l'acceptation de 15 colonnes dans une ListBox et ensuite utilisé la propriété Additem + une boucle pour charger ma ListBox.
Je peux donc modifier les valeurs de ma BDD depuis mon Userform.
Il me reste encore un petit détail : mon entête n'apparaît plus dans ma ListBox (Allez, je pars à sa recherche...Si vous voyez pourquoi, je suis preneur
Ci dessous le code que je partage :
Private Sub UserForm_Initialize()
'Afficher un format prédéfini dans une zone de texte
TextBox1.Text = "JJ/MM/AAAA"
TextBox6.Text = "JJ/MM/AAAA"
Dim Sh As Worksheet
Set Sh = ThisWorkbook.Sheets("Equipements")
Dim i As Integer
Dim j As Integer
'Forcer l'acceptation de 15 colonnes dans la listbox
With Me.ListBox1
.ColumnCount = 15
.List = Range("A1").Resize(1, .ColumnCount).Value: .Clear
'Définir les dimensions de chaque colonne
.ColumnWidths = "30 pt;100 pt;150 pt;150 pt;120 pt;90 pt;100 pt;110 pt;120 pt;120 pt;110 pt;120 pt;120 pt;80 pt;130 pt"
'Charger les données dans la listbox
For i = 10 To Range("A" & Rows.Count).End(xlUp).Row
Me.ListBox1.AddItem
For j = 1 To 15
Me.ListBox1.List(i - 10, j - 1) = Cells(i, j)
Next j
Next i
End With
End SubSalut LeBlédard225
Il me reste encore un petit détail : mon entête n'apparaît plus dans ma ListBox
A+