problème de tronque

Y

yvon51

Guest
bonjour le forum

voilà mon problème:
Phibou m'a gentilment fait parvenir la macro qui suit.

"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Application.ScreenUpdating = False
For Each c In Selection
c.Value = Mid(c, 1, 30)
Next c
Application.ScreenUpdating = True
End Sub


IMPORTANT : ne pas oublier 'Application.ScreenUpdating = True'
"
celle-ci fonctionne très bien, seulement, elle ne tronque pas lorsque je quitte la cellule mais quand je reviens dessus.
secondement, elle s'applique à toute la feuille et j'aimerais qu'elle ne s'applique qu'à certaines cellules seulement.

quelqu'une ou quelqu'un pourrait-il me venir en aide.

je vous remercie tous

yvon51
 
F

fabien

Guest
Pour que ta macro ne s'applique qu'a certaine cellules il suffit que tu mette une condition IF sur le champ Target

Ex :
si tu veux appliquer ta macro sur la colonne B :

If Target.Column = 2 Then
--ton traitement
end if
 
M

michel

Guest
bonjour Yvon , Fabien et Chris

dans l'exemple ci dessous la macro s'applique uniquement à ma plage A1:D5 et la macro se declenche apres chaque modification dans la cellule

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If Not Intersect(Target, Range("A1:D5")) Is Nothing Then Target = Mid(Target, 1, 30)
Application.ScreenUpdating = False
End Sub

bonne journee
michel
 
Y

yvon51

Guest
re bonjour Michel

j'ai essayé de faire deux macros au modèle de celle que tu m'as proposé afin de contrôler deux plages de cellules avec des nombre caractères différents mais là ça ne marche pas.

comment faire?

merci
yvon
 
Y

yvon51

Guest
re bonjour Michel

j'ai essayé de faire deux macros au modèle de celle que tu m'as proposé afin de contrôler deux plages de cellules avec des nombre caractères différents mais là ça ne marche pas.

comment faire?

merci
yvon
 
M

michel

Guest
bonjour Pascal , rebonjour Yvon

Yvon , peux tu etre un peu plus clair car je ne suis pas sur d'avoir bien compris ton probleme

en attendant pour gerer deux plages differentes .....
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If Not Intersect(Target, Range("A1:D5")) Is Nothing Then Target = Mid(Target, 1, 30)'tronque apres 30 caracteres plage A1:D5
If Not Intersect(Target, Range("E1:H5")) Is Nothing Then Target = Mid(Target, 1, 15)'tronque apres 15 caracteres plage E1:H5
Application.ScreenUpdating = False
End Sub

michel
 
Y

yvon51

Guest
bonjour Pascal

pourquoi l'apéro? nous sommes des gens on ne peut plus sobres et très sérieux . hem! hem!
de plus je serais en congés toute la semaine prochaine. tiens! prend ça!

ah, ça calme! hein!

pour Michel

c'est ce que je vais faire

je vous remercie beaucoup et je souhaite good week end for you.

merci

yvon51
 
Y

yvon51

Guest
bonjour Pascal

pourquoi l'apéro? nous sommes des gens on ne peut plus sobres et très sérieux . hem! hem!
de plus je serais en congés toute la semaine prochaine. tiens! prend ça!

ah, ça calme! hein!

pour Michel

c'est ce que je vais faire

je vous remercie beaucoup et je souhaite good week end for you.

merci

yvon51
 
Y

yvon51

Guest
bonjour Pascal

pourquoi l'apéro? nous sommes des gens on ne peut plus sobres et très sérieux . hem! hem!
de plus je serais en congés toute la semaine prochaine. tiens! prend ça!

ah, ça calme! hein!

pour Michel

c'est ce que je vais faire

je vous remercie beaucoup et je souhaite good week end for you.

merci

yvon51
 

Discussions similaires

Réponses
4
Affichages
561

Statistiques des forums

Discussions
312 440
Messages
2 088 454
Membres
103 855
dernier inscrit
davignon