[RESOLU] Modifier BDD depuis ligne sélectionnée dans ListBox

exene

XLDnaute Accro
Bonjour,

J'essaye de gérer les indisponibilité d'un parc de véhicules. Les informations contenues doivent pouvoir être modifiées (retard livraison d'une pièce, ETC). J'ai crée un userform (appelé par la macro modif) avec un ComboBox contenant la liste des véhicules sans doublon et une ListBox qui récapitule toutes les interventions pour un même véhicule.
J'aimerais en sélectionnant une ligne faire apparaître les informations dans des textbox, pouvoir les modifier et mettre à jour la BDD après validation.

Ci-joint un fichier démo.

Merci.
 

Pièces jointes

  • CalendBcarV1.xlsm
    43 KB · Affichages: 72

Modeste

XLDnaute Barbatruc
Salut Pascal :) (j'espère que tu vas mieux)
Bonjour Theze,

Une technique que tu peux utiliser est d'ajouter une 4e colonne à ta ListBox. Dans cette nouvelle colonne (que tu peux masquer), tu stockes le n° de ligne, en même temps que les autres données: dans la Sub ComboBox1_Change, il suffit d'ajouter Me.ListBox1.List(i, 3) = c.Row après avoir ajouté une colonne supplémentaire
De cette manière, tu peux connaître le n° de ligne concernée à tout moment avec quelque chose comme:
MsgBox "Ligne concernée = " & ListBox1.List(ListBox1.ListIndex, 3) (à préférer à ton Find ... je partage l'avis de Theze à ce sujet)
 

exene

XLDnaute Accro
Bonjour à tous,

Désolé pour cette réponse tardive mais j'ai continué à faire des recherches. J'ai délaissé Excel depuis plusieurs mois et je me suis rendu compte d'une perte de concentration.

These et Modeste, je retiens l'idée d'ajouter une ligne pour une meilleure lecture

Dranreb, je reconnais bien là votre patte. Le code fonctionne parfaitement. La navigation dans la ListBox est très fluide. Il me reste à trouver une méthode simple pour modifier la base de données depuis les TextBox.

@+
 

Modeste

XLDnaute Barbatruc
Salut,

These et Modeste, je retiens l'idée d'ajouter une ligne pour une meilleure lecture
Si j'ai dit ça, je devais être "un peu bu" ;)

J'ai illustré en pièce jointe ce que je tentais d'expliquer. J'ai ajouté un exemple de syntaxe pour modifier une enregistrement, au clic sur le "CommandButton" (c'est pour ça que la date en B5 est modifiée)

Attention: en colonne C, il y avait un =AUJOURDHUI() qui avait tendance à se recopier automatiquement dans les autres cellules de la colonne.
 

Pièces jointes

  • CalendBcarV1 (exene).xlsm
    39.3 KB · Affichages: 74

Dranreb

XLDnaute Barbatruc
Bonjour.

Pour ma version, ajoutez dans la déclaration Private en tête …, LCou As Long
Utilisez le à la place du L local dans la Sub ListBox1_Click, et ajoutez la Sub CommandButton1_Click :
VB:
Private Sub ListBox1_Click()
Dim TDon(), TLBx(), N&, C&
LCou = TLgn(ListBox1.ListIndex + 1)
TDon = LO.ListRows(LCou).Range.Value
For C = 1 To 3: Me("TextBox" & C).Text = TDon(1, C): Next C
End Sub

Private Sub CommandButton1_Click()
Dim TDon(),  C&
'If LCou = 0 Then ???
TDon = LO.ListRows(LCou).Range.Value
For C = 2 To 3: TDon(1, C) = CDate(Me("TextBox" & C).Text): Next C
LO.ListRows(LCou).Range.Value = TDon
End Sub
 
Dernière édition:

exene

XLDnaute Accro
Bonjour,

Ecarté du forum par des contrôles médicaux, j'ai pris connaissance des vos solutions depuis peu.

Modeste : votre code me parle car il ressemble à ce que je lis sur le forum.

Dranreb : j'ai fait de nombreux essais, le fonctionnement est très fluide et rapide. A moi de comprendre la déclaration des variables.

Merci de votre aide.

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 046
Messages
2 084 854
Membres
102 688
dernier inscrit
Biquet78