OVH Cloud OVH Cloud

Ajouter un caractere invisible (VBA)-2

13 réponses
Avatar
Pierre.M
Bonsoir tout le monde,

Je me permets d'insister en demandant un complement de reponse.

Dans le fil "Ajouter un caractere invisible (VBA)" un peu plus bas, AV
m'a transmis une macro qui fonctionne impecablement bien pour rajouter
automatiquement un 0 devant les nombres <100 lors d'une saisie, ce qui
correspondait a la premiere partie de ma demande. Merci encore AV,
merci beaucoup.

Pour la seconde partie j'aimerais que ce 0 ne soit pas visible. Je
saisis 56A, la macro transforme en 056A mais l'affichage reste a 56A.
Je ne sais pas si cela est possible (peut-etre en ecrivant le 0 en
blanc sur blanc...?). J'aurais besoin de cela pour ne pas creer de
confusion dans l'esprit des personnes appelees a saisir ces donnees
(056A existant par ailleurs).

Si cette manip' est impossible, merci de me le dire, j'arreterai les
recherches!

Sinon, merci a tous pour vos idees. Moi je ne sais pas faire.

Pierre.M

3 réponses

1 2
Avatar
JB
Ajoute des 0 invisibles:

http://cjoint.com/?irn1baU4Fa

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
Application.EnableEvents = False
If Len(Target) < 4 Then
Target = "'" & String(4 - Len(Target), "0") & Target
End If
Target.Font.ColorIndex = 0
i = 1
Do While i < Len(Target) And Mid(Target, i, 1) = "0"
Target.Characters(Start:=i, Length:=1).Font.ColorIndex =
Target.Interior.ColorIndex
i = i + 1
Loop
Application.EnableEvents = True
End If
End Sub

JB


Bonsoir tout le monde,

Je me permets d'insister en demandant un complement de reponse.

Dans le fil "Ajouter un caractere invisible (VBA)" un peu plus bas, AV
m'a transmis une macro qui fonctionne impecablement bien pour rajouter
automatiquement un 0 devant les nombres <100 lors d'une saisie, ce qui
correspondait a la premiere partie de ma demande. Merci encore AV,
merci beaucoup.

Pour la seconde partie j'aimerais que ce 0 ne soit pas visible. Je
saisis 56A, la macro transforme en 056A mais l'affichage reste a 56A.
Je ne sais pas si cela est possible (peut-etre en ecrivant le 0 en
blanc sur blanc...?). J'aurais besoin de cela pour ne pas creer de
confusion dans l'esprit des personnes appelees a saisir ces donnees
(056A existant par ailleurs).

Si cette manip' est impossible, merci de me le dire, j'arreterai les
recherches!

Sinon, merci a tous pour vos idees. Moi je ne sais pas faire.

Pierre.M


Avatar
JB
http://cjoint.com/?iruZJvWrJw

Sub triColInter()
[b:b].Insert
For Each c In Range([A2], [a65000].End(xlUp))
x = c.Value
If IsNumeric(x) Then x = x & "@"
c.Offset(0, 1).Value = "'" & String(4 - Len(x), "0") & x
Next c
Range("A2").CurrentRegion.Select
Selection.Offset(1).Resize(Selection.Rows.Count - 1).Select
Selection.Sort Key1:=[B2]
[b:b].Delete
End Sub

Sur un autre onglet,il y a les 0 cachés ajoutés à la saisie (blanc
sur blanc)

JB


Merci JB, ton idee me semble effectivement une piste a suivre.
Probleme si je saisis 100 dans la liste je me retrouve avec mon
probleme de base dans un tri: il sera en debut de liste et pas apres
99B par exemple... D'ou cette idee de rajouter un 0!
Peut-etre une solution en combinant ta macro avec celle d'AV. Je vais
essayer ca.

Merci en tout cas pour ton truc qui peut servir par ailleurs et que je
conserve.

Bonne journee.

Pierre.M


On 2006-08-16 22:04:51 +0200, "JB" said:

Bonsoir,

S'il s'agit d'effectuer un tri,il est peut être + simple de créer u ne
colonne temporaire:

[b:b].Insert
For Each c In Range([A2], [a65000].End(xlUp))
c.Offset(0, 1).Value = String(4 - Len(c), "0") & c
Next c
Range("A2").CurrentRegion.Select
Selection.Offset(1).Resize(Selection.Rows.Count - 1).Select
Selection.Sort key1:=[B2]
[b:b].Delete

http://cjoint.com/?iqwcIfbQD3

Cordialement JB





Bonsoir tout le monde,

Je me permets d'insister en demandant un complement de reponse.

Dans le fil "Ajouter un caractere invisible (VBA)" un peu plus bas, AV
m'a transmis une macro qui fonctionne impecablement bien pour rajouter
automatiquement un 0 devant les nombres <100 lors d'une saisie, ce qui
correspondait a la premiere partie de ma demande. Merci encore AV,
merci beaucoup.

Pour la seconde partie j'aimerais que ce 0 ne soit pas visible. Je
saisis 56A, la macro transforme en 056A mais l'affichage reste a 56A.
Je ne sais pas si cela est possible (peut-etre en ecrivant le 0 en
blanc sur blanc...?). J'aurais besoin de cela pour ne pas creer de
confusion dans l'esprit des personnes appelees a saisir ces donnees
(056A existant par ailleurs).

Si cette manip' est impossible, merci de me le dire, j'arreterai les
recherches!

Sinon, merci a tous pour vos idees. Moi je ne sais pas faire.

Pierre.M






Avatar
Pierre.M
Merci à tous de vous etre investis pour mon probleme. J'ai la, matiere
a reflexions pour avancer mon projet...

Un merci special a Modeste pour avoir pris le temps de decortiquer sa
macro pour que je puisse comprendre (super!) et a JB pour m'avoir donne
(encore une fois!) la solution que je cherchais depuis des mois. Son
truc est bien moins tiré par les cheveux que la direction dans laquelle
j'essayais d'aller...

Merci encore et bon WE a tous.

Pierre.M
1 2