Automatiser Bordure suivant texte à l'ouverture

  • Initiateur de la discussion Initiateur de la discussion Nikolas
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

Nikolas

Guest
Bonjour,

Je souhaiterais avoir votre aide sur mon problème. J'envoie des données depuis Access vers Excel mais je souhaite formater mes données depuis Excel. J'aimerais dès que j'ouvre mon fichier excel, mettre une bordure aux cellules qui commencent à B4 jusqu'à IV109 mais ayant dans la cellule les mots 'total' ou 'S quelque chose '. Est-il possible de faire cela?.

Merci de votre aide,

Nikolas [file name=Exemple_20050608160142.zip size=14096]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple_20050608160142.zip[/file]
 

Pièces jointes

Voici le code (à coller dans ThisWorkbook):
Quand on a 'total' bordures fines et fond vert affecté
Quand ça commence par 'S' bordures épaisses et fond rougé affecté
Attention VBA fait la différence entre 'Total' et 'total'


Private Sub Workbook_Open()

For i = 4 To 109 'ligne 4 à 109
For j = 2 To 256 ' colonne B à IV
Range(Cells(i, j), Cells(i, j)).Select
Dim montexte As String
montexte = ActiveCell.Value
montexte = Left(montexte, 1)
If ActiveCell.Value = 'total' Then 'bordure fine + vert
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With


ElseIf montexte = 'S' Then 'bordure épaisse + rouge

Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
End If

Next
Next
End Sub
 
Bonjour,

Un grand merci jerome-gmc car cela fonctionne parfaitement. J'aurais deux autres questions. J'ai 4 feuilles et j'aimerais déclencher uniquement ce code pour deux feuilles, est-il possible de faire cela.

D'autre part, est-il possible de faire cela :

- La personne clique pour ouvrir le fichier Excel
- Le fichier ne s'ouvre pas, mais le code de formatage se déclenche
- Une progress bar indique que cela bientôt se terminer
- Quand la progress bar est à 100%, le fichier Excel s'ouvre

Merci de votre aide,

Nikolas
 
Méthode rapide:

utilise: Sheets('week').Select
Et fait un copier coller de l'opération précedent

C'est un peu brutale mais j'ai pas trop le temps

On peux cacher Excel, je te dis ça plutard


La progress bar, je ne sais pas faire

A+
 
Merci jerome-gmc pour cette réponse aussi rapide. Je viens d'avancer d'un pas concernant ma progress bar mais elle ne se déclenche pas correctement. Elle remplit le pourcentage puis le formatage alors quel devrait-ce faire en même temps. Pourriez-vous m'aider.

Merci par avance

Nikolas [file name=Exemple_20050609152042.zip size=22220]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple_20050609152042.zip[/file]
 

Pièces jointes

Au fait à la place de

application.visible = false 'pour cacher excel

Je pense que :
screenupdating= false 'pour figer l'affichage (à coller au début)
screenupdating= true 'pour mettre à jour l'affichage (à coller à la fin)

est une alternative.

Personnelement j'ai l'impression que Excel 'plante' quand on utilise application.visible = false
(apparement tu connais car tu l'utilises dans ta 'progress bar'.



Peux tu me dire ou tu as trouver ta 'FrameProgress' ? C'est un 'controles supplémentaires' dans la boite à outil? Lequel?


PS: Pour diminuer le temps de calcul, détecte les cases vises, exemple si 2 cases vides successives aller à la ligne d'après. 🙂
 
Bonjour jerome-gmc,

J'ai terminé mon petit projet et comme tu me disais que tu ne connaissais pas les techniques des barres de progression et bien je l'ai fait.

Merci pour les conseils,

nikolas
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

W
Réponses
3
Affichages
2 K
C
Réponses
3
Affichages
16 K
Christophe
C
S
Réponses
3
Affichages
2 K
Stella
S
Réponses
7
Affichages
2 K
B
Réponses
12
Affichages
10 K
P
Réponses
1
Affichages
2 K
Pierrot93
P
A
Réponses
2
Affichages
1 K
azuréens
A
B
  • Question Question
Réponses
0
Affichages
1 K
Bertrand
B
Z
Réponses
9
Affichages
2 K
zonzon 21
Z
B
  • Question Question
Réponses
6
Affichages
2 K
B
E
Réponses
0
Affichages
1 K
etudiant72
E
B
Réponses
1
Affichages
2 K
L
Réponses
4
Affichages
2 K
Laydie
L
B
  • Question Question
Réponses
2
Affichages
1 K
Bertrand
B
Retour