Code pour modifier enregistrement
Bonjour à tous
merci à vous car avec les différentes questions des un et des autres, je suis arrivé à faire la base "collection de dés" ci-jointe.
Mais mon problème : Quand je clique sur le bouton "modifier", j'arrive sur mon userform mais je n'arrive pas à faire apparaître les données et donc les modifier.
Merci de votre aide
Bonjour, bonsoir,
code de ton usfmodifier, adapté, à tester.
Dim Photo, photodos
Private Sub CboTitre_Change()
Dim I As Integer, Col As Long, lig As Long
' Numéro de ligne = Entête tableau 1 + Choix dans la liste + 1 car commence à 0
lig = 2 + Me.CboTitre.ListIndex
With Sheets("collection")
Me.TxbDept.Value = .Range("c" & lig)
Me.TxbPays.Value = .Range("f" & lig)
Me.TxbDescriptif.Value = .Range("j" & lig)
Photo = .Range("k" & lig)
Me.ImgPhoto1.Value = LoadPicture(Photo)
photodos = .Range("l" & lig)
Me.ImgPhoto2.Value = LoadPicture(photodos)
End With
End Sub
Private Sub CmdChemin1_Click()
Photo = Application.GetOpenFilename("Fichiers gif ou jpg,*.gif;*.jpg")
If Photo = False Then Exit Sub
ImgPhoto1.Picture = LoadPicture(Photo)
ImgPhoto1.Visible = True
CmdChemin1.Visible = True
End Sub
Private Sub CmdChemin2_Click()
photodos = Application.GetOpenFilename("Fichiers gif ou jpg,*.gif;*.jpg")
If photodos = False Then Exit Sub
ImgPhoto2.Picture = LoadPicture(photodos)
ImgPhoto2.Visible = True
CmdChemin2.Visible = True
End Sub
Private Sub CmdModifier_Click()
Dim CTRL As Control 'Variable pour la collection des controls
Dim I As Integer
Dim Response As Byte
'Si le User tente de change le nom de la ComboBox en Mode Modification
If Me.CboTitre.ListIndex = -1 Then
Exit Sub 'ON sort si pas de sélection
End If
'Ici un message demandant d'accepter les changement en les listant
Response = MsgBox("Acceptez vous les ajouts ? ", vbQuestion + vbOKCancel, T & " Modification de : " & Entreprises)
'Si Réponse OK on continue
If Response = vbOK Then
'ici avec la Feuille on va faire :
With ThisWorkbook.Sheets("collection")
.Range("c" & Me.CboTitre.ListIndex + 2) = Me.TxbDept ' On écrit dans chaque colonne les valeurs des différents controls
.Range("f" & Me.CboTitre.ListIndex + 2) = Me.TxbPays ' Idem
.Range("j" & Me.CboTitre.ListIndex + 2) = Me.TxbDescriptif ' Idem
.Range("k" & Me.CboTitre.ListIndex + 2) = Photo ' Idem
.Range("l" & Me.CboTitre.ListIndex + 2) = photodos ' Idem
End With 'On envoie un message de confirmation
MsgBox "Opération accomplie", vbInformation, T
'Si Réponse Annulation on envoie un message et on a rien fait
Else
MsgBox "Opération annulée", vbInformation, T
End If
Fin:
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
With Sheets("collection")
dl = .Range("A" & Rows.Count).End(xlUp).Row
For I = 2 To dl
Me.CboTitre.AddItem .Range("A" & I)
Next I
End With
End SubMerci beaucoup ça fonctionne pour remplir les cases mais pour les photos elles n'apparaissent pas et un message d'erreur s'affiche "erreur de compilation" et dans le code c'est le .value qui est en jaune (Me.ImgPhoto1.Value = LoadPicture(Photo))
J'essai des combinaisons mais ne connaissant pas trop je tatonne
frasylest a écrit :Merci beaucoup ça fonctionne pour remplir les cases mais pour les photos elles n'apparaissent pas et un message d'erreur s'affiche "erreur de compilation" et dans le code c'est le .value qui est en jaune (Me.ImgPhoto1.Value = LoadPicture(Photo))
J'essai des combinaisons mais ne connaissant pas trop je tatonne
enlève le .value et remplace par .picture
Merci beaucoup a H2SO4 pour ta rapidité et ta solution, tout fonctionne à merveille surtout avec le .picture comment ne pas y avoir pensé. Merci encore Au plaisir