Formulaire ajout/modification dossiers
Bonjour,
J'ai créé un formulaire d'ajout/modification de dossiers sur le modèle en pièce jointe. J'ai des problèmes avec ce formulaire :
1-Problème 1: lorsque je clique sur "Nouveau" pour ajouter un nouveau dossier, je n'ai pas le temps d'écrire mes informations que déjà une ligne est ajoutée et le formulaire se ferme (évidemment, dans le modèle ça ne fonctionne pas comme ça !).
2-Problème 2: Lorsque je clique sur "Modifier", j'obtiens un message d'erreur : "Objet spécifié introuvable" avec cette ligne surlignée (dans le module Main):
Set TBoxes(k).TBox = Ajout_Dossier.Controls("TextBox" & k)Code associé :
Je ne comprends pas pourquoi tout ça ne fonctionne pas car j'ai copié exactement le modèle (en ajoutant quelques modifications mineures)..Auriez-vous une idée ?
Merci d'avance :)
Formulaire qui a des erreurs :
Formulaire dont j'ai copié le modèle :Bonjour Annanas,
Comme vous l'indiquez vous n'avez pas copié exactement le modèle
puisque dans le bouton "Nouveau" vous avez mis les lignes de création de la nouvelle ligne !
Ce code est à mettre dans le bouton "Valider", vérifiez
@+
J'étais absent aujourd'hui, je regarderai ça demain.
A+
Bonjour,
Désolé je ne prends pas en charge vos modifications qui dénaturent complètement le modèle.
A+
Bonjour,
Merci pour votre aide et pour le temps passé à étudier mon code. Je ne comprends pas bien lorsque vous dites que j'ai mis un bout de code d'ajout de ligne dans "Nouveau" et non "Confirmer".
en effet, lorsque l'on compare les codes du bouton "Nouveau" :
*Dans le modèle :
Private Sub cmdNew_Click()
Me.cmdModify.Enabled = True: Me.cmdRemove.Enabled = True
usfStatus = Status.NewRec
RAZ ' Efface les valeurs des TextBox
OppositeStatus ' Inverse la valeur booléenne des boutons d'action
Me.frmQuidam.Caption = "Enr. N° : ***"
If TData.ListRows.Count > 1 Then
iR = TData.ListRows.Count + 1
ElseIf cboRech.Value = "" Then
iR = 1
End If
tb1.SetFocus
End Sub
* Dans l'essai :
Private Sub cmdNew_Click()
Me.cmdModify.Enabled = True: Me.cmdRemove.Enabled = True
usfStatus = Status.NewRec
RAZ ' Efface les valeurs des TextBox
OppositeStatus ' Inverse la valeur booléenne des boutons d'action
Application.ScreenUpdating = False
If LO.ListRows.Count > 1 Then
iR = LO.ListRows.Count + 1
ElseIf Nom_Dossier.Value = "" Then
iR = 1
End If
'Mise en forme de la ligne ajoutée (comme la mise en forme conditionnelle)
'Mise en forme de cases
Application.ScreenUpdating = True
'7-Message de confirmation'
Me.Hide
Unload Me
End SubJe ne vois pas ce qui a changé !
De même pour les boutons "Confirmer :
*Dans le modèle:
Private Sub cmdConfirm_Click()
If IsFieldsFilled Then
WriteRecord
TriNomPrenom
OppositeStatus
End If
If Me.cboRech.ListIndex = -1 Then
Me.cmdModify.Enabled = False: Me.cmdRemove.Enabled = False
End If
Unload Me 'Libère l'USF afin de laisser le choix (CRUD)
ShowSaisie 'Retour Consultation
End Sub
*Dans l'essai :
Private Sub cmdConfirm_Click() 'confirmer
If IsFieldsFilled Then
WriteRecord
'TriNomPrenom pour le tri des dossiers plus tard
OppositeStatus
End If
If Me.Nom_Dossier.ListIndex = -1 Then
Me.cmdModify.Enabled = False: Me.cmdRemove.Enabled = False
End If
Unload Me 'Libère l'USF afin de laisser le choix (CRUD)
ShowSaisie 'Retour Consultation
End SubCe sont les mêmes !
Pouvez-vous préciser s'il vous plait ...? Merci :)
bonjour,
Désolé ce n'est pas moi qui ai fait cette remarque et je ne me suis pas penché sur cette question.
Je comprend votre déception mais vos modifications m'obligeraient à reprendre à zéro l'ensemble du travail et je n'y suis pas du tout disposé actuellement.
A minima ce que je peux vous dire c'est que pour la question 2 le problème vient du fait qu'il n'existe pas de TextBox0 dans votre usf mais je n'ai pas été plus loin dans l'analyse.
A+
Bonjour Ananas
Désolé de vous contredire, mais dans les fichiers donnés au post #1
Bouton "Nouveau" - > Code du modèle
Private Sub cmdNew_Click()
Me.cmdModify.Enabled = True: Me.cmdRemove.Enabled = True
usfStatus = Status.NewRec
RAZ ' Efface les valeurs des TextBox
OppositeStatus ' Inverse la valeur booléenne des boutons d'action
Me.frmQuidam.Caption = "Enr. N° : ***"
If TData.ListRows.Count > 1 Then
iR = TData.ListRows.Count + 1
ElseIf cboRech.Value = "" Then
iR = 1
End If
tb1.SetFocus
End SubVotre code
Private Sub cmdNew_Click()
Me.cmdModify.Enabled = True: Me.cmdRemove.Enabled = True
usfStatus = Status.NewRec
RAZ ' Efface les valeurs des TextBox
OppositeStatus ' Inverse la valeur booléenne des boutons d'action
Application.ScreenUpdating = False
If LO.ListRows.Count > 1 Then
iR = LO.ListRows.Count + 1
ElseIf Nom_Dossier.Value = "" Then
iR = 1
End If
'5-Mise en forme de la ligne ajoutée (comme la mise en forme conditionnelle)
For j = 1 To 14
With LO.Range(iR, j)
.Borders.Color = RGB(0, 0, 0) 'Bordures noires
.Borders.Value = 1 'Bordure de taille moyenne
.Font.Name = "Times New Roman" 'Police
.Font.Size = 12 'Taille du texte
.Font.Bold = False 'Ecriture fine
.HorizontalAlignment = xlHAlignCenter 'Texte centré horizontalement
.VerticalAlignment = xlVAlignCenter 'Texte centré verticalement
.Interior.ColorIndex = 2 'le fond est blanc
End With
LO.Range(iR, 1).Font.Bold = True 'Nom du dossier en gras
Next j
'4-Cases grisées lorsque des cases de dates sont inutilisées (invisibles)si changement de cadre règlementaire ; et mise en forme conditionnelle
'Dans l'onglet planning :
For k = 1 To 9 'Les 3 premières et les 2 dernières textboxes sont visibles tt le tps
If Me.Controls("TextBox" & k).Visible = False Then 'Si les cases de dates ne sont pas visibles
LO.Range(iR + 1, k + 5).Interior.Color = RGB(92, 92, 92) 'Le fond est gris foncé
LO.Range(iR + 1, k + 5).Value = "" 'Textbox vide
ElseIf Me.Controls("TextBox" & k).Visible = True Then 'Si la case est visible, on a une mise en forme conditionnelle
End If
Next k
Application.ScreenUpdating = True
'7-Message de confirmation'
Confirmation = MsgBox(Prompt:="Dossier ajouté avec succès !", Buttons:=vbOKOnly, Title:="Ajout d'un dossier réussi")
Me.Hide
Unload Me
'Dossier.SetFocus 'Sélection de la textbox par défaut
End SubSi vous trouvez qu'il est identique, vous avez un sérieux souci
Bonjour à tous,
Merci beaucoup pour vos réponses. J'avais ajouté, comme dit dans le post #1, des modifications qui me semblaient mineures (changement de police, etc ...). Bref, j'ai tout enlevé comme vous m'avez dit, et maintenant ça fonctionne déjà mieux !
Par contre, j'ai maintenant la même erreur pour les 2 boutons modifier et nouveau, où j'obtiens le message d'erreur "Objet spécifié introuvable", dans la portion de code suivante :
Dim k 'initialisation des TextBox pour le module de classe -> retour consultation quand on a fini une action
'TriNomPrenom
For k = 0 To 9
Set TBoxes(k) = New ClasseTB
Set TBoxes(k).TBox = Ajout_Dossier.Controls("tb" & k)
Next k
With Ajout_Dossier
.Tag = i
.Show
End With
End SubAvec la ligne suivante surlignée :
Set TBoxes(k).TBox = Ajout_Dossier.Controls("tb" & k)Auriez-vous une idée ? Je ne vois vraiment pas ...
Merci encore :)
Hier à 17:53
A minima ce que je peux vous dire c'est que pour la question 2 le problème vient du fait qu'il n'existe pas de TextBox0 dans votre usf mais je n'ai pas été plus loin dans l'analyse.
...Il n'y a toujours pas de tb0
Bonjour,
Merci pour votre réponse, j'avais en effet oublié ce point. J'ai corrigé un peu tout l'algorithme, et il "fonctionne" à peu près, à quelques détails près ...
*Concernant le bouton d'ajout de dossier :
1-L'ajout de dossier ne fonctionne pas ... Je ne comprends vraiment pas pourquoi (cf mes posts précédents ..)
2-On ne peut pas écrire dans les textboxes quand on veut ajouter un nouveau dossier (je ne comprends pas du tout pourquoi. J'avais enlevé le tb0.SetFocus qui empêchait d'écrire dans la tb0 mais c'est tout !)
*Concernant le bouton de modification de dossier :
1-On ne peut écrire que 10 caractères dans la tb0 (où l'on met le nom du dossier) et je ne vois pas du tout d'où ça vient dans le code ! j'ai pourtant épuré les modules "Main" et "Classe TB".
2-Les lignes sont décalées. Lorsque l'on sélectionne un dossier, les données qui se mettent à jour ont le mauvais index. J'ai pourtant testé toutes les lignes qui portent sur les index, dans chaque module, et ça ne fonctionne pas .. Pourtant, dans le code, c'est bien toujours l'indice iR qui fait foi. Et par ailleurs, je n'ai pas touché l'iR par rapport au modèle..
Auriez-vous une petite idée ...?
Merci d'avance :)
Bonsoir,
Désolé mais ici s'arrête ma participation à votre projet.
Même avec des TextBox renommés l'ensemble reste assez éloigné du projet initial et je n'ai pas l'intention de m'y pourrir la fin des vacances, d'autant que votre concept de renommer le dossier de recherche me semble d'autant plus fumeux que vous avez supprimé la colonne iD qui seule pouvait faire le joint entre les données ReadRecord et WriteRecord. Ce concept de clef d'Index on dit aussi (clef primaire) est ici essentiel et je ne vis pas comment vous pouvez faire l'impasse dessus.
De plus il y a une idée de ReadBis sur un l'évènement change du Combo qui ne me dit rien qui vaille.
En bref, j'arrive à me situer dans les méandres de la prog quand elle se situe dans un cadre relativement conventionnel mais là j'ai un peu de mal à vous suivre.
A+
Bonjour Galopin01!
Merci beaucoup! Comme toujours, c'est dans vos messages de désespoir que vous m'aidez le plus ! Je suis finalement parvenue à mes fins.
Encore merci :)