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