OVH Cloud OVH Cloud

transformer une formule en VBA

15 réponses
Avatar
Freedo
Bonjour =E0 Toutes et =E0 Tous,
Lorsque je'entre dans la colonne D une s=E9rie de chiffres=20
et lettres, j'aimerais que le format se fasse=20
automatiquement.
exemple : je saisi dans la cellule D66 ceci 4B0001123412345
et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne=20
Comment transformer cette formule en VBA afin=20
d'automatiser le format d'affichage de la saisie
=3DGAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-"&STXT
(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo=20

10 réponses

1 2
Avatar
Pierre CFI [mvp]
bonjour
Gauche c'est Left, STXT c'est Mid
au lieu des ; tu mets des ,
LEFT(D66,1)&"-"&MID(D66,2,1)&"-"&MID(D66,3,4)&"-"&MID(D66,7,4)&"-"&MID(D66,11,5)



--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Freedo" a écrit dans le message de news: a89501c3ebfd$96ddd700$
Bonjour à Toutes et à Tous,
Lorsque je'entre dans la colonne D une série de chiffres
et lettres, j'aimerais que le format se fasse
automatiquement.
exemple : je saisi dans la cellule D66 ceci 4B0001123412345
et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne
Comment transformer cette formule en VBA afin
d'automatiser le format d'affichage de la saisie
=GAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-"&STXT
(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo
Avatar
Freedo
Bonjour Pierre CFI,
Merci pour ta solution, mais comment présenter cela dans
une macro automatique?
merci de suivre,
Freedo
-----Message d'origine-----
bonjour
Gauche c'est Left, STXT c'est Mid
au lieu des ; tu mets des ,
LEFT(D66,1)&"-"&MID(D66,2,1)&"-"&MID(D66,3,4)&"-"&MID
(D66,7,4)&"-"&MID(D66,11,5)




--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Freedo" a écrit
dans le message de news: a89501c3ebfd$96ddd700

$
Bonjour à Toutes et à Tous,
Lorsque je'entre dans la colonne D une série de chiffres
et lettres, j'aimerais que le format se fasse
automatiquement.
exemple : je saisi dans la cellule D66 ceci
4B0001123412345

et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne
Comment transformer cette formule en VBA afin
d'automatiser le format d'affichage de la saisie
=GAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-
"&STXT

(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo


.



Avatar
Jacky
Salut freedo

Nomme tes cellules "plage" (menu insertion/nom/definir)
et lance ce code
Sub teste()
For Each c In [plage]
c.Value = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c, 3, 4) & "-" &
Mid(c, 7, 4) & "-" & Mid(c, 11, 5)
Next
End Sub

Salutations
JJ

"Freedo" a écrit dans le message news:
ad2d01c3ec07$552f3830$
Bonjour Pierre CFI,
Merci pour ta solution, mais comment présenter cela dans
une macro automatique?
merci de suivre,
Freedo
-----Message d'origine-----
bonjour
Gauche c'est Left, STXT c'est Mid
au lieu des ; tu mets des ,
LEFT(D66,1)&"-"&MID(D66,2,1)&"-"&MID(D66,3,4)&"-"&MID
(D66,7,4)&"-"&MID(D66,11,5)




--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Freedo" a écrit
dans le message de news: a89501c3ebfd$96ddd700

$
Bonjour à Toutes et à Tous,
Lorsque je'entre dans la colonne D une série de chiffres
et lettres, j'aimerais que le format se fasse
automatiquement.
exemple : je saisi dans la cellule D66 ceci
4B0001123412345

et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne
Comment transformer cette formule en VBA afin
d'automatiser le format d'affichage de la saisie
=GAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-
"&STXT

(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo


.



Avatar
freedo
Bonjour Jacky,
bien que ta solution fonctionne, cela implique que je
doive actionne la macro moi-meme et de plus il va
reformater toute la plage à chaque fois.
Ce qui à déjà été formaté ne doit plus l'être.
donc c'est uniquement la cellule active dans la colonne D
qui devrait se formater dès que l'on saisi les chiffres
dans la cellule.
Peux-tu voir un peu plus ? merci
Freedo
-----Message d'origine-----
Salut freedo

Nomme tes cellules "plage" (menu insertion/nom/definir)
et lance ce code
Sub teste()
For Each c In [plage]
c.Value = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c,
3, 4) & "-" &

Mid(c, 7, 4) & "-" & Mid(c, 11, 5)
Next
End Sub

Salutations
JJ

"Freedo" a écrit
dans le message news:

ad2d01c3ec07$552f3830$
Bonjour Pierre CFI,
Merci pour ta solution, mais comment présenter cela dans
une macro automatique?
merci de suivre,
Freedo
-----Message d'origine-----
bonjour
Gauche c'est Left, STXT c'est Mid
au lieu des ; tu mets des ,
LEFT(D66,1)&"-"&MID(D66,2,1)&"-"&MID(D66,3,4)&"-"&MID
(D66,7,4)&"-"&MID(D66,11,5)




--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Freedo" a écrit
dans le message de news: a89501c3ebfd$96ddd700

$
Bonjour à Toutes et à Tous,
Lorsque je'entre dans la colonne D une série de chiffres
et lettres, j'aimerais que le format se fasse
automatiquement.
exemple : je saisi dans la cellule D66 ceci
4B0001123412345

et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne
Comment transformer cette formule en VBA afin
d'automatiser le format d'affichage de la saisie
=GAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-
"&STXT

(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo


.




.




Avatar
Chris MICHEL
Dans le code de ta feuille (clic droit sur l'onglet /
visualiser le code) colle le code suivant:

private sub worksheet_change(byval target as range)

if target.column=4 and target.row then



-----Message d'origine-----
Bonjour Jacky,
bien que ta solution fonctionne, cela implique que je
doive actionne la macro moi-meme et de plus il va
reformater toute la plage à chaque fois.
Ce qui à déjà été formaté ne doit plus l'être.
donc c'est uniquement la cellule active dans la colonne D
qui devrait se formater dès que l'on saisi les chiffres
dans la cellule.
Peux-tu voir un peu plus ? merci
Freedo
-----Message d'origine-----
Salut freedo

Nomme tes cellules "plage" (menu insertion/nom/definir)
et lance ce code
Sub teste()
For Each c In [plage]
c.Value = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c,
3, 4) & "-" &

Mid(c, 7, 4) & "-" & Mid(c, 11, 5)
Next
End Sub

Salutations
JJ

"Freedo" a écrit
dans le message news:

ad2d01c3ec07$552f3830$
Bonjour Pierre CFI,
Merci pour ta solution, mais comment présenter cela dans
une macro automatique?
merci de suivre,
Freedo
-----Message d'origine-----
bonjour
Gauche c'est Left, STXT c'est Mid
au lieu des ; tu mets des ,
LEFT(D66,1)&"-"&MID(D66,2,1)&"-"&MID(D66,3,4)&"-"&MID
(D66,7,4)&"-"&MID(D66,11,5)




--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Freedo" a écrit
dans le message de news: a89501c3ebfd$96ddd700

$
Bonjour à Toutes et à Tous,
Lorsque je'entre dans la colonne D une série de chiffres
et lettres, j'aimerais que le format se fasse
automatiquement.
exemple : je saisi dans la cellule D66 ceci
4B0001123412345

et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne
Comment transformer cette formule en VBA afin
d'automatiser le format d'affichage de la saisie
=GAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-
"&STXT

(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo


.




.

.






Avatar
Chris MICHEL
Désolé pour le bug, j'appuie sur Tab par réflexe et je me
retrouve à valider mon message avant de le terminer (je
suppose que ça te donne confiance quant à mes capacité à
t'aider...)

je disais donc:

private sub worksheet_change(by target as range)

if target.column =4 and target.row > 2 then
target.Value = Left(target, 1) & "-" & Mid(target, 2,
1) & "-" & Mid(target, 3, 4) & "-" & Mid(target, 7, 4) & "-
" & Mid(target, 11, 5)

end sub

cette macro se lance dès que la feuille est modifiée mais
n'agit que si la case se situe en D à partir de la
troisième ligne. J'ai récupéré le code de Jacky tel quel
car il semblait juste et je n'ai rien testé, tu devras
peut-être bricoler un peu.

Bonne chance,

Chris.



-----Message d'origine-----
Bonjour Jacky,
bien que ta solution fonctionne, cela implique que je
doive actionne la macro moi-meme et de plus il va
reformater toute la plage à chaque fois.
Ce qui à déjà été formaté ne doit plus l'être.
donc c'est uniquement la cellule active dans la colonne D
qui devrait se formater dès que l'on saisi les chiffres
dans la cellule.
Peux-tu voir un peu plus ? merci
Freedo
-----Message d'origine-----
Salut freedo

Nomme tes cellules "plage" (menu insertion/nom/definir)
et lance ce code
Sub teste()
For Each c In [plage]
c.Value = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c,
3, 4) & "-" &

Mid(c, 7, 4) & "-" & Mid(c, 11, 5)
Next
End Sub

Salutations
JJ

"Freedo" a écrit
dans le message news:

ad2d01c3ec07$552f3830$
Bonjour Pierre CFI,
Merci pour ta solution, mais comment présenter cela dans
une macro automatique?
merci de suivre,
Freedo
-----Message d'origine-----
bonjour
Gauche c'est Left, STXT c'est Mid
au lieu des ; tu mets des ,
LEFT(D66,1)&"-"&MID(D66,2,1)&"-"&MID(D66,3,4)&"-"&MID
(D66,7,4)&"-"&MID(D66,11,5)




--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Freedo" a écrit
dans le message de news: a89501c3ebfd$96ddd700

$
Bonjour à Toutes et à Tous,
Lorsque je'entre dans la colonne D une série de chiffres
et lettres, j'aimerais que le format se fasse
automatiquement.
exemple : je saisi dans la cellule D66 ceci
4B0001123412345

et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne
Comment transformer cette formule en VBA afin
d'automatiser le format d'affichage de la saisie
=GAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-
"&STXT

(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo


.




.

.






Avatar
Jacky
ou un autre exemple

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Add = ActiveCell.Address
ad = Mid(Add, 2, 1)
c = ActiveCell.Value
If ad = "D" And c <> "" Then
c = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c, 3, 4) & "-" & Mid(c, 7,
4) & "-" & Mid(c, 11, 5)
rep = MsgBox("Voulez-vous modifier la cellule " & Add & " en: " & c,
vbYesNo, "Confirmation")
If rep = 6 Then ActiveCell.Value = c
End If
End Sub

Salutations
JJ

"freedo" a écrit dans le message news:
b65201c3ec7c$3e787f50$
Bonjour Jacky,
bien que ta solution fonctionne, cela implique que je
doive actionne la macro moi-meme et de plus il va
reformater toute la plage à chaque fois.
Ce qui à déjà été formaté ne doit plus l'être.
donc c'est uniquement la cellule active dans la colonne D
qui devrait se formater dès que l'on saisi les chiffres
dans la cellule.
Peux-tu voir un peu plus ? merci
Freedo
-----Message d'origine-----
Salut freedo

Nomme tes cellules "plage" (menu insertion/nom/definir)
et lance ce code
Sub teste()
For Each c In [plage]
c.Value = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c,
3, 4) & "-" &

Mid(c, 7, 4) & "-" & Mid(c, 11, 5)
Next
End Sub

Salutations
JJ

"Freedo" a écrit
dans le message news:

ad2d01c3ec07$552f3830$
Bonjour Pierre CFI,
Merci pour ta solution, mais comment présenter cela dans
une macro automatique?
merci de suivre,
Freedo
-----Message d'origine-----
bonjour
Gauche c'est Left, STXT c'est Mid
au lieu des ; tu mets des ,
LEFT(D66,1)&"-"&MID(D66,2,1)&"-"&MID(D66,3,4)&"-"&MID
(D66,7,4)&"-"&MID(D66,11,5)




--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Freedo" a écrit
dans le message de news: a89501c3ebfd$96ddd700

$
Bonjour à Toutes et à Tous,
Lorsque je'entre dans la colonne D une série de chiffres
et lettres, j'aimerais que le format se fasse
automatiquement.
exemple : je saisi dans la cellule D66 ceci
4B0001123412345

et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne
Comment transformer cette formule en VBA afin
d'automatiser le format d'affichage de la saisie
=GAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-
"&STXT

(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo


.




.




Avatar
Freedo
Bonjour Jacky,
merci pour la réponse, et jai du modifier comme ceci pour
voir le format désiré :
'Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)
Private Sub Worksheet_Change(ByVal Target As Range)
Add = ActiveCell.Address
ad = Mid(Add, 2, 1)
c = ActiveCell.Value
If ad = "D" And c <> "" Then _
c = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c, 3, 4)
& "-" & Mid(c, 7, 4) _
& "-" & Mid(c, 11, 5)
ActiveCell.Value = c
End Sub
'
Seulement Voilà, si je reviens sur une cellule qui avait
déjà été formaté, cela reformate de nouveau et là! ce
n'est plus bon.
Une autre idée ?
Merci de suivre,
Freedo
-----Message d'origine-----
ou un autre exemple

Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)

Add = ActiveCell.Address
ad = Mid(Add, 2, 1)
c = ActiveCell.Value
If ad = "D" And c <> "" Then
c = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c, 3, 4)
& "-" & Mid(c, 7,

4) & "-" & Mid(c, 11, 5)
rep = MsgBox("Voulez-vous modifier la cellule " & Add & "
en: " & c,

vbYesNo, "Confirmation")
If rep = 6 Then ActiveCell.Value = c
End If
End Sub

