TextBox avec nom personnalisé : Changer le format

Bonjour à tous,

Tout d'abord, un grand merci pour ce forum, il m'a été utile plus d'une fois lorsque j'avais des problèmes avec VBA !

Mais cette fois-ci, je coince...

Je vous explique mon problème, j'ai plusieurs TextBox sur une feuille Excel et ma macro va les renommer selon la valeur (dynamique, évidemment) d'une autre cellule Excel.

Prenons un exemple :

J'ai 7 Textbox qui s'appellent :

dureem1

dureem2

dureem3

dureem7

Le truc, c'est que mon code leur donne bien la bonne valeur mais pas au bon format !

Le format que je souhaite est le suivant : # ##0

Et le format actuel de mes TextBox : ###0,000000000

Savez-vous comment je peux changer leur format ? J'y suis depuis 1h et impossible !

Merci d'avance !

EDIT : Voici ce que j'ai tenté dernièrement mais sans succès :

For i = 1 to 7

Shapes("dureem" & i).Value = Format(Shapes("dureem" & i).Value, "#,##0.00 €")

Next

Bonjour et (même si apparemment tu es déjà un habitué) sur le forum,

J'ai peut(être une piste pour toi, ta fonction Format fonctionne visiblement, j'ai testé de mon côté pour affecter une valeur en euros à une forme, et ce code fonctionne:

ActiveSheet.Shapes(1).DrawingObject.Caption = Format(Range("a1"), "#,##0.00 €")

Pour ça je passe par DrawingObject.Caption

Essaye ceci:

Shapes("dureem" & i).DrawingObject.Caption = Format(Shapes("dureem" & i).Value, "#,##0.00 €")

Après le souci c'est que Shapes.value renvoie peut-être du texte qui n'est donc plus considéré comme valeur numérique... si besoin tu peux te servir de cdbl() pour convertir la valeur en nombre

Merci pour ta réponse rapide !

Cependant toujours le même problème

Il me dit "Erreur de compilation, Sub ou Function non définie"

Voici mon (très simple) code

Sub Macro8()
'
' Macro8 Macro
'

'
    ActiveSheet.Shapes("dureem" & i).DrawingObject.Caption = Format(Shapes("dureem" & i).Value, "# ##0")

End Sub

Merci d'avance

Bonjour,

C'est normal, il point le deuxième Shapes, car devant tu n'as pas mis ActiveSheet:

ActiveSheet.Shapes("dureem" & i).DrawingObject.Caption = Format(ActiveSheet.Shapes("dureem" & i).Value, "# ##0")

Par contre je ne me rappelle pas avoir vu une propriété Value sur une forme... Si tu passes pas DrawingObject tu peux avoir Caption qui n'est autre que le texte affiché par ta forme. Egalement, je ne suis pas sûr que ton programme trouvera ta forme avec le nom que tu veux appeler, si c'est le cas il faudra que tu passes par une boucle:

For Each forme in ActiveSheet.Shapes
    If forme.Name Like "dureem*" Then
        forme.DrawingObject.Caption = Format(forme.DrawingObject.Caption, "# ##0")
    End If
Next forme

Merci Ausecour, ton code fonctionne impec'

J'ai une dernière question... J'ai d'autres formes, qui suivent exactement le même principe sauf qu'il s'agît de minutes / secondes et cela doit être sous ce format :

hh:mm:ss

J'ai donc fait les remplacements nécessaires dans le code sauf que, mon 00:16:24 (dans ma cellule source) se transforme en 13:32:33 une fois dans la forme

Voici le code adapté :

For Each forme In ActiveSheet.shapes
    If forme.Name Like "dureem*" Then
        forme.DrawingObject.Caption = Format(forme.DrawingObject.Caption, "[$-F400]hh:mm:ss")
    End If
Next forme

Une idée ? Merci d'avance

Re,

de rien

Au fait je viens de remarquer qu'il existait une fonction FormatCurrency pour mettre quelque chose en monétaire... Pour les dates tu as :

FormatDateTime(Date,  [NamedFormat As VbDateTimeFormat = vbGeneralDate])

tu peux utiliser la variable vbLongTime pour le deuxième paramètre, la description de cette variable c'est : "Affiche une heure en utilisant le format d'heure spécifié dans les paramètres régionaux de l'ordinateur." Tu auras ainsi les heures, les minutes, les secondes

De mémoire avec Format ça comprend pas très bien : "hh:mm:ss" et ça utiliserait des centièmes d'heures, de minutes etc...

Merci pour ta réponse !

En fait, j'ai trouvé tout seul et... je suis juste un boulet...

Voici le code que j'utilisais :

Sub test()

Dim x As Integer
Dim i As Integer
Dim y As Integer

Sheets("LECTURE INTERNE").Cells(50000, 47).End(xlUp).Select

x = ActiveCell.Row
y = ActiveCell.Column

For i = 1 To 7
For y = y To y + 7

If Cells(x, y) = i Then
Sheets("AOD P2").shapes.Range(Array("radio" & i)).TextFrame2.TextRange.Characters.Text = Cells(2, y)
Sheets("AOD P2").shapes.Range(Array("dureeh" & i)).TextFrame2.TextRange.Characters.Text = Cells(x - 6, y)
Sheets("AOD P2").shapes.Range(Array("dureem" & i)).TextFrame2.TextRange.Characters.Text = Cells(x - 6, y)

End If

Next
y = 47
Next

End Sub

En fait, pour les formes dureehi et dureemi, je lui demandait d'aller chercher les mêmes données... 1h que je m'arrache les cheveux pour de inattention !

Après avoir corrigé et utilisé la bonne donnée, tout fonctionne parfaitement !

Merci beaucoup pour ton aide, c'est résolu !

Bonne journée

De rien!

bonne journée également

Rechercher des sujets similaires à "textbox nom personnalise changer format"