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 Sub

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

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

Rechercher des sujets similaires à "code modifier enregistrement"