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 Sub

Je 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 Sub

Ce 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 Sub

Votre 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 Sub

Si 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 Sub

Avec 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 :)

Rechercher des sujets similaires à "formulaire ajout modification dossiers"