![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
bonjour
dans cette macro,j'ai integre une ligne permettant de convertir les minuscules en majuscules;seulement la macro met longtemps a s'executer.je pense qu'il s'agit d'un probleme de conception de la macro,mais je ne sais pas comment l'ecrire autrement: Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Application.ScreenUpdating = False If Intersect(Target, Range('d3:g115')) Is Nothing Then Exit Sub For Each cell In Range('d3:g115') If cell.Value = '' Then cell.Offset(0, 1).ClearContents 'effacement cell.Offset(0, 2).ClearContents 'effacement cell.Offset(0, 3).Clear 'effacement End If If cell.Offset(0, 3).Value = 'rou' Then 'mefc cell.Offset(0, 3).Font.ColorIndex = 3 'mefc cell.Offset(0, 3).Interior.ColorIndex = 3 'mefc ElseIf cell.Offset(0, 3).Value = 'ros' Then 'mefc cell.Offset(0, 3).Font.ColorIndex = 22 'mefc cell.Offset(0, 3).Interior.ColorIndex = 22 'mefc ElseIf cell.Offset(0, 3).Value = 'b' Then 'mefc cell.Offset(0, 3).Font.ColorIndex = 19 'mefc cell.Offset(0, 3).Interior.ColorIndex = 19 'mefc End If cell.Value = UCase(cell.Value) 'minuscules en majuscules Next cell End Sub je cherche depuis pas mal de temps,mais pas de solution merci pour l'aide michel33 |
|
| ANNONCES | |||
|
|
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
salut,
j'ai observé la même chose que toi éric. ( 452 cellules pour être précis ) Donc par rapport a cela le tps de traitement me parai assez aproprié. Ce n'est d'ailleur par spécialement le UCase qui prend énormement de tps, c'est juste que cela fais pas mal de traitement d'un coup... |
|
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
bonjour eric
cette macro sert a effacer 3 cellules sur la meme ligne si la premiere cellule est vide(ex:si d3 est vide alors e3,f3 et g3 se vident automatiquement) la deuxieme partie de la macro est une mise en forme conditionnelle des cellules de la colonne 'g'(suivant le texte rentré la cellule prend une couleur differente la derniere partie est la mise en majuscule dans les colonnes d,e et f voila donc les fonctions de la macro;si tu veux plus de renseignements,pas de probleme. merci de t'occuper de mon probleme A+ michel33 |
|
|
|
#7 (permalink) |
|
XLDnaute Accro
Date d'inscription: mars 2005
Messages: 1 286
|
Bonjour michel33 Eric S et Arnaud
est-ce que ceci fait l'affaire ? Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If Intersect(Target, Range('d3:g115')) Is Nothing Then Exit Sub
Range('B8:D115').SpecialCells(xlCellTypeBlanks).EntireRow.Delete
For Each cell In Range('E8:E' & Range('D65536').End(xlUp).Row)
With cell
Select Case .Value
Case 'rou'
icolor = 3
Case 'ros'
icolor = 22
Case 'b'
icolor = 19
End Select
.Select
.Font.ColorIndex = icolor
.Interior.ColorIndex = icolor
End With
Next cell
End Sub
|
|
|
|
|
|
#9 (permalink) |
|
Guest
Messages: n/a
|
bonjour
pas dispo ces dernières heures remarques 1/ si tu ne veux travailler que sur la ligne dont tu pointes la cellule en D essaie en modifiant tes lignes If Intersect(Target, Range('d3:d115')) Is Nothing Then Exit Sub 'For Each cell In Range('d3:g115') ' mise en commentaire 'Next Cell ' mise en commentaire 2/ si tu veux mettre à jour ta zone une fois de temps en temps crée un bouton et affecte ta macro, afin qu'elle ne s'exécute pas à chaque sélection A+ |
|
|
|
#12 (permalink) |
|
Guest
Messages: n/a
|
re
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Application.ScreenUpdating = False If Intersect(Target, Range('d3:d115')) Is Nothing Then Exit Sub If Target.Value = '' Then Target.Offset(0, 1).ClearContents 'effacement Target.Offset(0, 2).ClearContents 'effacement Target.Offset(0, 3).Clear 'effacement End If If Target.Offset(0, 3).Value = 'rou' Then 'mefc Target.Offset(0, 3).Font.ColorIndex = 3 'mefc Target.Offset(0, 3).Interior.ColorIndex = 3 'mefc ElseIf Target.Offset(0, 3).Value = 'ros' Then 'mefc Target.Offset(0, 3).Font.ColorIndex = 22 'mefc Target.Offset(0, 3).Interior.ColorIndex = 22 'mefc ElseIf Target.Offset(0, 3).Value = 'b' Then 'mefc Target.Offset(0, 3).Font.ColorIndex = 19 'mefc Target.Offset(0, 3).Interior.ColorIndex = 19 'mefc End If Target.Value = UCase(Target.Value) 'minuscules en majuscules End Sub A+ |
|
|
|
#13 (permalink) |
|
Guest
Messages: n/a
|
merci ERIC S de passer autant de temps sur mon pb
si j'essaie ta macro,il faut revenir sur une case de la coloneD pour valider les modifs,ce qui est genant ci-joint mon fichier(avec ses imperfections) afin que tu puisse voir ce que je veux A+ michel33 |
|
|
|
#14 (permalink) |
|
Guest
Messages: n/a
|
RE
Il n'y a pas de fichier joint et pour moi le WE se termine, je bosse à 250kms de chez moi, avec très peu de possibilités de connexions forum envoie moi le fichier sur eric.seigneur@freesbee.fr, ma famille fera suivre effectivement il faut comprendre ce que tu veux en aveugle je te propose un autre essai, remets If Intersect(Target, Range('d3:g115')) Is Nothing Then Exit Sub la macro marchera sur n'importe quelle cellule entre d3 et G115 mais seulement au niveau de la cellule pointée A+ |
|
|
|
#15 (permalink) |
|
Guest
Messages: n/a
|
merci ERIC S pour ta disponibilité ce WE
pour le fichier joint,ildepassait un peu les 50ko donc iln'asurement pas du etre transmis je fais un test suivant tes conseils et je te tiens au courant bonne semaine et a bientot michel33 |
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|