Boucle TextBox dans feuille Excel

Kurth -  
 Kurth -
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

  1. zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   110
     
    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).
    0
  2. Kurth
     
    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?
    0
  3. zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   110
     
    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.
    0
  4. Kurth
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Kurth
     
    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
    0