Microsoft 365 Contrôles Validation Formulaire

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mld.sebastien

XLDnaute Junior
Bonjour,

Je cherche à finir ma Box_CLoture pour le contrôle des champs pour certaine information et vérifie si déjà clos ou pas à la validation de mon formulaire.
J'ai commencé mais je bloque sur la partis véfication dans le tableau si déjà clos.

VB:
Private Sub Cmd_Cloture_Click()
Dim Ln As Long
    If Me.TxtDateCloture = "" Then
        'TxtDateCloture.BackColor = RGB(255, 0, 0)
        MsgBox "Merci d'indiquer la date"
        TxtDateCloture.SetFocus
        Exit Sub
    
   ' ElseIf IsDate(Me.TxtDateCloture) = False Then
   '     MsgBox ("La date n'est pas correcte")
   '     TxtDateCloture.SetFocus
   ' Exit Sub
  
    ElseIf Sheets("EVT-MUSE").Range("R3").Value = "clos" Then
        'TxtDateCloture.BackColor = RGB(255, 0, 0)
        MsgBox "Deja cloturer"
        Sheets("EVT-MUSE").Range("R3").SetFocus
        Exit Sub

    
    
        With Sheets("evt-muse")
            Ln = ActiveCell.Row
            If IsDate(TxtDateCloture) Then .Cells(Ln, 19) = CDate(TxtDateCloture) '***'

            .Cells(Ln, 20) = Lst_Intervenant & " " & Text_Cloture_Description.Value
            .Cells(Ln, 18) = "clos"
            .Cells(Ln, 18).Interior.Color = RGB(146, 208, 80)
            .Cells(Ln, 18).Font.Bold = True

        End With
    End If
    Sheets("DONNEE_MACRO").Range("D25").Value = IsDate(TxtDateCloture)
    
   MsgBox "La cloture a été prise en compte."
  
      Text_NMR.Value = ""
      TxtDateCloture = ""
      Text_Cloture_Description = ""
      Lst_Intervenant.Value = ""
End Sub
 
Déjà, dans le formulaire, pourquoi ne pas lister uniquement les NMR dont le statut n'est pas clos?=> plus besoin de vérifier

regarde en PJ: j'ai rajouté un combobx qui te liste les NMR à clore
Ah oui c'est vrai que c'est mieux il faut que je regarde comment les mettres dans l'ordre du plus petit au plus grand, merci. J'avais pas penser ainsi.

Tu pourrais me dire si le bouton de cloture est correct, je voudrais qu'il cloture ma fiche certe mais qu'ils me disent aussi si j'ai des champs non remplis.
 
voir PJ
je n'ai modifié que le formulaire de cloture

1) dans la feuille EVT, les données sont sous forme de table "t_EvtMuse"
2) sur le formulaire j'ai supprimé le TextBox NMR et remplacé par le combo
3) le combo est alimenté dans le "Userform_Initialize"
4) quand tu valides, control de saisie d'une date valide et d'une description

j'ai modifié les codes pour exploiter la structure de table (ListObjects)
plus besoin de faire un do loop

dans ton formulaire de création, il faudra revoir l'insertion de ligne (il me semble que dans un autre post, je t'avais donné la solution qui exploitait aussi la table, avec du .listrows.add)
 

Pièces jointes

Ah bon çà devait pas être moi pour insertion ligne, le code je l'utilise depuis le début, mais je penser bien que celui-ci fallait le modifier, mais comme il fonctionne, j’ai pas vue cela.

J'ai fait sur la box_modification copier le la box_cloture en changer les infos mais la partis ou il y a clos j'ai changé en En cours mais celui-ci me donne les clos????
 

Pièces jointes

Effectivement, ca devait etre pour quelqu'un d'autre

pour la modif que tu as apportée: il faut bien comprendre cette ligne de code
If .ListColumns("Statut").DataBodyRange(i) <> "Clos" Then 'si la colonne Statut est <> "clos"
si la colonne "Statut" ne CONTIENT PAS "Clos" alors, on ajoute la ligne
==> si elle ne contient pas clos, c'est qu'elle contient "En Cours"

maintenant. dans le formulaire de modif
ca dépend de ce que tu souhaites modifier:==> Seulement les lignes "En Cours" ? ==> dans ce cas, pas de modif de la ligne de code

Seulement les lignes qui contiennent "Clos" ?? ==> dans ce cas il suffit de remplacer les mots
toutes les lignes? ==> suffit d'enlever le test
 
Effectivement, ca devait etre pour quelqu'un d'autre

pour la modif que tu as apportée: il faut bien comprendre cette ligne de code

si la colonne "Statut" ne CONTIENT PAS "Clos" alors, on ajoute la ligne
==> si elle ne contient pas clos, c'est qu'elle contient "En Cours"

maintenant. dans le formulaire de modif
ca dépend de ce que tu souhaites modifier:==> Seulement les lignes "En Cours" ? ==> dans ce cas, pas de modif de la ligne de code

Seulement les lignes qui contiennent "Clos" ?? ==> dans ce cas il suffit de remplacer les mots
toutes les lignes? ==> suffit d'enlever le test
Ah oui ok, j'avais pas compris comme ca je comprenais plus si contient le mot clos alors... ou si contient le mot En cours alors. OK c'est bien dans ce sens que tu me dit qui est plus correct.
 
avec deux trois modif par ci par la
regarde ta macro d'insertion de ligne
Merci beaucoup, j'ai regarder le code il fait la même chose je trouve. lollll
Par contre dans la combobox ça fonctionne mais l'orientation est inverser j'ai modifier sur le tableau trier du plus petit au plus grand mais ensuite quand je crée une fiche il prend le premier du coup j'ai deux fois le 2 a moins que je fait mal mon trie ???
 

Pièces jointes

Bonjour

la combo se remplit dans le meme ordre que la table
le mieux serait (je pense) de classer la table du plus petit au plus grand (1 en haut)
et faire l'insertion en BAS de table
==> remplacer la ligne l'insertion
.listrows.add 1 ' (le 1 spécifie la position de l'insertion)

par
.listrows.add 'aucune précision ==> insertion en bas de table

il faut donc aussi changer la ligne d'incrémentation et donc aussi changer l'enregistrement des données sur la dernière ligne
Voir PJ
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
229
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
70
Réponses
4
Affichages
470
Retour