Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Contrôles Validation Formulaire

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
 

vgendron

XLDnaute Barbatruc
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
 

Pièces jointes

  • EVT 2023 (1).xlsm
    57 KB · Affichages: 1

mld.sebastien

XLDnaute Junior
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.
 

vgendron

XLDnaute Barbatruc
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

  • EVT 2023 (1).xlsm
    65.5 KB · Affichages: 4

mld.sebastien

XLDnaute Junior
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

  • EVT 2023.xlsm
    62.9 KB · Affichages: 2

vgendron

XLDnaute Barbatruc
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
 

mld.sebastien

XLDnaute Junior
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.
 

mld.sebastien

XLDnaute Junior
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

  • EVT 2023.xlsm
    56.4 KB · Affichages: 2

vgendron

XLDnaute Barbatruc
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

  • EVT 2023 (3).xlsm
    58.7 KB · Affichages: 1

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…