Sélectionner automatiquement un TextBox

Bonjour, à tous,

Je suis sur un projet d'une petite compta. Je voudrai lors de la saisie d'un N° de compte en fonction du 1er chiffre du compte le curseur se place soit en "Débit ou en Crédit"

Exp dans le "TextBox35" qui correspond au n° d'u compte d'exploitation je suis en classe 7 (710000) le curseur après la tabulation se positionne sur le TextBox "Crédit". Si je suis en classe 6, après la tabulation le curseur se positionne sur" Débit".

Quelqu'un aurait-il le solution?

Merci d'avance

Amicalement

Noel


Re à tous,

Je m'excuse j'ai oublié de vous poster le classeur.

Merci de votre compréhension

Noel

26classeur1.zip (10.98 Ko)

Bonjour,

Tu peux utiliser une procédure de ce type :

Private Sub TextBox35_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Left(Me.TextBox35, 1) = 7 Then
        Me.TextBox13.SetFocus
    ElseIf Left(Me.TextBox35, 1) = 6 Then
        Me.TextBox12.SetFocus
    End If
End Sub

A+

Bonjour Frangy,

Voilà j'ai essayé j'ai omis de te dire qu'avec le n) du compte il existe derrière tout ça de l'alphanumérique

exp : 613000 Locations

Comment faire pour prendre en compte que le premier chiffre c'est dire "6" dans cet exemple

Merci de ton aide

Amicalement

Noel

C'est déjà le cas avec le code proposé.

If Left(Me.TextBox35, 1) = 6 Then ==> Si le premier caractère dans la TextBox35 est "6", alors ...

A+

Re Frangy,

Je suis désolé après essai me curseur ne se positionne pas le textbox concerné.

C'est pour cela que j'ai du te rappeler que derrière ces comptes il existe une chaîne de caractères

Textbox.set focus ne fonctionne pas. Le curseur pour te dire il disparaît donc il ne se positionne pas dans aucun textbox.

Merci de m'aider

Amicalement

Noel


Re,

Avec ce code ci-dessous, j'arrive à voir le curseur qui se positionne sur les textbox concerné d'une manière très furtive et il disparaît aussitôt.

Private Sub TextBox35_AfterUpdate()
If Left(Me.TextBox35, 7) = 7 Then
        Me.TextBox13.SetFocus
    ElseIf Left(Me.TextBox35, 7) = 6 Then
        Me.TextBox12.SetFocus
    End If
End Sub

@+

Noel

De mon coté, je fais le test avec ton classeur et je ne rencontre aucun problème.

Si je saisis "613000 Locations", le focus passe sur Débit après appui sur la touche de tabulation.

Si je saisis "713000 Locations", le focus passe sur Crédit après appui sur la touche de tabulation.

Je suis étonné que tu constates un fonctionnement différent de ton coté (si on effectue le test sur un même classeur).

A+

Bonjour à tous,

Bonjour Fragngy,

Effectivement, je comprends que chez toi ça fonctionne. Chez moi également mis que lorsque je rentre 1 seul chiffre

Exp quand je rentre le chiffre 6 et la tabulation le curseur passe en textbox12.

Mais voilà le plan comptable est composé de 6 chiffres + une chaîne de caractères et là avec la tabulation il ne passe plus en textbox 12, il ne suit même plus l'ordre de tabulation.

J'ai contourné un peu le problème avec ton code j'ai mis le tetxbox invisible comme cela je me trompe pas sur la sélection du textbox

If Left(Me.TextBox35, 7) = 7 Then

Me.TextBox13.visible=true

Me.TextBox12.visible=false

ElseIf Left(Me.TextBox35, 7) = 6 Then

Me.TextBox12.visible=false

Me.TextBox13.visible=true

End If

Penses-tu que cela poserai un problème?

Merci

Amicalement

Noel

Bonjour,

Je ne comprends pas pourquoi tu écris :

If Left(Me.TextBox35, 7) = 7 Then

Pour tester le premier caractère, il faut écrire :

If Left(Me.TextBox35, 1) = 7 Then

A+

Re,

Oui cela j'ai bien compris mais j'ai remis "1" c'est toujours pareil.

Ne tiens pas compte de ce chifre j'avais un essai et j'ai oublié de le retiré.

@+

noel

Si tu appliques bien l'instruction

If Left(Me.TextBox35, 1) = 6 Then ....

