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

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 !

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

Dernière édition:
- 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

Réponses
6
Affichages
183
  • Question Question
Réponses
5
Affichages
191
Retour