Boucle TextBox dans feuille Excel

Bonjour à tous,

mon problème est de réussir à faire une boucle en VBA sur plusieurs TextBox (au Nb de 4) dans une feuille Excel.
mes TextBox ne sont pas dans une UserForm mais dans une feuille du classeur et quand je lance le code ci dessous, j'ai une erreur 438

Code
Sub Macro1()
Dim i As Integer
For i = 1 To 4
ActiveSheet.TextBox(i).Value = ""
Next i
End Sub

Merci d'avance pour votre aide

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut

    L'erreur vient de la ligne :
    ActiveSheet.TextBox(i).Value=""
    


    Tes TextBox par défaut s'appelle TextBox1, TexBox2...
    Tu peux pas les appeler en passant i en paramètre.

    Analyse le nom des textbox, et compare le dernier caractère avec la valeur de i (auparavant, convertis le au format numeric).
    1. Je comprend la proposition mais je ne vois pas comment faire mon traitement.
      Quel serait alors le code pour faire ma boucle permettant de mettre "" en valeur dans mes textbox?
      1. Voilà plus simple :
        Sub Macro1()
          Dim i As Integer
          For i = 1 To 4
            Select Case i
              Case 1
                ActiveSheet.TextBox1.Value = ""
              Case 2
                ActiveSheet.TextBox2.Value = ""
              Case 3
                ActiveSheet.TextBox3.Value = ""
              Case 4
                ActiveSheet.TextBox4.Value = ""
            End Select
          Next i
        End Sub
        


        Suivant la valeur de i, les TexBox 1 à 4 ne contiendront rien.
        1. mon problème est réellement de gérer une boucle avec l'index des TextBox comme écrit dans mon code initial.
          ça doit être faisable puisque je trouve beaucoup de réponses qui fonctionnent pour une TextBox dans une UserForm mais pas quand elle est dans une feuille
          1. Si ça peut aider quelqu'un, j'ai trouvé ceci qui fonctionne :

            Private Sub CommandButton1_Click()
            Dim Obj As OLEObject
            Dim i as Integer

            For Each Obj In Sheets("Feuil1").OLEObjects
            If TypeOf Obj.Object Is MSForms.TextBox Then
            i = Val(Right(Obj.Name, 1))
            If i = indexAcif then
            ......
            else:
            ......
            End If
            End If
            Next Obj
            End Sub