Automatiser Bordure suivant texte à l'ouverture

  • Initiateur de la discussion Nikolas
  • Date de début
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

  • Exemple_20050608160142.zip
    13.8 KB · Affichages: 6
J

jerome-gmc

Guest
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
 
N

Nikolas

Guest
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
 
J

jerome-gmc

Guest
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+
 
N

Nikolas

Guest
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

  • Exemple_20050609152042.zip
    21.7 KB · Affichages: 15
J

jerome-gmc

Guest
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. :)
 
N

Nikolas

Guest
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
 

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 992
Membres
104 000
dernier inscrit
dinelcia