Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formats personnalisés et VBA

2 réponses
Avatar
Ptit Louis
Bonjour,
Je souhaite que des numéros de pièces s'affichent avec un préfixe et un
nombre de chiffres définis comme paramètres.
Exemple : A 002 569 ou N° 08 975. Ces valeurs doivent toujours être des
nombres.
Les numéros sont donc 2569 ou 8975 les préfixes A ou N°, et les longueurs
d'affichage sont 6 et 5 dans les exemples ci-dessus.
Pour créer des formats personnalisés, j'ai écrit le code ci-dessous. il
fonctionne bien, sauf que pour certains préfixes (comme B, D, E, G ou AB, N)
cela ne fonctionne pas du tout. Je peux utiliser A° mais pas N°, A ou AC mais
pas AB, par exemple...
Si quelqu'un a des lumières, je suis preneur.
Merci.
Voici ce que j'ai écrit :
Sub Test()

Dim Nombre As Long
Dim Forme As Integer
Dim Longueur As String
Dim Préfixe As String
Dim i As Integer

Nombre = Range("A1").Value ' 12345
Forme = Range("B1").Value ' 9
Préfixe = Range("C1").Value & " " ' N°
Longueur = ""
For i = 1 To Forme
If i Mod 3 = 1 And i > 1 Then
Longueur = "0," & Longueur
Else
Longueur = "0" & Longueur
End If
Next i
Range("A2").Activate
ActiveCell = Nombre
Selection.NumberFormat = "0"
Selection.NumberFormat = Préfixe & Longueur
End Sub

2 réponses

Avatar
isabelle
bonjour Ptit Louis,

c'est peut être les double guillemets qui manque, par exemple :
Range("A1").NumberFormat = """N° ""0000"

isabelle

Ptit Louis a écrit :
Bonjour,
Je souhaite que des numéros de pièces s'affichent avec un préfixe et un
nombre de chiffres définis comme paramètres.
Exemple : A 002 569 ou N° 08 975. Ces valeurs doivent toujours être des
nombres.
Les numéros sont donc 2569 ou 8975 les préfixes A ou N°, et les longueurs
d'affichage sont 6 et 5 dans les exemples ci-dessus.
Pour créer des formats personnalisés, j'ai écrit le code ci-dessous. il
fonctionne bien, sauf que pour certains préfixes (comme B, D, E, G ou AB, N)
cela ne fonctionne pas du tout. Je peux utiliser A° mais pas N°, A ou AC mais
pas AB, par exemple...
Si quelqu'un a des lumières, je suis preneur.
Merci.
Voici ce que j'ai écrit :
Sub Test()

Dim Nombre As Long
Dim Forme As Integer
Dim Longueur As String
Dim Préfixe As String
Dim i As Integer

Nombre = Range("A1").Value ' 12345
Forme = Range("B1").Value ' 9
Préfixe = Range("C1").Value & " " ' N°
Longueur = ""
For i = 1 To Forme
If i Mod 3 = 1 And i > 1 Then
Longueur = "0," & Longueur
Else
Longueur = "0" & Longueur
End If
Next i
Range("A2").Activate
ActiveCell = Nombre
Selection.NumberFormat = "0"
Selection.NumberFormat = Préfixe & Longueur
End Sub



Avatar
Ptit Louis
Bonjour Isabelle,

Merci de cette excellente remarque...
Pour ceux que cela intéresse, le code devient donc:

Sub Perso()

Dim Nombre As Long
Dim Forme As Integer
Dim Longueur As String
Dim Préfixe1 As String
Dim Préfixe2 As String
Dim i As Integer

Nombre = Range("A1").Value ' 12345
Forme = Range("B1").Value ' 9
Préfixe1 = Range("C1").Value & " " ' N°
Préfixe2 = """" & Préfixe1 & """"
Longueur = ""
For i = 1 To Forme
If i Mod 3 = 1 And i > 1 Then
Longueur = "0," & Longueur
Else
Longueur = "0" & Longueur
End If
Next i
Range("A2").Activate
ActiveCell = Nombre
Selection.NumberFormat = "0"
On Error GoTo Erreur
Selection.NumberFormat = Préfixe2 & Longueur
Exit Sub
Erreur:
MsgBox "Ne fonctionne pas"
End Sub


"isabelle" a écrit :

bonjour Ptit Louis,

c'est peut être les double guillemets qui manque, par exemple :
Range("A1").NumberFormat = """N° ""0000"

isabelle

Ptit Louis a écrit :
> Bonjour,
> Je souhaite que des numéros de pièces s'affichent avec un préfixe et un
> nombre de chiffres définis comme paramètres.
> Exemple : A 002 569 ou N° 08 975. Ces valeurs doivent toujours être des
> nombres.
> Les numéros sont donc 2569 ou 8975 les préfixes A ou N°, et les longueurs
> d'affichage sont 6 et 5 dans les exemples ci-dessus.
> Pour créer des formats personnalisés, j'ai écrit le code ci-dessous. il
> fonctionne bien, sauf que pour certains préfixes (comme B, D, E, G ou AB, N)
> cela ne fonctionne pas du tout. Je peux utiliser A° mais pas N°, A ou AC mais
> pas AB, par exemple...
> Si quelqu'un a des lumières, je suis preneur.
> Merci.
> Voici ce que j'ai écrit :
> Sub Test()
>
> Dim Nombre As Long
> Dim Forme As Integer
> Dim Longueur As String
> Dim Préfixe As String
> Dim i As Integer
>
> Nombre = Range("A1").Value ' 12345
> Forme = Range("B1").Value ' 9
> Préfixe = Range("C1").Value & " " ' N°
> Longueur = ""
> For i = 1 To Forme
> If i Mod 3 = 1 And i > 1 Then
> Longueur = "0," & Longueur
> Else
> Longueur = "0" & Longueur
> End If
> Next i
> Range("A2").Activate
> ActiveCell = Nombre
> Selection.NumberFormat = "0"
> Selection.NumberFormat = Préfixe & Longueur
> End Sub
>
.