Erreur de propriété

Bonjour,

J'ai une Textbox sur une feuille excel qui lorsqu'elle n'est pas vide doit mettre une cellule en fond jaune et la police en gras.

J'ai une erreur d'exécution : impossible de définir la propriété Bold de la classe Font.

Private Sub TextBox1_Change()
If TextBox1 = "" Then
Range("B64").Font.Bold = False
Range("B64").Interior.ColorIndex = 0
Else
Range("B64").Font.Bold = True
Range("B64").Interior.ColorIndex = 6
End If
End Sub

Je n'arrive pas à comprendre ce qui cloche et vous remercie par avance de votre aide.

Bonjour,

et moi je n'arrive pas trop à comprendre ta textbox sur ta feuille !! est-ce bien sur ta feuille ou sur un userform ?

peux-tu nous mettre juste un extrait de ton fichier ?

Bonjour Steelson,

Non je n'ai pas d'userform. Mon fichier est trop volumineux pour le mettre.

En fait j'ai des textbox sur une feuille excel qui ont pour but d'ajouter ou d'enlever en fonction du chiffre donné une valeur sur une cellule. Lorsque ce dernier n'est pas vide, j'aimerai que la cellule correspondante a ce choix soit mise en fond jaune avec une police en gras.

J'espère que ces explications suffiront si non je vais faire un petit fichier pour pourvoir le transmettre.

Merci de ton aide

En faisant un petit fichier tout marche ce qui m'aide encore moins puisque dans le principal il affiche une erreur de propriété.

6test-1.xlsm (142.65 Ko)

Je viens de comprendre certaines cellules de la feuille sont protégées c'est pourquoi, j'ai cette erreur.

Merci steelson ton intervention m'a permis cette déduction.

Bonne journée

Génial, j'ai résolu un sujet sans rien faire ... enfin non, j'ai "aidé" à résoudre sans rien faire !!

Par contre, tu me montres un truc assez super !! je vais regarder de plus près (voir aussi comment on pourrait simplifier les macros !)

Michel

questions ...

1- Quel est l'intérêt / l'usage des TextBox sur fond bleu ? Je comprends leur effet mais je me pose la question de quand elles servent !

2- je suppose quand dans ton fichier tu as une page par mois ? et que tous les textbox et commandbutton ont fait l'objet d'une programmation individuelle !!!

En fait il est possible de trouver facilement sur quelle ligne se trouve chaque commandbutton ainsi que son "caption" + ou -, ce qui simplifie la programmation. Par ailleurs, on peut entretenir une seule feuille récap de tous les mois et n'afficher dans cette feuille avec commandbutton un mois que l'on souhaite (évite la duplication des onglets).

Chère Tompouce

1- Quel est l'intérêt / l'usage des TextBox sur fond bleu ? Je comprends leur effet mais je me pose la question de quand elles servent !

ok, j'ai compris, tout seul comme un grand !

Ton fichier est un bijou, finement ciselé, sculpté avec patience. J'imagine les heures qu'il a fallu pour le mettre en place. C'est un travail titanesque.

Je me suis penché dessus. J'ai imaginé quelques pistes de simplification. Bien sûr si ton fichier est terminé, pas besoin de le retoucher. Voici les quelques points :

- On pourrait supprimer les textbox en bleu et se servir directement de la cellule sous-jacente. 1er avantage = contrôler (facilement) que la zone est numérique et positive. 2ème avantage = mettre en surbrillance la ligne par une simple MFC. 3ème avantage quant à la mise à 0 des valeurs.

- On pourrait n'avoir qu'un seul onglet, multi-mois mais aussi multi-années, en stockant les valeurs au fur et a mesure dans un onglet "data". Avantage = légèreté de la solution, multi-année, ne pas avoir à refaire la formule de l'évolution d'un mois sur l'autre à chaque feuille

- On pourrait enfin se servir du texte du bouton (+/-) et de sa position pour détecter de quelle monnaie il s'agit et incrémenter ou décrémenter. Avantage = ne pas avoir à réécrire une macro à chaque bouton. 2 voies = avec module de classe (un peu complexe à écrire et comprendre), ou sans

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, myNewRow As ListRow

    If Intersect(Target, [quand]) Is Nothing Then Exit Sub

    Application.EnableEvents = False
    [quand] = DateSerial(Year([quand]), Month([quand]) + 1, 0)
    Set c = [Tdata[date]].Find([quand])
    If c Is Nothing Then
        Set myNewRow = Sheets("data").ListObjects(1).ListRows.Add
        myNewRow.Range(1) = [quand]
    End If
    Application.EnableEvents = True

