Userform : comment modifier et supprimer un enregistrement

Bonjour

Tu travailles à l'envers

Il ne faut pas "surveiller" la destination (Me.Txt_ClubCode) mais les sources (Me.Txt_ClubLigue, Me.Txt_ClubDep et Me.Txt_ClubNom)

Remplaces ta macro actuelle par ces 3 macros

Private Sub Txt_ClubLigue_Change()
  Me.Txt_ClubCode = Me.Txt_ClubLigue & "/" & Me.Txt_ClubDep & "/" & Me.Txt_ClubNom
End Sub

Private Sub Txt_ClubDep_Change()
  Me.Txt_ClubCode = Me.Txt_ClubLigue & "/" & Me.Txt_ClubDep & "/" & Me.Txt_ClubNom
End Sub

Private Sub Txt_ClubNom_Change()
  Me.Txt_ClubCode = Me.Txt_ClubLigue & "/" & Me.Txt_ClubDep & "/" & Me.Txt_ClubNom
End Sub

Rebonsoir banzai64, le forum

Ah, merci, je venais de comprendre à l'instant même de ton message (après relecture de ton code v26).

merci

je fais les autres codes et je pose une question.

Cependant je clôture ce fil auquel tu as répondu pour ouvrir un fil avec la bonne question

et une seule question par fil

merci

cordialement

Etoile

pj: avec le code usf club modifié

Bonsoir BAnzai64; Le forum

Je ne comprends pas ce qui arrive

je viens de reprendre le fichier v26-2 dans lequel j'avais copié-collé le code que tu m'as donné

quand je mets en commentaire, les procédures dans le code de l'usf clubs

la création du club se fait correctement à la suite.

dès que je décoche les commentaires, et que j'active les 3 procédures _change,

j'ai la msgbox de la procédure du bouton valider qui s'affiche : "ne doit pas arriver".

je suis désolé d'être si mauvais, mais ça fait 2h que je suis dessus, et je ne vois pas

merci de bien vouloir m'aiguiller à nouveau sur ce problème.

cordialement

Etoile

Ce message est dans le code ci dessous

' Contrôle les données saisies
  If Me.Txt_ClubNom = "" Or Me.Txt_ClubLigue = "" Or Me.Txt_ClubDep = "" Then
    MsgBox "Nom Club, Sigle, Dép et Ligue obligatoires", vbExclamation, strAppName
    Me.Txt_ClubNom.SetFocus
    Exit Sub
  End If

    With WsBase
    If Me.Txt_ClubCode <> "" Then   ' Enregistrement existant
      Set Cel = .Columns("G").Find(what:=Me.Txt_ClubCode, LookIn:=xlValues, lookat:=xlWhole)
      If Not Cel Is Nothing Then
        If MsgBox("Voulez vous modifier l'enregistrement de " & Me.Txt_ClubNom & " " & Me.txt_ClubNum & " ?", _
                                          vbQuestion + vbYesNo, "Modification") <> vbYes Then Exit Sub
        Ligne = Cel.Row
      Else
        MsgBox "Ne doit jamais arriver"
        End
      End If
    Else                ' Enregistrement à priori non existant
      Recherche = Me.Txt_ClubLigue & "/" & Me.Txt_ClubDep & "/" & Me.Txt_ClubNom
      Set Cel = .Columns("G").Find(what:=Recherche, LookIn:=xlValues, lookat:=xlWhole)
      If Not Cel Is Nothing Then
        If MsgBox("Voulez vous modifier l'enregistrement de " & Me.Txt_ClubNom & " " & Me.txt_ClubNum & " ?", _
                                          vbQuestion + vbYesNo, "Modification") <> vbYes Then Exit Sub
        Ligne = Cel.Row
      Else
        Ligne = .Range("B" & Rows.Count).End(xlUp).Row + 1
        'Création du n° eof
        Me.txt_ClubNumenr = Application.max(.Columns("A")) + 1
      End If
    End If

Bonjour

A première vue cela semble normal que le message "Ne doit jamais arriver" s'affiche

Le code au début tenait de cette particularité que lors d'un clic dans la listbox le contrôle Me.Txt_ClubCode est initialisé avec les données de la page Excel

Donc si ce contrôle n'était pas vide, on pouvait modifier l'enregistrement correspondant

La recherche trouvait toujours, et le message n'était là que comme roue de secours pour des roues increvables (inutile)

Mais maintenant ce contrôle est initialisé par la modification des contrôles sources, ce test If Me.Txt_ClubCode <> "" Then ' Enregistrement existant n'est plus pertinent

Il faut trouver autre chose pour savoir si l'on modifie ou si l'on ajoute un enregistrement : Et je ne sais pas quoi

Car pour modifier un enregistrement il faut se baser sur quelque chose d'unique, c'était le cas pour ce contrôle, mais plus maintenant

Je vais regarder le code afin de voir si je peux trouver une solution (sans garantie)

Une petite idée

Un contrôle masquée qui contiendra le numéro de ligne lors du clic dans la ListBox, mais qui ne contiendra plus rien lors de l'appuie sur Ajouter Club+

Je me base sur ton dernier fichier

Modifications dans les macros dans l'Usf_Clubs

Private Sub Cmd_ValidClub_Click

Private Sub UserForm_Initialize()

Private Sub lst_Clubs_Click()

Private Sub Init_Club()

Private Sub Affiche_Club()

A tester

Bonsoir BAnzai64, Le forum

J'ai terminé ce jour les procédures évènementielles pour chacune des 5 usf.

Merci encore pour ton aide.

J'ai même trouvé la fonction Format() pour mettre la date en format Us

En excel, j'utilisais

=TEXTE(R4;"aaaa/mm/jj")&"-"&B4&"/"&J4&"-"&M4&"/"&C4&"-"&O4

Cependant j'ai du bloquer une info car à chaque ouverture de l'USf Perfs, le dernier licencié cliqué reste en mémoire.

Ce n'est pas grave en soi, il suffit de changer de Licencié.

Mais ça doit être un problème de réinitialisation du formulaire à l'ouverture que je n'arrive pas trouver, et à cette heure les yeux ne sont plus en face des trous...

merci pour ton aide

Cordialement

Etoile

Bonsoir Forum

Pour ceux que cela intéresse

Voici l'avancée du fichier avec entre autres la version 30 corrigeant la rechercheV de clubs

avec un test bloquant l'absence du clubs en feuille clubs

et plus de commentaires permettant au code d'être un peu plus "buvable"

il reste encore à faire alors petit à petit

Encore merci BAnzai64

Cordialement

Etoile

Rechercher des sujets similaires à "userform comment modifier supprimer enregistrement"