Limiter le nombre de chiffre dans un textbox

RONIBO

XLDnaute Impliqué
Bonjour à toutes et à tous,

Je souhaite bloquer la saisie dans un textbox à cinq caractères.

Vous avez un bout de code à me proposer.

J'ai dans mon fichier exemple un code qui permet de forcer la saisie numérique

Merci d'avance

a+
 

Pièces jointes

  • Classeur1.xlsm
    17.1 KB · Affichages: 76
  • Classeur1.xlsm
    17.1 KB · Affichages: 77
  • Classeur1.xlsm
    17.1 KB · Affichages: 87

RONIBO

XLDnaute Impliqué
Re : Limiter le nombre de chiffre dans un textbox

Bonjour,

Merci à vous deux

Je pense que je vais me pencher sur la première proposition, j'aimerais faire la même chose pour dix caractères mais un espace automatiquement entre chaque numéro
00 00 00 00 00 00

vous avez une idée?
 

job75

XLDnaute Barbatruc
Re : Limiter le nombre de chiffre dans un textbox

Bonjour RONIBO, le forum,

j'aimerais faire la même chose pour dix caractères mais un espace automatiquement entre chaque numéro

Si l'on veut que ce soit bien ce n'est pas très simple, voyez le fichier joint et le code de l'USF :

Code:
Dim kp As Boolean 'mémorise la variable

Private Sub TextBox1_KeyPress(ByVal K As MSForms.ReturnInteger)
kp = True
End Sub

Private Sub TextBox1_Change()
Static flag As Boolean
If flag Then Exit Sub
Dim s%, t$, i%, x$
With TextBox1
  s = .SelStart 'mémorise
  '---format 00 00 00 00 00---
  t = 0 & Val(Replace(.Text, " ", ""))
  For i = 1 To 10 Step 2
    x = x & " " & Val(Mid(t, i, 1)) & Val(Mid(t, i + 1, 1))
  Next
  flag = True: .Text = Mid(x, 2): flag = False
  '---sélection---
  .SelStart = s + kp * (Mid(.Text, s + 1, 1) = " ")
  .SelLength = -kp
  kp = False 'RAZ
  '---entrée dans la feuille de calcul---
  [B5].NumberFormat = "0#\ ##\ ##\ ##\ ##"
  [B5] = Val(Replace(.Text, " ", ""))
End With
End Sub

Private Sub UserForm_Initialize()
kp = True
TextBox1 = 0
End Sub
Edit : en fait les Replace sont inutiles, écrire simplement t = 0 & Val(.Text) et [B5] = Val(.Text)

A+
 

Pièces jointes

  • TextBox numéro de téléphone(1).xlsm
    25.2 KB · Affichages: 82
Dernière édition:

RONIBO

XLDnaute Impliqué
Re : Limiter le nombre de chiffre dans un textbox

Bonjour à tous,

Chapeau pour ce travail Job75 ;)

deux petites questions

je suis obligé de passer par une cellule puis le textbox peut être vide (pas de zéro) à l'initialize de l'usf?
 

job75

XLDnaute Barbatruc
Re : Limiter le nombre de chiffre dans un textbox

Bonsoir RONIBO,

Il est nécessaire qu'il y ait 00 00 00 00 00 dans la TextBox à l'ouverture de l'USF.

Mais on peut ne pas remplir la cellule à ce moment-là.

A+
 

job75

XLDnaute Barbatruc
Re : Limiter le nombre de chiffre dans un textbox

Bonjour RONIBO, le forum,

Si l'on veut qu'à l'ouverture de l'USF la TextBox prenne la valeur de B5 :

Code:
Private Sub UserForm_Initialize()
kp = Val([B5]) = 0
TextBox1 = Val([B5])
If Val([B5]) Then TextBox1.SelStart = 14
End Sub
Bonne journée.
 
Dernière édition:

RONIBO

XLDnaute Impliqué
Re : Limiter le nombre de chiffre dans un textbox

Bonjour Job75,

Merci pour ces modifications ;)

Je vais l'écrire dans une cellule grâce à un bouton après remplissage du textbox seulement, je donne plus d'info :
J'ai un formulaire sous forme d'userform, une fois complété, je le fais transférer dans des cellules, dans une base de donnée.

Mais je souhaite pas qu'il reporte le numéro dans une cellule fixe, c'est pas possible?

Puis au démarrage, la sélection commence par le numéro deux, c'est une bonne idée, parfois embêtant , on peut sélectionner le 1er numéro?
 

job75

XLDnaute Barbatruc
Re : Limiter le nombre de chiffre dans un textbox

Bonsoir RONIBO,

Voyez ce fichier (2).

L'USF est en non modal : on peut changer de cellule active même quand il est ouvert.