End Sub

Private Sub CommandButton31_Click()
Dim depuis%, jusque%
    depuis = 64
    jusque = 78
    Range(Cells(depuis, "G"), Cells(jusque, "G")).ClearContents
End Sub

Private Sub CommandButton1_Click()
    Call action(Me.CommandButton1)
End Sub

Private Sub CommandButton2_Click()
    Call action(Me.CommandButton2)
End Sub

Private Sub CommandButton3_Click()
    Call action(Me.CommandButton3)
End Sub

Private Sub CommandButton17_Click()
    Call action(Me.CommandButton17)
End Sub

Private Sub CommandButton4_Click()
    Call action(Me.CommandButton4)
End Sub

Private Sub CommandButton18_Click()
    Call action(Me.CommandButton18)
End Sub

Private Sub CommandButton5_Click()
    Call action(Me.CommandButton5)
End Sub

Private Sub CommandButton19_Click()
    Call action(Me.CommandButton19)
End Sub

Private Sub CommandButton6_Click()
    Call action(Me.CommandButton6)
End Sub

Private Sub CommandButton20_Click()
    Call action(Me.CommandButton20)
End Sub

Private Sub CommandButton7_Click()
    Call action(Me.CommandButton7)
End Sub

Private Sub CommandButton21_Click()
    Call action(Me.CommandButton21)
End Sub

Private Sub CommandButton8_Click()
    Call action(Me.CommandButton8)
End Sub
Private Sub CommandButton22_Click()
    Call action(Me.CommandButton22)
End Sub

Private Sub CommandButton9_Click()
    Call action(Me.CommandButton9)
End Sub

Private Sub CommandButton23_Click()
    Call action(Me.CommandButton23)
End Sub

Private Sub CommandButton10_Click()
    Call action(Me.CommandButton10)
End Sub

Private Sub CommandButton24_Click()
    Call action(Me.CommandButton24)
End Sub

Private Sub CommandButton11_Click()
    Call action(Me.CommandButton11)
End Sub

Private Sub CommandButton25_Click()
    Call action(Me.CommandButton25)
End Sub

Private Sub CommandButton12_Click()
    Call action(Me.CommandButton12)
End Sub

Private Sub CommandButton26_Click()
    Call action(Me.CommandButton26)
End Sub

Private Sub CommandButton13_Click()
    Call action(Me.CommandButton13)
End Sub

Private Sub CommandButton27_Click()
    Call action(Me.CommandButton27)
End Sub

Private Sub CommandButton14_Click()
    Call action(Me.CommandButton14)
End Sub

Private Sub CommandButton28_Click()
    Call action(Me.CommandButton28)
End Sub

Private Sub CommandButton15_Click()
    Call action(Me.CommandButton15)
End Sub

Private Sub CommandButton29_Click()
    Call action(Me.CommandButton29)
End Sub

Private Sub CommandButton16_Click()
    Call action(Me.CommandButton16)
End Sub

Private Sub CommandButton30_Click()
    Call action(Me.CommandButton30)
End Sub
Sub action(cmd)
Dim ligne%, depuis%, jusque%
depuis = 64
jusque = 78
    ligne = (cmd.Top - Cells(depuis, 1).Top) / (Cells(jusque, 1).Top - Cells(depuis, 1).Top) * (jusque - depuis) + depuis
    Sheets("data").Range("Tdata[" & Cells(ligne, "B") & "]")([_li]) = _
        Application.Max(0, Range("Tdata[" & Cells(ligne, "B") & "]")([_li]) _
        + IIf(cmd.Caption = "+", 1, -1) * Application.Max(1, Cells(ligne, "G")))
    Cells(ligne, "G").ClearContents
End Sub

Je te soumets juste le projet que j'ai sorti à partir de ton idée ... à toutes fins utiles !

Rechercher des sujets similaires à "erreur propriete"