Effacer Textbox avec exception

Résolu
Bonjour,
j'ai Excel 2003, j'aurai besoin de votre aide concernant une boucle pour effacer les textboxes de mon Uform

J'ai placé ce code dans un module standard :
Public Sub EffaceTextBox(ByRef UForm As UserForm)
Dim Ctrl As Control
'Boucle pour tout les contrôle de UForm
For Each Ctrl In UForm.Controls
If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = vbNullString

Next
Set Ctrl = Nothing

End Sub


Puis un bouton :
private sub effacertxt()
call EffaceTextBox
end sub


Le problème c'est que j'ai un textbox (textbox16)dans ce Uform, et je ne veux pas qu'il soit réinitialisé. J'ai essayé de mettre la propriété Locked à True mais il est quand même effacé.
Quelqu'un peut me dir quel commande mettre dans mon module pour faire en sorte que Textbox16 ne soit pas reinitialisé?

Merci!
Configuration: Windows XP
Internet Explorer 6.0

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. Pour mes checkboxs c'est résolu, erreur de syntaxe.

    Personne d'autres pour ma boucle sur le texbox ?
    1. J'ai essayé de faire ca mais ca fonctionne pas :
      Private Sub CheckBox1_Click()
      Sheets("Feuil1").Range("A1").Value = "Case 1 cochée"
      If chekbox1 = False Then Sheets("Feuil1").Range("A1").Clear
      End Sub

      Une idée?
      1. sub userform_initialize
        chekbox1=false
        end sub

        ce code te permettra de décocher un chekbox lorsque que tu activera ton userform, sinon écrit simple:
        chekbox1=false
        dans la partie de programme ou tu souhaite décocher un chekbox
        1. Je vais attendre d'autres réponses alors, merci quand même !
          Sinon est ce que tu c quelle instruction correspond à "décocher" pour un checkbox
          j'ai une fonction :
          private sub checkbox1_click()
          Sheets("Feuil1").Range("A1").Value = "Case 1 cochée"
          end sub


          Mais j'aurai besoin d'une fonction
          private sub checkbox1_unchecked?()
          Sheets("Feuil1").Range("A1").clear
          end sub </gras>

          Tu sais comment faire?

          Merci !
          1. J'utilise excel2003, c'est peut-être pour ça que ça ne fonctionne pas
            1. Comment VBA sait que "Y" correspond à un textbox ?
              Il me passe en rouge cette instruction : call EffaceTextBox & Y
              Apparement le Y le gêne !

              Ou je place ton code ?

              Merci
              1. la variable Y prend en compte dans un premier temps toutes tes textbox de 1 a 15, (textbox1,textbox2,...,textbox15)
                puis dans un deuxième temps tes textbox de 17 a la derniere
                (textbox17,textbox18,...)
                tu devrais pouvoir effacer toutes tes textbox sauf la textbox16
                1. Réctification, j'ai Excel 2000.

                  87fred je ne comprends pas ton code :)
                  Est-ce que tu peux expliquer stp ?
                  Merci
                  1. Bonjour,
                    essaye ça, ça devrai marcher:

                    For Y = 1 To 15
                    private sub effacertxt()
                    call EffaceTextBox & Y
                    Next Y
                    For Y = 17 To ...
                    private sub effacertxt()
                    call EffaceTextBox & Y
                    Next Y