Microsoft 365 Bloquer les champs de saisie de l'Userform d'Excel

Ferdin

XLDnaute Nouveau
Bonjour les amis,

J'ai un soucis. J'ai créer un userform sur Excel, sans utiliser les macros, j'aimerais bloquer certains champs dans le formulaire mais je sais pas comment faire.
J'aimerais avoir une solution même si c'est avec des macros.
En pièce jointe l'image de l'userform en question.

Merci.
Capture.PNG
 

Jacky67

XLDnaute Barbatruc
Bonjour les amis,

J'ai un soucis. J'ai créer un userform sur Excel, sans utiliser les macros, j'aimerais bloquer certains champs dans le formulaire mais je sais pas comment faire.
J'aimerais avoir une solution même si c'est avec des macros.
En pièce jointe l'image de l'userform en question.

Merci.Regarde la pièce jointe 1127269
Bonjour,
Pour bloquer la saisie sur le formulaire, par exemple le champ "N° d'ordre"
Dans la cellule de ce champ, mettre =1
Les cellules contenants une formule sont non modifiable sur ce formulaire
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
Je veux par exemple rendre le champs "numéro d'ordre" OBLIGATOIRE dans la saisie.Regarde la pièce jointe 1127305
A quelle colonne est attribuée le champs "numéro d'ordre"
Si c'est en colonne A, alors ceci dans le module de la feuille en question et attribué à un bouton.
VB:
Sub Bouton1_Clic()
    Dim C As Range
    Range("A1").Activate
    ShowDataForm
    For Each C In Range("a2:a" & Cells.Find("*", , , , xlByRows, xlPrevious).Row)
        If C = "" Then MsgBox Cells(1, C.Column) & vbLf & "Saisie obligatoire" & vbLf & "En Ligne : " & C.Row, vbInformation, "Saisie": Call Bouton1_Clic
    Next
End Sub
Il y a tout de même pas mal de limite au formulaire natif d'excel
 
Dernière édition:

dysorthographie

XLDnaute Accro
Bonjour,
Je te propose d’utiliser la propriété TAG de chaque contrôle !

Tout d'abord, nous devons établir une convention.
1) nous allons inscrire le champ XLS auquel il fait référence.
2)si le champ es obligatoire O/N
3) son format
a) D=Date
b) N=Numerique
c) V=Numerique à virgule
d) B=Booleant
e)T=texte



TextBox1.Tag= "Nom;O;T"
TextBox2.tag= "Age;O;I"
TextBox3.tag= "Prénom;O;T"
TextBox4.tag= "Décimale;N;V"

dans un module standard!
VB:
Function ValideFormulaire(This As UserForm) As Boolean
Dim I As Long
Dim TG
ValideFormulaire = True
For I = 0 To This.Controls.Count - 1
    If Trim("" & This.Controls(I).Tag) <> "" Then
        TG = Split(This.Controls(I).Tag, ";")
        If TG(1) = "O" And Trim("" & This.Controls(I)) = "" Then
            MsgBox TG(0) & vbCrLf & "Est un champ Obligatoire !", vbExclamation, "Erreur de saisie"
            ValideFormulaire = False
            This.Controls(I).SetFocus
            Exit Function
        End If
     If Trim("" & This.Controls(I)) <> "" Then
        Select Case TG(2)
        Case "N"
            If IsNumeric(Replace(Trim("" & This.Controls(I)), ".", ",")) = False Or InStr(Trim("" & This.Controls(I)), ".") <> 0 Then
                 MsgBox TG(0) & vbCrLf & "Est un champ Numerique !", vbExclamation, "Erreur de saisie"
                ValideFormulaire = False
                This.Controls(I).SetFocus
                Exit Function
            End If
        Case "D"
            If IsDate(Trim("" & This.Controls(I))) = False Or InStr(Trim("" & This.Controls(I)), "/") = 0 Then
                 MsgBox TG(0) & vbCrLf & "Est un champ Date au format jj/mm/aaaa !", vbExclamation, "Erreur de saisie"
                ValideFormulaire = False
                This.Controls(I).SetFocus
                Exit Function
            End If
         Case "I"
            If IsNumeric(Trim("" & This.Controls(I))) = False Or InStr(Trim("" & This.Controls(I)), ",") <> 0 Or InStr(Trim("" & This.Controls(I)), ".") <> 0 Then
                 MsgBox TG(0) & vbCrLf & "Est un champ numérique entier !", vbExclamation, "Erreur de saisie"
                ValideFormulaire = False
                This.Controls(I).SetFocus
                Exit Function
            End If
         Case "V"
            If IsNumeric(Trim("" & This.Controls(I))) = False Then
                 MsgBox TG(0) & vbCrLf & "Est un champ numérique décimale !", vbExclamation, "Erreur de saisie"
                ValideFormulaire = False
                This.Controls(I).SetFocus
                Exit Function
            End If
        End Select
     End If
 
    End If
Next
End Function
 

Pièces jointes

  • le champ es obligatoire.xlsm
    23.7 KB · Affichages: 7
Dernière édition:

Discussions similaires

Réponses
18
Affichages
506
Réponses
4
Affichages
329

Statistiques des forums

Discussions
311 735
Messages
2 082 025
Membres
101 873
dernier inscrit
excellllll