VBA Macro avec textBox variables

Fermé
SpcCwb Messages postés 65 Date d'inscription mardi 7 mai 2013 Statut Membre Dernière intervention 26 novembre 2020 - 7 mai 2013 à 09:11
Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 - 20 mai 2013 à 10:06
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 dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 37
20 mai 2013 à 10:06
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