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 )

image

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

image

La modification de la première cellule

image

Entraine immédiatement l'exécution de ceci

image

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 = True

Que l'on teste dans la sub Listbox1_click,

Sub ListBox1_Click()
If FlgModif = True Then Exit Sub

mais 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 Sub

Salut LeBlédard225

Il me reste encore un petit détail : mon entête n'apparaît plus dans ma ListBox

c'est l'inconvénient quand tu alimentes ta ListBox via une boucle, pas le choix

A+

Rechercher des sujets similaires à "modifier bdd via userform"