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

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

10 réponses

1 2
Avatar
Jacquouille
Bonsoir Pierre
Ne pourrais-tu mettre ton enregistreur de macro en marche, puis enregistrer
une macro qui consisterait à écrire 0 dans une cel, avec la couleur
invisible (blanc si fond blanc).
Tu pourrais voir le code et ensuite mettre celui-ci dans la macro d'Alain
1er, Président de la SPA ?
Ceci n'étant bien entendu qu'une suggestion.
Bonne chance.

--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/

Jacquouille.

"Pierre.M" a écrit dans le message de news:
44e35c98$0$914$
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
Salut Jacquouille,

bien sur je sais lancer l'enregistreur... etc jusqu'au code. C'est ce
que j'aurais fait en temps normal. Le probleme c'est que je ne
comprends pas la macro de AV (trop avance pour mon niveau) et que je
n'ai pas la moindre idee de quoi faire du code que j'aurais enregistre.

Je ne suis qu'un debutant autodidacte qui commence a balbutier le
language VBA et qui n'a pas d'aide dans son entourage direct pour lui
decortiquer les codes des autres ligne par ligne...

Desole de vous decevoir en vous donnant a croire que je ne demande que
des solutions cle en main. Ce n'est pas le cas et en tous cas je
progresse chaque jour grace a vous!

Merci a tous pour vos lecons.

Pierre.M


On 2006-08-16 20:15:51 +0200, "Jacquouille"
said:

Bonsoir Pierre
Ne pourrais-tu mettre ton enregistreur de macro en marche, puis
enregistrer une macro qui consisterait à écrire 0 dans une cel, avec la
couleur invisible (blanc si fond blanc).
Tu pourrais voir le code et ensuite mettre celui-ci dans la macro
d'Alain 1er, Président de la SPA ?
Ceci n'étant bien entendu qu'une suggestion.
Bonne chance.


Avatar
Jacquouille
Bonsoir
Tiens, au fait Président,
pourquoi ( If zz.Column <> 1 Then Exit Sub) et non un : For each c in range
("A1:A avec un beau derL") if ... ??
------------------
Ceci dit et écrit, je n'oserais jamais me permettre de modifier, corriger,
améliorer une macro Présidentielle.
Tout au plus, oserais-je lui sussurer à l'oreille et entre 4zieux, une
simple idée,une pensée émue....
Mais, le code pour l'encre invisible doit se mettre, AMHA ici:
zz = Format(Left(zz, x), "000") & Right(zz, 1)
zz.Select
Selection.Font.ColorIndex = 2
------------------
Même si cela marche, cela n'ira pas car il mettrait toute la cel en
"invisible".
Donc:
si gauche(zz;1) = 0:then zz.select
Selection.Font.ColorIndex = 2

Bonne chance avec ce début de piste..
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/

Jacquouille.

"Pierre.M" a écrit dans le message de news:
44e36500$0$855$
Salut Jacquouille,

bien sur je sais lancer l'enregistreur... etc jusqu'au code. C'est ce que
j'aurais fait en temps normal. Le probleme c'est que je ne comprends pas
la macro de AV (trop avance pour mon niveau) et que je n'ai pas la moindre
idee de quoi faire du code que j'aurais enregistre.

Je ne suis qu'un debutant autodidacte qui commence a balbutier le language
VBA et qui n'a pas d'aide dans son entourage direct pour lui decortiquer
les codes des autres ligne par ligne...

Desole de vous decevoir en vous donnant a croire que je ne demande que des
solutions cle en main. Ce n'est pas le cas et en tous cas je progresse
chaque jour grace a vous!

Merci a tous pour vos lecons.

Pierre.M


On 2006-08-16 20:15:51 +0200, "Jacquouille"
said:

Bonsoir Pierre
Ne pourrais-tu mettre ton enregistreur de macro en marche, puis
enregistrer une macro qui consisterait à écrire 0 dans une cel, avec la
couleur invisible (blanc si fond blanc).
Tu pourrais voir le code et ensuite mettre celui-ci dans la macro d'Alain
1er, Président de la SPA ?
Ceci n'étant bien entendu qu'une suggestion.
Bonne chance.






Avatar
JB
Bonsoir,

S'il s'agit d'effectuer un tri,il est peut être + simple de créer une
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
Modeste
Bonsour® Pierre.M avec ferveur ;o))) vous nous disiez :

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).


simple adaptation de la macro de AV ;o)))
le "zéro invisible" sera en fait alors un espace ajouté automatiquement lors de
la saisie
cette macro événementielle est a placer dans le module de feuille concernée
cette macro est commentée ...;o)))
et dans le cas présent : le code 56A sera trier devant 056A
le tri n'est pas inclu dans la macro et pourra faire l'objet d'une autre macro.
il me semble n'a pas été précisé la conduite à tenir en cas de saisie
exclusivement numérique...??

