VBA Macro avec textBox variables

SpcCwb Messages postés 67 Statut Membre -  
Normad Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour bonjour,
Me voici avec une nouvelle difficulté (pour moi c'en est une en tout cas ).

J'essaye de coder une macro qui fait intervenir plusieurs TextBox, et j'aimerai pouvoir faire comprendre à la macro que selon si les TextBox sont vides ou non, elles doivents être utilisées.

Dans cette première macro, si la TextBoxA1 est non vide, alors une autre macro se lance, mettant en jeux la TextBoxA1. Pour pouvoir alléger mon code je me suis dit qu'il serai préférable d'utiliser un substitut (TextBoxCouleur) et de l'insérer dans une macro pouvant être utilisée pour une autre TextBox que TextBoxA1.

Sub couleur_et_taille()
If UserForm2.TextBoxA1.Value <> "" Then Call Module7.taille
    With TextBoxCouleur.Value = UserForm2.TextBoxA1.Value
    End With
If UserForm2.TextBoxB1.Value <> "" Then Call Module7.taille
    With TextBoxCouleur.Value = UserForm2.TextBoxB1.Value
    End With
...
End Sub 


Sub taille()
If UserForm2.TextBoxA2.Value <> "" Then
    Rows("5:5").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("C5").Value = UserForm2.TextBoxA2.Value
    Range("B5").Value = TextBoxCouleur.Value
    Range("A5").Value = UserForm2.TextBox1.Value
    Else: End If
...
End Sub

Lorsque je lance mes macros j'ai un message d'erreur (Objet Inconnu; pour TextBoxCouleur). Pourriez-vous m'aider à clarifier cette situation? Merci!

1 réponse

  1. Normad Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   40
     
    Si TextBoxCouleur n'est pas un objet existant ou déclaré, l'erreur est normale...
    Il faut soit déclarer un objet TextBox dans le code, soit plus simplement utiliser une variable au niveau module.

    Sans avoir testé, j'écrirais comme ça :

    Private TextBoxCouleur as String
    
    Sub couleur_et_taille()
    If UserForm2.TextBoxA1.Value <> "" Then Call Module7.taille
        TextBoxCouleur = UserForm2.TextBoxA1.Value
     
    If UserForm2.TextBoxB1.Value <> "" Then Call Module7.taille
        TextBoxCouleur = UserForm2.TextBoxB1.Value
        
    ...
    End Sub 
    
    
    
    Sub taille()
    If UserForm2.TextBoxA2.Value <> "" Then
        Rows("5:5").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxA2.Value
        Range("B5").Value = TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
    End If
    ...
    End Sub
    0