Autoriser l'écriture de certains mots dans textbox

  • Initiateur de la discussion Initiateur de la discussion JuanPablo
  • Date de début Date de début

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 !

J

JuanPablo

Guest
Bonjour A Tous,

Mon application permet à l'utilisateur d'écrire manuellement des variables dans une textbox après clique sur Ok si cette variable n'est pas écrite dans une autre textbox elle est ecrite dans cette dernière sinon un message s'affiche. Les variables qu'il ecrit sont V1...V64, M1...M64, R1..R64 et VN1...VN64. Et t'il possible de bloquer l'écriture de tout autre forme? Si oui quelle est la marche à suivre ?

Merci bien
 
Dernière modification par un modérateur:
Re : Autoriser l'écriture de certains mots dans textbox

enfin voila plus ce que je veux faire
Code:
Private Sub CommandButton11_Click()

Dim i As Byte

'MESSAGE D'ERREUR SI REGISTRE VIRTUEL DEJA UTILISE LORS D'AJOUT MANUEL
'Si Text box5 n'est pas vide
For i = 1 To 64
    If Trim(TextBox5.Text) <> "" And (InStr(1, "V" & i) Or InStr(1, "M" & i) Or InStr(1, "R" & i) Or InStr(1, "VN" & i)) Then
        'Si textbox2 est contenu dans TextBox4
        If InStr(1, TextBox4.Text, TextBox5.Text) > 0 Then
            MsgBox "Cette variable est déjà utilisée", vbExclamation
        Else
            TextBox4.Text = TextBox4.Text & vbLf & TextBox5.Text
        End If
        'Vider TextBox5
        TextBox5.Text = ""
    End If
    Next i

End Sub

Et rajouter que si les variables sont pas bonnes afficher un message et revenir sur la textbox. La avec ce que j'ai meme si je rentre une bonne variable rien ne s'affiche


j'ai remplacer par sa qui me semblait plus juste mais la tout est accepté meme blabla

Code:
Dim i As Byte

'MESSAGE D'ERREUR SI REGISTRE VIRTUEL DEJA UTILISE LORS D'AJOUT MANUEL
'Si Text box5 n'est pas vide
For i = 1 To 64
    If Trim(TextBox5.Text) <> "" And (InStr(1, TextBox4.Text, "V" & i) = 0 Or InStr(1, TextBox4.Text, "M" & i) = 0 Or InStr(1, TextBox4.Text, "R" & i) = 0 Or InStr(1, TextBox1.Text, "VN" & i) = 0) Then
        'Si textbox2 est contenu dans TextBox4
        If InStr(1, TextBox4.Text, TextBox5.Text) > 0 Then
            MsgBox "Cette variable est déjà utilisée", vbExclamation
        Else
            TextBox4.Text = TextBox4.Text & vbLf & TextBox5.Text
        End If
        'Vider TextBox5
        TextBox5.Text = ""
    End If
    Next i

End Sub
Je pense que le probleme vient de ma comparaison dans Instr faudrait mettre autre chose que =0
 
Dernière modification par un modérateur:
Re : Autoriser l'écriture de certains mots dans textbox

Et avec sa rien n'est autorisé ....

Code:
Dim i As Byte

'MESSAGE D'ERREUR SI REGISTRE VIRTUEL DEJA UTILISE LORS D'AJOUT MANUEL
'Si Text box5 n'est pas vide
For i = 1 To 64
    If Trim(TextBox5.Text) <> "" And (InStr(1, TextBox4.Text, "V" & i, 1) > 0 Or InStr(1, TextBox4.Text, "M" & i, 1) > 0 Or InStr(1, TextBox4.Text, "R" & i, 1) > 0 Or InStr(1, TextBox1.Text, "VN" & i, 1) > 0) Then
        'Si textbox2 est contenu dans TextBox4
        If InStr(1, TextBox4.Text, TextBox5.Text) > 0 Then
            MsgBox "Cette variable est déjà utilisée", vbExclamation
        Else
            TextBox4.Text = TextBox4.Text & vbLf & TextBox5.Text
        End If
        'Vider TextBox5
        TextBox5.Text = ""
    End If
    Next i

End Sub

de meme pour sa
Code:
Dim i As Byte

'MESSAGE D'ERREUR SI REGISTRE VIRTUEL DEJA UTILISE LORS D'AJOUT MANUEL
'Si Text box5 n'est pas vide
For i = 1 To 64
    If Trim(TextBox5.Text) <> "" And (TextBox4.Text = "V" & i Or TextBox4.Text = "M" & i Or TextBox4.Text = "R" & i Or TextBox1.Text = "VN" & i) Then
        'Si textbox2 est contenu dans TextBox4
        If InStr(1, TextBox4.Text, TextBox5.Text) > 0 Then
            MsgBox "Cette variable est déjà utilisée", vbExclamation
        Else
            TextBox4.Text = TextBox4.Text & vbLf & TextBox5.Text
        End If
        'Vider TextBox5
        TextBox5.Text = ""
    End If
    Next i
 
Dernière modification par un modérateur:
Re : Autoriser l'écriture de certains mots dans textbox