le code proposé http://cjoint.com/?iraSX3KRaj

Private Sub Worksheet_Change(ByVal target As Range)
'----on verifie que l'on est dans la colonne 1
'----et qu'une seule cellule est sélectionnée
'----sinon on ne fait rien
If target.Column <> 1 Or Selection.Count <> 1 Then Exit Sub
' si oui on désactive les évenements
Application.EnableEvents = False
' rappel de la régle de saisie énoncée (précédement)
' un nombre compris entre 0 et 200 suivi d'une lettre entre A et F
' le tri doit pouvoir se faire
' de façon alphanumerique croissante sur les 4 caractères pouvant etre saisis
' si les 3 premiers caractéres saisis sont numériques
' il n'y a rien à faire
If IsNumeric(Left(target, 3)) Then GoTo fin
' si seul les 2 premiers caracteres sont numérique
' on décale vers la droite de 1 espace
If IsNumeric(Left(target, 2)) Then
target = Chr(32) & target
Else
' si seul le premier caractere est numérique
' on décale vers la droite de 2 espaces
If IsNumeric(Left(target, 1)) Then
target = Chr(32) & Chr(32) & target
Else
' sinon on décale vers la droite de 3 espaces
target = Chr(32) & Chr(32) & Chr(32) & target
End If
End If
' on réactive les événements
fin: Application.EnableEvents = True
End Sub






--
--
@+
;o)))

Avatar
AV
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.

... 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).


On pourrait certes utiliser la bidouille de Modeste ou, comme suggéré, par
Jacquouille formater en blanc les zéros du début de la chaîne mais je me demande
comment, ultérieurement, va se faire le distinguo entre les deux "056A" ....??

Et si la saisie utilisateur se faisait par une liste de validation ou une
Combobox, ça serait pas plus sur ?

AV

Avatar
AV
Ave Secrétaire,

Tiens, au fait Président,
pourquoi ( If zz.Column <> 1 Then Exit Sub) et non un : For each c in range
("A1:A avec un beau derL") if ... ??


?? ... Comme il s'agit de tester la colonne de la cellule saisie, je vois pas
l'intérêt de boucler sur une plage...
Les boucles, moins on en fait et mieux on se porte !
Pour ce qui est du formatage en blanc du début de la chaîne on peut certes le
faire mais je pense que l'on s'engage sur un machin un tantinet cahotique.
Je pense qu'il faudrait revoir surtout la conception du truc....

AV

Avatar
Pierre.M
Merci Jacquouille pour ton debut de piste, je vais essayer d'en faire
quelque chose.

Pierre.M


On 2006-08-16 21:34:20 +0200, "Jacquouille"
said:

Bonsoir
Tiens, au fait Président,
pourquoi ( If zz.Column <> 1 Then Exit Sub) et non un : For each c in
range ("A1:A avec un beau derL") if ... ??
------------------
Ceci dit et écrit, je n'oserais jamais me permettre de modifier,
corriger, améliorer une macro Présidentielle.
Tout au plus, oserais-je lui sussurer à l'oreille et entre 4zieux, une
simple idée,une pensée émue....
Mais, le code pour l'encre invisible doit se mettre, AMHA ici:
zz = Format(Left(zz, x), "000") & Right(zz, 1)
zz.Select
Selection.Font.ColorIndex = 2
------------------
Même si cela marche, cela n'ira pas car il mettrait toute la cel en
"invisible".
Donc:
si gauche(zz;1) = 0:then zz.select
Selection.Font.ColorIndex = 2

Bonne chance avec ce début de piste..


Avatar
Pierre.M
Mon probleme en fait c'est que j'ai 2 types de donnees (56 et 56A) et a
cheval sur les centaines (de 1 a 160). D'ou probleme pour trouver une
solution satisfaisante pour un tri (il me faut les 100 apres 99 et les
A-B-C apres le nombre simple: 99/99A/99B/100/100A/100B...). Le coup du
0 devant regle le probleme.

Je vais peut-etre essayer de combiner ton ajout du 0 avec l'idee de JB
et de sa colonne provisoire. Serait-ce moins cahotique?

Merci de t'etre penche sur mon soucis et bonne journee.

Pierre.M



On 2006-08-17 09:38:45 +0200, "AV" said:

Ave Secrétaire,

Tiens, au fait Président,
pourquoi ( If zz.Column <> 1 Then Exit Sub) et non un : For each c in
range ("A1:A avec un beau derL") if ... ??


?? ... Comme il s'agit de tester la colonne de la cellule saisie, je
vois pas l'intérêt de boucler sur une plage...
Les boucles, moins on en fait et mieux on se porte !
Pour ce qui est du formatage en blanc du début de la chaîne on peut
certes le faire mais je pense que l'on s'engage sur un machin un
tantinet cahotique.
Je pense qu'il faudrait revoir surtout la conception du truc....

AV



Avatar
Pierre.M
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 une
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




1 2