Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Mise en forme automatique ligne

  • Initiateur de la discussion Initiateur de la discussion Jeremouse1
  • 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 !

J

Jeremouse1

Guest
Bonjour,

j'ai un fichier avec tout à gauche des références. Entre chaque référence identique il faut que la bordure horizontale soit fine sur toute la longueur et entre deux références différentes il faut une bordure horizontale épaisse.

Comme je suis amené à déplacer souvent des lignes, j'aimerai savoir si il est possible d'automatiser cette mise en forme ? Avec si possible un bouton sur une autre feuille pour lancer cette macro.

Merci d'avance

Jeremouse1
 

Pièces jointes

Re : Mise en forme automatique ligne

Re-bonjour,

Une nouvelle version sans quadrillage vertical :

Code:
Option Explicit
Sub Quadrillage_particulier_bis()
Dim i As Long
Application.ScreenUpdating = False
Range("a1").CurrentRegion.Resize(, 70).Borders.Value = 0
Range("a1").CurrentRegion.Resize(, 70).Borders(xlInsideHorizontal).Weight = xlThin
For i = 5 To Range("A65536").End(xlUp).Row
    If Range("A" & i) <> Range("A" & i).Offset(1, 0) Then Range("A" & i).Resize(, 70).Borders(xlEdgeBottom).Weight = xlThick
Next
Application.ScreenUpdating = True
End Sub

... et une autre, avec quadrillage vertical :

Code:
Option Explicit
Sub Quadrillage_particulier_ter()
Dim i As Long
Application.ScreenUpdating = False
Range("a1").CurrentRegion.Resize(, 70).Borders.Value = 0
Range("a1").CurrentRegion.Resize(, 70).Borders.Value = 1
For i = 5 To Range("A65536").End(xlUp).Row
    If Range("A" & i) <> Range("A" & i).Offset(1, 0) Then Range("A" & i).Resize(, 70).Borders(xlEdgeBottom).Weight = xlThick
Next
Application.ScreenUpdating = True
End Sub

A bientôt 🙂
 
Re : Mise en forme automatique ligne

Merci beaucoup pour ta réponse DoubleZero 🙂

j'ai testé ta deuxième macro, il y a bien un quadrillage vertical par contre j'aimerais que la macro ne modifie pas celui qui est existant. En fait, je teste les macros que tu fais sur un autre fichier avec un quadrillage vertical existant, et j'aimerais le conserver tel qu'il est.

Est ce qu'il est possible de modifier la macro pour qu'elle ne modifie pas le quadrillage vertical ? Car pour l'instant, soit le quadrillage est supprimé, soit il est remplacé un quadrillage vertical uniforme.

Merci d'avance pour aide.

Jeremouse1
 
Re : Mise en forme automatique ligne

Très bien merci en tout cas pour ton aide précieuse.

Est ce que tu saurais, par contre, comment faire commencer la macro à la ligne 5 et pas à la première ? Sur le vrai fichier il y a des titres etc... sur les 4 première lignes.

Merci d'avance,

Jeremouse1
 
Re : Mise en forme automatique ligne

Re-bonjour,

Peut-être comme suit :

Code:
Option Explicit
Sub Quadrillage_particulier_quater()
Dim c As Range
Application.ScreenUpdating = False
Range("a1").CurrentRegion.Resize(, 70).Borders.Value = 0
For Each c In Range("A5", [A65000].End(xlUp)).Resize(, 70)
    c.Borders.Value = 1
    If c <> c.Offset(1, 0) Then c.Resize(, 70).Borders(xlEdgeBottom).Weight = xlThick
Next
Application.ScreenUpdating = True
End Sub

A bientôt 🙂
 
Re : Mise en forme automatique ligne

Merci beaucoup pour ta réponse 🙂

Par contre quand j'execute cette macro, j'ai une erreur "Incompatibilité de type" et dans le débogage, il me surligne la commande "If c<>c.Offset(1,0) Then".

Est ce que tu saurais d'où l'erreur peut venir ?

Merci d'avance,

Jeremouse1
 
Re : Mise en forme automatique ligne

Re-bonjour,

Dans ce cas, tentons de modifier ainsi :

Code:
Option Explicit
Sub Quadrillage_particulier_quater()
Dim c As Range
Application.ScreenUpdating = False
Range("a1").CurrentRegion.Resize(, 70).Borders.Value = 0
For Each c In Range("A5", [A65000].End(xlUp)).Resize(, 70)
    c.Borders.Value = 1
    If c.Value <> c.Offset(1, 0).Value Then c.Resize(, 70).Borders(xlEdgeBottom).Weight = xlThick
Next
Application.ScreenUpdating = True
End Sub

A bientôt 🙂
 
Re : Mise en forme automatique ligne

Merci beaucoup pour ta réponse,

en réalité j'ai toujours une erreur d'incompatibilité de type et une erreur 2042 sur le c.Value.

Saurais-tu d'où cela peut-il venir ?

Merci d'avance,

Jeremouse1
 
Re : Mise en forme automatique ligne

Bonjour Jeremouse1, Bonjour 00 🙂
En repartant du code de 00, une ou deux modifs qui vont accélerer les choses et, peut-être, éviter les problèmes.


VB:
Sub Quadrillage_particulier_quater()
Dim c As Range
Application.ScreenUpdating = False
Range("a5").CurrentRegion.Resize(, 70).Borders.Value = 1
For Each c In Range("A5:A" & [A65000].End(xlUp).Row)
    If c.Value < > c.Offset(1, 0).Value Then c.Resize(, 70).Borders(xlEdgeBottom).Weight = xlThick
Next
Application.ScreenUpdating = True
End Sub

Cordialement

EDIT Je n'avais pas vu que Jeremouse1 n'était revenu qu'un mois après....
 

Pièces jointes

Dernière édition:
Re : Mise en forme automatique ligne

Bonjour Efgé,

merci beaucoup pour ta réponse, en effet tes modifications ont résolu le problème. Maintenant j'aurais une dernière chose à vous demander.

Sur le fichier Excel joint, on peut voir en ligne 4 des celulles colorées, cette ligne est fixe dans le fichier. Je voudrais que la macro que vous m'avez écrite puisse aussi modifier les bordures verticales mais, ici, en fonction des couleurs. En gros lorsque l'on change de couleur il faut mettre un trait gras en vertical tout le long du fichier, sinon ne pas mettre de bordure verticale.

Serait-il possible d'intégrer cette fonction à la macro déjà existante ?

Merci d'avance,

Jeremouse1
 

Pièces jointes

Re : Mise en forme automatique ligne

Ca a l'air de bien marcher sur l'exemple ! 😀 Par contre, sur mon fichier il m'efface toutes les bordures au dessus de la ligne 5, est ce que le fait que les volets soient figés au dessus de la ligne 5 a une incidence ?
 
Re : Mise en forme automatique ligne

Re
Il serait nécessaire d'avoir un fichier exemple réellement représentatif du fichier final!
C'est le ".CurrentRegion" qui pose problème.
Mais comment le savoir ?
Cordialement
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…