VBA

Saannaa Messages postés 1 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. saannaa
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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