Bonjour à tous,
Dans une feuille, j'ai 2 jeux de colonnes, 5 input et 5 output. Les colonnes output sont simplement une réplique des valeurs des colonnes input. Ce que je veux, c'est pouvoir sélectivement remplir ou vider les cellules ouput, et cela indépendamment pour chaque ligne. Pour cela, j'ai ajouté pour chaque ligne un simple bouton (contrôle de formulaire) qui agit comme un bouton de commande en lisant le texte du bouton, et qui remplira ou videra alternativement la ligne output contenant le bouton.
Cette macro fonctionne et semble faire exactement ce que je voulais. Cependant, inexplicablement pour certaines lignes, la macro renvoie une erreur d'exécution "13" lors de mon premier 'If'. Apparemment, un problème sur le type de variable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Sub Button_Auto() Dim Btn As Object Dim LRow As Integer Dim LName As Variant Dim LRangeInp As String Dim LRangeOut As String LName = Application.Caller Set Btn = ActiveSheet.Shapes(LName) 'Find row that button resides in LRow = Btn.TopLeftCell.Row LRangeInp = "AC" & CStr(LRow) & ":AG" & CStr(LRow) LRangeOut = "AO" & CStr(LRow) & ":AS" & CStr(LRow) 'Change range values If Btn.TextFrame.Characters.Text = CStr("") Then Btn.TextFrame.Characters.Text = "X" Range(LRangeOut).Value = Range(LRangeInp).Value Else Btn.TextFrame.Characters.Text = "" Range(LRangeOut).Value = "" End If End Sub
J'ai trouvé ailleurs que cela pouvait être causé par une erreur (#Valeur!) dans la feuille de calcul.
J'ai donc essayé d'ajouter cette ligne avant le premier 'If':
Cela a réglé le problème d'arrêt du code, mais maintenant le bouton reste inefficace pour ces lignes problématiques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Not IsError(Btn.TextFrame.Characters.Text) Then
Pourriez-vous m'aider à faire fonctionner cette macro tout le temps?
Merci d'avance pour vos conseils.
Partager