Formater cellule si pleine

Résolu/Fermé
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 - 8 janv. 2013 à 00:28
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 - 9 janv. 2013 à 12:40
Bonjour,

j'ai une macro qui encadre la cellule quand elle est remplie
Sub encadrer_si()
Dim cellule As Range
For Each cellule In Range("A1:H10000")
If cellule <> "" Then cellule.Borders.Weight = xlThin
Next
End Sub
elle fonctionne mais me calcule toute la feuille et est trop longue et bloque
comment ne formater que la cellule active?
merci de votre aide
a bientot

2 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
8 janv. 2013 à 01:33
Bonjour,

activecell.Borders.Weight = xlThin

eric
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
8 janv. 2013 à 07:00
bonjour
en fait ça va pas car c'est une feuille qui est générée par macro donc en fait on a rien a remplir a la main
parce que en fait je le fais avec la mise en forme conditionnelle mais comme la feuille est générée chaque fois les plages s'effacent et ma mise en forme bouge
en fait il faudrait une mise en forme conditionnelle sous macro .
mais l'enregistreur de macros ne le prends pas
quelle solution?
merci
a bientot
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
8 janv. 2013 à 10:27
Bonjour,

L'enregistreur de macro a bien fonctionné chez moi.
Par contre avec la MFC toutes les cellules se retrouvent encadrées, même les vides...
Ca tombe bien car il y a mieux. Je te propose (sans boucle) :
Union(Cells.SpecialCells(xlCellTypeFormulas, 23), Cells.SpecialCells(xlCellTypeConstants, 23)).Borders.Weight = xlThin

Par contre les cellules avec formule retournant "" seront également encadrées.

eric
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
8 janv. 2013 à 14:01
bonjour
ca tombe bien j'ai aucune formule dans cette feuille donc ça ira je ferai le test ce soir
merci
a bientot
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
8 janv. 2013 à 23:15
bonsoir
je mets la formule dans " Worksheet_Activate"
ca bloque
ca met "erreur d'execution1004
pas de cellules correspondantes"
j'ai bien mis la la formule ou il faut?
merci
a bientot
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
8 janv. 2013 à 23:30
Ce n'est pas à faire qu'une fois ?
"pas de cellules correspondantes" c'est que toutes tes cellules sont vides. Traiter l'erreur si ce cas peut arriver :
on error resume next
Union(Cells.SpecialCells(xlCellTypeFormulas, 23), Cells.SpecialCells(xlCellTypeConstants, 23)).Borders.Weight = xlThin
on error goto 0

Sinon déposer un fichier.

eric
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
8 janv. 2013 à 23:45
voila le fichier
https://www.cjoint.com/c/CAixSAPcGv5
merci
a bientot
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
9 janv. 2013 à 00:02
Ca marche très bien.
Seulement ce n'est pas toutes les cellules comme demandé, mais 10 colonnes à partir de la ligne 4 que tu veux :
On Error Resume Next
Range([A4], [A4].End(xlDown)).Resize(, 11).SpecialCells(xlCellTypeConstants, 23).Borders.Weight = xlThin
On Error GoTo 0

https://www.cjoint.com/c/CAjab1Po5KU

eric
0