Bonjour,
Les variables qu'il ecrit sont V1...V64, M1...M64, R1..R64 et VN1...VN64. Et t'il possible de bloquer l'écriture de tout autre forme?
Regarde
VB:
Option Compare Binary

Public Sub Test2()
If Not Format(Cells(1, 1), "00") Like ("[V,M,R][0-6]#") _
    Or Format(Cells(1, 1), "00") Like ("[V,M,R]6[5-9]") Then
    MsgBox Format(Cells(1, 1), "00") & " NON VALIDE"
Else
    MsgBox Format(Cells(1, 1), "00") & " VALIDE"
End If
End Sub
à mettre dans un module

Il reste à intégrer VN et différencier 0, 00, 1, 01 ...

A+

Edit Corrigé coquille
 
Dernière édition:
Re : Autoriser l'écriture de certains mots dans textbox

Re,
Tout compte fait, si tu veux une bonne visibilité qui permettra ultérieurement de modifier aisément les appellations autorisées, je te suggère la forme suivante plutôt qu'une longue formule.
VB:
'code erronné à remplacer par celui du post #12
Ta condition
Code:
'Si textbox5 est contenu dans TextBox4
        If InStr(1, TextBox4.Text, TextBox5.Text) > 0 Then
posera un problème
si textbox5 = V2 et textbox4 contient V25
Code:
TextBox4.Text = TextBox4.Text & vbLf & TextBox5.Text
Je ne sais pas ce que tu veux en faire, mais je suis un peu surpris que ce soit récupéré sous forme de texte plutôt que dans une liste pour être trié.

A+
 
Dernière édition:
Re : Autoriser l'écriture de certains mots dans textbox

Merci de l'aide que tu m'apportes je suis désolé de pas avoir répondu plutot. Mais dans le dernier code que tu me donnes je vois pas par quoi remplacer les volatile format et target
je pense que format reste format que target sa serait plutot textbox4 et je vois que tu le met en public function pourquoi ne pas le mettre dans un private sub de la textbox 5 ou du bouton?? Merci des réponses que tu pourras m'avancer
 
Re : Autoriser l'écriture de certains mots dans textbox

Parce que si je le mets comme tu me la écrits sa ne change rien je peux écrire tout ce que je veux. Donc je pense que je dois changer quelques trucs. Merci Merci

C'est le volatile je sais pas le remplacer par quoi. Sa laisse tout passer ...
 
Dernière modification par un modérateur:
Re : Autoriser l'écriture de certains mots dans textbox

Bonjour JuanPablo,

En relisant, je m'aperçois qu'on peut simplifier. Je n'ai pas Excel sous la main pour tester, mais on peut probablement supprimer Format :
VB:
 Public Function TestValid(Target As String) As Boolean
    Application.Volatile
    TestValid = False
    If Target Like ("[V,M,R][1-9]") Then TestValid = True  'V,M,R1à9
    If Target Like ("[V,M,R][1-5]#") Then TestValid = True 'V,M,R10à59
    If Target Like ("[V,M,R]6[0-4]") Then TestValid = True 'V,M,R60à64
    
    If Target Like ("VN[1-9]") Then TestValid = True   'idem avec VN
    If Target Like ("VN[1-5]#") Then TestValid = True
    If Target Like ("VN6[0-4]") Then TestValid = True
End Function
Application.Volatile ne sert que si tu utilises la fonction (mise dans un module) pour la tester dans une feuille. Tu peux mettre directement les 7 lignes de code dans Private Sub CommandButton11_Click() si tu ne souhaites pas conserver cette souplesse.
La fonction TestValid(TextBox5.Text) renvoie VRAI si le texte saisi dans TextBox5 est valide.
Si tu n'utilises pas la fonction ,Target est à remplacer par TextBox5.Text.

A+
 
Re : Autoriser l'écriture de certains mots dans textbox

quand je met dans un module il me dit tjrs argument injustifié et si je le met dans commandbutton11 click il sais pas ce que c'est test valid
 
Re : Autoriser l'écriture de certains mots dans textbox

Re,
Mets la fonction dans un module et fais un essai dans une feuille
en A2 formule =TestValid(A1)
et teste le résultat avec plusieurs essais en A1, et éventuellement touche F9 pour recalculer.
puis dis moi ce que tu obtiens
A+
 
Re : Autoriser l'écriture de certains mots dans textbox

voila ce que je met dans commbutton11 click
Code:
Private Sub CommandButton11_Click()

Dim TestValid As Boolean
   
    TestValid = False
    If TextBox5.Text Like ("[V,M,R][1-9]") Then TestValid = True  'V,M,R1à9
   If TextBox5.Text Like ("[V,M,R][1-5]#") Then TestValid = True 'V,M,R10à59
   If TextBox5.Text Like ("[V,M,R]6[0-4]") Then TestValid = True 'V,M,R60à64
   
    If TextBox5.Text Like ("VN[1-9]") Then TestValid = True   'idem avec VN
   If TextBox5.Text Like ("VN[1-5]#") Then TestValid = True
    If TextBox5.Text Like ("VN6[0-4]") Then TestValid = True
pourquoi sa ne marche pas quand je clique sur le bouton rien ne sa passe
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour