VBA

Fermé
Saannaa Messages postés 1 Date d'inscription dimanche 2 mars 2014 Statut Membre Dernière intervention 2 mars 2014 - 2 mars 2014 à 20:28
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 14 mars 2014 à 07:53
bonsoir
voici mon problème
j'ai un projet en VBA qui consiste a réaliser un jeu (l'interface du jeu est un tableau de text box chaque joueur va remplir une case par un chiffre, le gagnant est celui qui aura le nombre le plus elevé de combinaisons de 10)
d'une part je veux changer la police d'un text box (j'ai pas trouver l'instruction exacte pour le faire) d'autre par je veux imposer aux joueurs de ne pas ecrire dans le text box qu'un seul chiffre( e dois m'assurer que c'est un entier et que la longueur du texte ne depasse pas 1 (je ne sais pas s'il y a une possibilité de mettre un bip si le joueur essaie d'ecrire quelque chose d'autre par exemple )

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
3 mars 2014 à 14:50
Bonjour,

Pour changer la police d'un textbox :
TextBox1.Font = "Times New Roman"

ou :
TextBox1.Font = "Mistral"

Tu peux placer ce code, par exemple, dans l'événement Initialize de l'UserForm :
Private Sub UserForm_Initialize()
TextBox1.Font = "Times New Roman"
'TextBox1.Font = "Mistral"
End Sub


Ensuite, pour limiter la saisie à un seul caractère dans le textbox, toujours dans l'événement initialize de l'UserForm, régler la propriété MaxLength à 1 :
Private Sub UserForm_Initialize()
TextBox1.Font = "Times New Roman"
TextBox1.MaxLength = 1
End Sub


Pour éviter la saisie d'un autre caractère qu'un chiffre, tu peux jouer avec l'événement Change() du TextBox, comme ceci :
Private Sub TextBox1_Change()
If Not IsNumeric(TextBox1) Then TextBox1 = ""
End Sub

1
Bonsoir,
Merci bien pour la réponse ces codes marchent avec un seul text box mais mon problème c'est que j'ai un tableau de text box "tab(i,j) " je veux parcourir ce tableau et si une case a changé de valeur je la teste si elle est numérique ou nn
j'ai essayé avec ce code
If (IsNumeric(unite(i, j).Text) = False) Then
MsgBox("veuilez entrer un chiffre de 0 à 9 ")
unite(i, j).Text = ""
mais ça marche uniquement pour la première case tab(0,0)
j'ai essayé avec la boucle for ça ne marche pas car il existe des cases encore vides dans mon tableau
s'il y a une façon de savoir si une case a changé de valeur ça pourra m'aider peut-être
j'ai essayé avec
if (tab(i,j).modified = true) then .....
ça n'a pas marché :\
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
14 mars 2014 à 07:53
Bonjour,

Si j'ai bien compris...
Tu veux boucler sur tous tes textbox et voir lesquels ont changés, s'ils ont changés, tu veux vérifier leur valeur? C'est bien ça?

Tu peux tenter une boucle comme celle-ci si les n° des textbox se suivent (de 5 à 124 dans l'exemple, à adapter) :
Code à placer dans un bouton de commande (par exemple) :
Dim i As Long

For i = 5 To 124 'Boucle sur les textbox, du textbox5 au textbox124
  If Me.Controls("TextBox" & i).Tag = "X" Then
    If Not IsNumeric(TextBox1) Then
      'ici ton code si le textbox n'est pas numérique
    Else
      'ici ton code si le textbox est numérique
    End If
  End If
Next i

Dans l'événement Change() de tous tes textbox :

Private Sub TextBox5_Change()
TextBox5.Tag = "X"
End Sub
Private Sub TextBox6_Change()
TextBox6.Tag = "X"
End Sub
Private Sub TextBox7_Change()
TextBox7.Tag = "X"
End Sub


De toutes façons, cette méthode dans le cas que je décris n'est pas la bonne. C'est un élément de réponse. Il nous faut en savoir plus, voire voir ton fichier.
0