tu dois obtenir le résultat attendu puisque le test est effectué sur le premier caractère du contenu de la TextBox35.

Le fait qu'il y ait des caractères alphanumériques à la suite de ce chiffre ne change rien.

J'ai effectué le test avec le texte "613000 Locations" sans problème, l'instruction reconnait bien le chiffre 6.

A+

Re,

Oui je comprends. Sur le fichier que je t'ai fourni effectivement il fonctionne.

Mais je le mets dans mon projet de comptabilité il ne fonctionne pas ne me demande pas pourquoi, je ne saurai te dire.

Je rajoute le code que tu m'as donné. Comme j'ai d'autres codes entre autres "Change" je ne sais pas si ce code pose problème.

Qu'est-ce que tu penses?

Si c'est le cas je t'envoi le code en question

Private Sub textbox35_Change()

Saisie.Width = 800

Dim n As Long, y As Integer, ii As Long, x As Long, z As Long

Dim Tableau_A() As String

Dim Première_Ligne As Integer, Dernière_Ligne As Integer, Texte_Référence As String

Texte_Référence = LCase(TextBox35)

y = Len(Texte_Référence)

n = Range("A" & Rows.Count).End(xlUp).Row

ReDim Tableau_A(n)

For ii = 1 To n

Tableau_A(ii) = LCase(CStr(Left(Cells(ii, 1), y)))

Next ii

ii = 0

For ii = 1 To n

If Tableau_A(ii) = Texte_Référence Then z = z + 1

Next ii

On Error Resume Next

x = Application.WorksheetFunction.Match(CStr(Texte_Référence), Tableau_A, 0) - 1

Première_Ligne = x

Dernière_Ligne = x + z - 1

Sheets("plancomptable").Select

If Première_Ligne = 0 Then

ListBox3.Clear 'S'il n'y a pas de correspondance, on vide la ListBox

Else

If Première_Ligne = Dernière_Ligne Or Dernière_Ligne < Première_Ligne Then

ListBox3.List() = Sheets("PlanComptable").Range("A" & Première_Ligne & ":A" & Première_Ligne + 1).Value 'S'il n'y qu'une correspondance, il faut un code spécial

Me.ListBox3.RemoveItem (1)

Else

ListBox3.List() = Sheets("PlanComptable").Range("A" & Première_Ligne & ":A" & Dernière_Ligne).Value 'Sinon on peut placer une liste dans la ListBox

End If

End If

Sheets("saisiebq").Range("e19") = TextBox35

If Left(Me.TextBox35, 1) = 7 Then

Me.TextBox13.Visible = True

Me.TextBox12.Visible = False

Label8.Visible = True

Label13.Visible = False

'Me.TextBox13.SetFocus

ElseIf Left(Me.TextBox35, 1) = 6 Then

Me.TextBox12.Visible = True

Me.TextBox13.Visible = False

Label13.Visible = True

Label8.Visible = False

'Me.TextBox12.SetFocus

End If

End Sub

Dans ce code c'est un système de recherche dans une listbox qui me permet de ne as me tromper quand je dois entrer les données des comptes. Dans le textbox 35 je commence à entrer les premiers chiffres des compte et dans ma listbox il me sélectionne que les compte commençant par les chiffres et de là je peux sélectionner dans la listbox le compte. Il m'inscrit le choix de ce compte dans le textbox35 et même si j'utilise la tabulation pour passer dans le texbox suivant 12 ou 13 en fonction de débit ou crédit

@+

Noel

Bonjour,

Désolé mais ton code ne permet pas de comprendre pourquoi tu n'obtiens pas un fonctionnement correct.

Par contre, j'ai bien compris que je ne dispose pas du même classeur que toi.

Il est inutile que je continue à me creuser les méninges, je n'ai aucun don de voyance.

Bon courage.

Bonjour Frangy,

Je te disais que j'avais trouvé la solution avec .Visible sur les textbox et ça fonctionne.

Comme cela j'ai pas à faire des erreurs de saisie. quand c'est "7" le textbox crédit est visible tandis que le textbox débit est invisible.

A ce moment on peut plus se tromper.

Je pense que ton code me servira pour d'autres projets

En tout cas merci beaucoup de ton aide toujours si précieuse.

Amicalement

Noel

Rechercher des sujets similaires à "selectionner automatiquement textbox"