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

Ajouter un caractere invisible (VBA)

4 réponses
Avatar
Pierre.M
Bonsoir a tous,

En colonne A je saisie des references du type 56 ou 56A, ou les nombres
sont compris entre 1 et 200 et les lettres eventuelles entre A et E
(format texte).

Est-il possible lors de la saisie, de rajouter automatiquement un 0
(zero) invisible devant les nombres inferieurs a 100? Je saisis 56 ou
56A et j'obtiens reellement 056 ou 056A, mais on ne voit pas le 0!

Ceci me permettrai de regler un probleme de tri (et de saisie par la
meme occasion) pour lequel je n'ai pas de solution satisfaisante.

Merci a vous pour la lecon, et pour toute l'aide que vous saurez m'apporter.

Pierre.M

4 réponses

Avatar
AV
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Column <> 1 Then Exit Sub
Application.EnableEvents = False
If IsNumeric(zz) Then zz = Format(zz, "000"): GoTo fin
For i = 1 To Len(zz)
If Not IsNumeric(Mid(zz, i, 1)) Then x = i - 1: Exit For
Next
zz = Format(Left(zz, x), "000") & Right(zz, 1)
fin: Application.EnableEvents = True
End Sub

AV
Avatar
Pierre.M
On 2006-08-14 09:24:06 +0200, "AV" said:

Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Column <> 1 Then Exit Sub
Application.EnableEvents = False
If IsNumeric(zz) Then zz = Format(zz, "000"): GoTo fin
For i = 1 To Len(zz)
If Not IsNumeric(Mid(zz, i, 1)) Then x = i - 1: Exit For
Next
zz = Format(Left(zz, x), "000") & Right(zz, 1)
fin: Application.EnableEvents = True
End Sub

AV


Merci AV pour tes efforts, mais ca ne fonctionne pas comme j'aimerais...
En fait le but est de mettre un 0 devant les nombres inferieurs a 100
pour que lors d'un tri j'obtienne 99-99A-99B-...-100-100A-... (j'ai
rien trouve d'autre comme idee-alphanumeriques obligent- et je ne veux
pas 2 colonnes...). Et d'autre part le 0 doit etre invisible pour ne
pas fausser le systeme de references. Le fait que ca se fasse
automatiquement permet de saisir "normalement" et evite donc d'oublier
de mettre le 0.
Ca a l'air assez confus, non?

Pierre.M

Avatar
AV
Merci AV pour tes efforts, mais ca ne fonctionne pas comme j'aimerais...
** Regarde le fichier :

http://cjoint.com/?iophpweoyW

En fait le but est de mettre un 0 devant les nombres inferieurs a 100 pour que
lors d'un tri j'obtienne 99-99A-99B-...-100-100A-... (j'ai rien trouve d'autre
comme idee-alphanumeriques obligent- et je ne veux pas 2 colonnes...).
** C'est le résultat que donnera l'exemple joint...


... Et d'autre part le 0 doit etre invisible pour ne ...
** Là j'ai un peu de mal à comprendre, le "invisible" !


... pas fausser le systeme de references.
** Sous réserve de bonne compréhension, ce problème là me semble soluble en

formatant la valeur recherchée telle qu'elle est présente dans la plage de
recherche.
Ca pourrait faire (ce n'est qu'un exemple succint) un truc du genre :
=EQUIV(TEXTE(ValeurCherchée;"000");PlageDeRecherche;0)

AV

Avatar
Pierre.M
On 2006-08-14 15:18:56 +0200, "AV" said:

Merci AV pour tes efforts, mais ca ne fonctionne pas comme j'aimerais...
** Regarde le fichier :

http://cjoint.com/?iophpweoyW


Oui, excuse moi, j'ai du faire une fausse manip' en recopiant le code.
Tu n'avais pas signale cette Sub azae()?

En fait le but est de mettre un 0 devant les nombres inferieurs a 100
pour que lors d'un tri j'obtienne 99-99A-99B-...-100-100A-... (j'ai
rien trouve d'autre comme idee-alphanumeriques obligent- et je ne veux
pas 2 colonnes...).
** C'est le résultat que donnera l'exemple joint...



C'est vrai, bien-sur...

... Et d'autre part le 0 doit etre invisible pour ne ...
** Là j'ai un peu de mal à comprendre, le "invisible" !



En fait j'aimerais que le code fonctionne comme tu l'as ecrit, mais
sans que le 0 soit visible (je tape 78A le code transforme en 078A mais
l'affichage continue d'indiquer 78A. Je ne sais pas si c'est possible
(peut-etre en ecrivant le 0 en blanc sur blanc?...).

... pas fausser le systeme de references.
** Sous réserve de bonne compréhension, ce problème là me semble

soluble en formatant la valeur recherchée telle qu'elle est présente
dans la plage de recherche.
Ca pourrait faire (ce n'est qu'un exemple succint) un truc du genre :
=EQUIV(TEXTE(ValeurCherchée;"000");PlageDeRecherche;0)


En fait dans mon contexte 078A et 78A existent bien tous les 2, mais
pour des choses differentes, et le fait de faire apparaitre un 0 devant
78A risque de creer des confusions dans l'esprit des personnes qui vont
saisir (mais dans ce tableau je n'aurai aucun "vrai" 078A, donc pas de
problemes pour rajouter un "faux" 0...Ca y est mon cote obscur revient
;-)

AV


Encore merci pour ton aide.

Pierre.M