Salutations
JJ

"freedo" a écrit
dans le message news:

b65201c3ec7c$3e787f50$
Bonjour Jacky,
bien que ta solution fonctionne, cela implique que je
doive actionne la macro moi-meme et de plus il va
reformater toute la plage à chaque fois.
Ce qui à déjà été formaté ne doit plus l'être.
donc c'est uniquement la cellule active dans la colonne D
qui devrait se formater dès que l'on saisi les chiffres
dans la cellule.
Peux-tu voir un peu plus ? merci
Freedo
-----Message d'origine-----
Salut freedo

Nomme tes cellules "plage" (menu insertion/nom/definir)
et lance ce code
Sub teste()
For Each c In [plage]
c.Value = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c,
3, 4) & "-" &

Mid(c, 7, 4) & "-" & Mid(c, 11, 5)
Next
End Sub

Salutations
JJ

"Freedo" a écrit
dans le message news:

ad2d01c3ec07$552f3830$
Bonjour Pierre CFI,
Merci pour ta solution, mais comment présenter cela dans
une macro automatique?
merci de suivre,
Freedo
-----Message d'origine-----
bonjour
Gauche c'est Left, STXT c'est Mid
au lieu des ; tu mets des ,
LEFT(D66,1)&"-"&MID(D66,2,1)&"-"&MID(D66,3,4)&"-"&MID
(D66,7,4)&"-"&MID(D66,11,5)




