VBA Macro avec textBox variables

SpcCwb Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
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!
A voir également:

1 réponse

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