Nota : il n'y a aucun intérêt à prédéfinir le 1er chiffre du numéro.

Edit : ajouté Unload UserForm1 :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Unload UserForm1
UserForm1.Show 0 'non modal
End Sub
Bonne nuit.
 

Pièces jointes

  • TextBox numéro de téléphone(2).xlsm
    24.1 KB · Affichages: 69
Dernière édition:

RONIBO

XLDnaute Impliqué
Re : Limiter le nombre de chiffre dans un textbox

Bonjour Job75,

Désolé de te répondre en retard, j'avais pas trop le temps pour le vba ces temps-ci

J'explique tout depuis le début pour qu'il n'est pas de conflit.

J'ouvre l'usf ci dessous grâce à un bouton.

Sans titre.png

Je complète l'usf puis j'enregistre les données dans des cellules avec ce code :

Code:
 With Sheets("Chantiers & Clients")
        Set Cel = .Columns("A").Find(what:=Me.TBNom, LookIn:=xlValues, lookat:=xlWhole)
        If Not Cel Is Nothing Then
            If MsgBox("Le client nommé " & TBNom & " existe déjà !" & Chr(10) & Chr(10) & "Voulez-vous le remplacer ?", vbQuestion + vbYesNo + vbDefaultButton2, "Client existant") <> vbYes Then Exit Sub
            DerLigne = Cel.Row
        Else
            DerLigne = .Range("A" & Rows.Count).End(xlUp).Row + 1
        End If
        For Each Ctrl In Me.Controls
            If TypeName(Ctrl) = "TextBox" Then
                If Val(Ctrl.Tag) > 0 Then
                    If Val(Ctrl.Tag) = 3 Then
                        .Cells(DerLigne, Val(Ctrl.Tag)) = Ctrl & " " & ComboBoxVille
                    Else
                        .Cells(DerLigne, Val(Ctrl.Tag)) = Ctrl
                    End If
                End If
            ElseIf TypeName(Ctrl) = "ComboBox" Then
                If Ctrl.Tag <> "" Then
                    .Cells(DerLigne, Val(Ctrl.Tag)) = IIf(Ctrl.ListIndex = 0, "", Ctrl)
                    If Val(Ctrl.Tag) = 6 Then .Cells(DerLigne, Val(Ctrl.Tag)) = "Aucun"
                End If
            End If
        Next
        Trier
        .Visible = xlSheetVisible
        .Copy
        .Visible = xlSheetHidden
    End With
    If FichierDéjàOuvert(FichierChantierClient) = True Then
        Workbooks(FichierChantierClient).Close savechanges:=False
    End If
    With ActiveWorkbook
        With .Sheets(1)
            .Cells.Locked = True
            .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
            .EnableSelection = xlUnlockedCells
        End With
        Application.DisplayAlerts = False
        .SaveAs Filename:=RépertoirePrincipal & FichierChantierClient, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
        .Close
    End With

A l'ouverture je souhaite pas avoir les 00 00 00 00 00 dans le textbox.

J'espère que je me suis fais comprendre.

A+
 

Pièces jointes

  • Sans titre.png
    Sans titre.png
    9.1 KB · Affichages: 85
  • Sans titre.png
    Sans titre.png
    9.1 KB · Affichages: 77

grisan29

XLDnaute Accro
Re : Limiter le nombre de chiffre dans un textbox

bonsoir ronibo, Job75 et le forum

pour un textbox dédié au numéros de téléphone j'utilise ceci qui mets le textbox au format téléphone
Code:
Private Sub ACTELEPHONNE_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Me.ACTELEPHONNE.Value = Format(Me.ACTELEPHONNE.Value, "00 00 00 00 00")
End Sub

peut être suis je a coté de la demande mais tanpis
Pascal
 

job75

XLDnaute Barbatruc
Re : Limiter le nombre de chiffre dans un textbox

Bonsoir RONIBO, salut grisan29,

Vous avez eu un maximum de réponses au problème posé au post #1, voire même plus.

Si vous avez d'autres soucis précis ouvrez une autre discussion.

Le but du forum n'est pas de mener un projet jusqu'à son terme.

Bonne fin de soirée.
 

grisan29

XLDnaute Accro
Re : Limiter le nombre de chiffre dans un textbox

bonsoirJob75, Ronibo

dans l'excellent fichier que job75 t'a donné dans le post6 tu as répondu que tu ne voulais pas de "zéro"affiché mais tu n'as pas du bien regarder ce fichier car dans l'initialisation de l'usf il ne faut que mettre " " a la place du 0

Pascal
 

Discussions similaires

Réponses
17
Affichages
627
Réponses
15
Affichages
494
Réponses
13
Affichages
661

Statistiques des forums

Discussions
312 177
Messages
2 085 973
Membres
103 073
dernier inscrit
MSCHOE16