--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Freedo" a écrit
dans le message de news: a89501c3ebfd$96ddd700

$
Bonjour à Toutes et à Tous,
Lorsque je'entre dans la colonne D une série de chiffres
et lettres, j'aimerais que le format se fasse
automatiquement.
exemple : je saisi dans la cellule D66 ceci
4B0001123412345

et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne
Comment transformer cette formule en VBA afin
d'automatiser le format d'affichage de la saisie
=GAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-
"&STXT

(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo


.




.




.





Avatar
Freedo
Salut Chris,
merci pour la réponse, mais j'ai un résultat comme ca :
4-------------" & Mid(target, 11, 5)
une autre idée ?
merci de suivre,
Freedo
-----Message d'origine-----
Désolé pour le bug, j'appuie sur Tab par réflexe et je me
retrouve à valider mon message avant de le terminer (je
suppose que ça te donne confiance quant à mes capacité à
t'aider...)

je disais donc:

private sub worksheet_change(by target as range)

if target.column =4 and target.row > 2 then
target.Value = Left(target, 1) & "-" & Mid(target, 2,
1) & "-" & Mid(target, 3, 4) & "-" & Mid(target, 7, 4)
& "-

" & Mid(target, 11, 5)

end sub

cette macro se lance dès que la feuille est modifiée mais
n'agit que si la case se situe en D à partir de la
troisième ligne. J'ai récupéré le code de Jacky tel quel
car il semblait juste et je n'ai rien testé, tu devras
peut-être bricoler un peu.

Bonne chance,

Chris.



-----Message d'origine-----
Bonjour Jacky,
bien que ta solution fonctionne, cela implique que je
doive actionne la macro moi-meme et de plus il va
reformater toute la plage à chaque fois.
Ce qui à déjà été formaté ne doit plus l'être.
donc c'est uniquement la cellule active dans la colonne
D


qui devrait se formater dès que l'on saisi les chiffres
dans la cellule.
Peux-tu voir un peu plus ? merci
Freedo
-----Message d'origine-----
Salut freedo

Nomme tes cellules "plage" (menu insertion/nom/definir)
et lance ce code
Sub teste()
For Each c In [plage]
c.Value = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid
(c,



3, 4) & "-" &
Mid(c, 7, 4) & "-" & Mid(c, 11, 5)
Next
End Sub

Salutations
JJ

"Freedo" a écrit
dans le message news:

ad2d01c3ec07$552f3830$
Bonjour Pierre CFI,
Merci pour ta solution, mais comment présenter cela dans
une macro automatique?
merci de suivre,
Freedo
-----Message d'origine-----
bonjour
Gauche c'est Left, STXT c'est Mid
au lieu des ; tu mets des ,
LEFT(D66,1)&"-"&MID(D66,2,1)&"-"&MID(D66,3,4)&"-"&MID
(D66,7,4)&"-"&MID(D66,11,5)




--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Freedo" a écrit
dans le message de news: a89501c3ebfd$96ddd700

$
Bonjour à Toutes et à Tous,
Lorsque je'entre dans la colonne D une série de
chiffres




et lettres, j'aimerais que le format se fasse
automatiquement.
exemple : je saisi dans la cellule D66 ceci
4B0001123412345

et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne
Comment transformer cette formule en VBA afin
d'automatiser le format d'affichage de la saisie
=GAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-
"&STXT

(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo


.




.

.


.







Avatar
Jacky
Re..

Mon code nécessite une demande de confirmation, celle que tu as enlevé!
Si une cellule contient un valeur, quelle soit déjà formaté ou non, sera
modifiée, puisque le contrôle se fait par:
si colonne "D" et "Cellule non vide"
Une cellule dans la colonne "D" non vide peut être déjà formaté, d'ou
l'intérêt du contrôle.
rep = MsgBox("Voulez-vous modifier la cellule " & Add & "
en: " & c,

vbYesNo, "Confirmation")
If rep = 6 Then ActiveCell.Value = c
End If
Sinon je ne vois pas comment faire un contrôle automatique sur format encore

non formaté.
Mais un "grand" prendra peut-être le relais.
JJ

"Freedo" a écrit dans le message news:
be1101c3ecb5$52779430$
Bonjour Jacky,
merci pour la réponse, et jai du modifier comme ceci pour
voir le format désiré :
'Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)
Private Sub Worksheet_Change(ByVal Target As Range)
Add = ActiveCell.Address
ad = Mid(Add, 2, 1)
c = ActiveCell.Value
If ad = "D" And c <> "" Then _
c = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c, 3, 4)
& "-" & Mid(c, 7, 4) _
& "-" & Mid(c, 11, 5)
ActiveCell.Value = c
End Sub
'
Seulement Voilà, si je reviens sur une cellule qui avait
déjà été formaté, cela reformate de nouveau et là! ce
n'est plus bon.
Une autre idée ?
Merci de suivre,
Freedo
-----Message d'origine-----
ou un autre exemple

Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)

Add = ActiveCell.Address
ad = Mid(Add, 2, 1)
c = ActiveCell.Value
If ad = "D" And c <> "" Then
c = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c, 3, 4)
& "-" & Mid(c, 7,

4) & "-" & Mid(c, 11, 5)
rep = MsgBox("Voulez-vous modifier la cellule " & Add & "
en: " & c,

vbYesNo, "Confirmation")
If rep = 6 Then ActiveCell.Value = c
End If
End Sub

