J'ai un code me permettant (en A1) de mettre en gras le mot "Résultat : " et de l'associer au résultat d'une cellule si cette cellule est remplie (ex : Résultat : 30 dossiers).
Mon premier problème est le suivant : si j'indique une valeur dans la cellule (F1) le mot "résultat : " devient en gras et le reste en format normal. Or, si je change la valeur de F1, tout le texte se met en gras. Je n'arrive pas à trouver ce que je manque...
La 2e chose que je me demande est la suivante : Si je souhaite reproduire cette démarche, mais pour plusieurs cellules (F2, F3, F4, etc) avec un résultat en A2, A10, A11, etc) (toujours avec le mot Résultat : en gras. qu'elle serait la meilleure chose à faire?
voici mon code et un fichier test
VB:
Private Sub Worksheet_Calculate()
Dim str1 As String, str2 As String
str1 = "Resultats : "
str2 = Range("E1")
If (Range("f1")) = Empty Then
Range("A1").Value = ""
'MsgBox "cell f1 is empty"
Else
Range("A1").Value = str1 & str2 'concatenate strings
Range("A1").Characters(1, 9).Font.Bold = True
End If
End Sub
Ps : j'utilise la fonction Calculate, car la valeur de la Cellule sera obtenue à l'aide d'une formule et fonction Change ne fonctionne qu'avec une entrée manuelle.
Merci pour ta réponse, mais je ne semble pas en mesure de mettre en gras le mot Résultat seulement et de laisser le reste en format normal. De plus je n'aurai pas seulement des nombres à écrire. À moins que je m'y prenne mal...
[avis personnel]
Mets toute la cellule en gras.
Je suis adepte du principe K.I.S.S donc dans le cas présent je m'abstiendrais d'utiliser du VBA.
Mais bon, c'est ton classeur et ta façon de faire.
[/avis personnel]
[avis personnel]
Mets toute la cellule en gras.
Je suis adepte du principe K.I.S.S donc dans le cas présent je m'abstiendrais d'utiliser du VBA.
Mais bon, c'est ton classeur et ta façon de faire.
[/avis personnel]
Et si vraiment du VBA il faut dégoupiller, alors je pourrai pondre un truc de ce genre au débotté
Code:
Private Sub Worksheet_Change(ByVal T As Range)
If T.Address = "$E$1" Then
x = T.Value2
If Len(x) Then
Application.EnableEvents = False
[A1].Value = "Résultat: " & x
[A1].Characters(1, 10).Font.Bold = -1
[A1].Characters(11, 9 * 9).Font.Bold = 0
Application.EnableEvents = True
End If
End If
End Sub
Et si vraiment du VBA il faut dégoupiller, alors je pourrai pondre un truc de ce genre au débotté
Code:
Private Sub Worksheet_Change(ByVal T As Range)
If T.Address = "$E$1" Then
x = T.Value2
If Len(x) Then
Application.EnableEvents = False
[A1].Value = "Résultat: " & x
[A1].Characters(1, 10).Font.Bold = -1
[A1].Characters(11, 9 * 9).Font.Bold = 0
Application.EnableEvents = True
End If
End If
End Sub
Merci ça fonctionne très bien! Si je souhaite utiliser la fonction Worksheet_Calculate() quels changement dois-je apporter au code? J'obtiens l'erreur variable objet ou variable de bloc With non défini...
En fait, la valeur de la cellule $E$1 sera extraite d'une base de donnée en fonction d'un numéro de dossier. Je voudrais ensuite que la procédure automatise cela pour différentes données afin de créer un rapport client.
Pour la procédure Change, cette dernière ne fonctionne pas si la valeur de la cellule est le résultat d'une formule. C'est la raison pour laquelle j'utilise la procédure Calculate.