Salutations
JJ

"freedo" a écrit
dans le message news:

b65201c3ec7c$3e787f50$
Bonjour Jacky,
bien que ta solution fonctionne, cela implique que je
doive actionne la macro moi-meme et de plus il va
reformater toute la plage à chaque fois.
Ce qui à déjà été formaté ne doit plus l'être.
donc c'est uniquement la cellule active dans la colonne D
qui devrait se formater dès que l'on saisi les chiffres
dans la cellule.
Peux-tu voir un peu plus ? merci
Freedo
-----Message d'origine-----
Salut freedo

Nomme tes cellules "plage" (menu insertion/nom/definir)
et lance ce code
Sub teste()
For Each c In [plage]
c.Value = Left(c, 1) & "-" & Mid(c, 2, 1) & "-" & Mid(c,
3, 4) & "-" &

Mid(c, 7, 4) & "-" & Mid(c, 11, 5)
Next
End Sub

Salutations
JJ

"Freedo" a écrit
dans le message news:

ad2d01c3ec07$552f3830$
Bonjour Pierre CFI,
Merci pour ta solution, mais comment présenter cela dans
une macro automatique?
merci de suivre,
Freedo
-----Message d'origine-----
bonjour
Gauche c'est Left, STXT c'est Mid
au lieu des ; tu mets des ,
LEFT(D66,1)&"-"&MID(D66,2,1)&"-"&MID(D66,3,4)&"-"&MID
(D66,7,4)&"-"&MID(D66,11,5)




--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Freedo" a écrit
dans le message de news: a89501c3ebfd$96ddd700

$
Bonjour à Toutes et à Tous,
Lorsque je'entre dans la colonne D une série de chiffres
et lettres, j'aimerais que le format se fasse
automatiquement.
exemple : je saisi dans la cellule D66 ceci
4B0001123412345

et le format devrait donner 4-B-0001-1234-12345
bien que la formule cidessous fonctionne
Comment transformer cette formule en VBA afin
d'automatiser le format d'affichage de la saisie
=GAUCHE(D66;1)&"-"&STXT(D66;2;1)&"-"&STXT(D66;3;4)&"-
"&STXT

(D66;7;4)&"-"&STXT(D66;11;5)
Merci de suivre,
Freedo


.




.




.





1 2