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

XL 2010 Ligne horizontale milleu d'une cellule

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

centurion

XLDnaute Junior
Bonjour les amis,

Est'il possible d'avoir une ligne qui s'insère automatiquement------- au milieu des cellules
(sans des espaces blancs de bord de cellule cellule pour faire une ligne continue sur plusieurs cellules) et pouvoir ensuite si besoin, écrire un numéro dedans, ajusté au milieu/centre, en laissant un bout de ligne de chaque coté.
¦---1---¦------¦---5---¦
Dans l'exemple le ¦ représente les bordures de cellule

Dans l'attente de votre aide
Cordialement
Centurion
 
Bonjour centurion, JHA,

A problème capillotracté solution capillotractée :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, x$
Set r = Intersect(Target, Me.UsedRange.EntireRow)
If r Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In r
  If Not r.HasFormula Then
    x = Replace(Replace(r, "-", ""), " ", "")
    If x <> "" Then
      If r.Column > 1 Then If r(1, 0) = "" Then r(1, 0) = " "
      If r.Column < Columns.Count Then If r(1, 2) = "" Then r(1, 2) = " "
      r = String(100, "-") & x & String(100, "-")
    Else
      If r.Column > 1 Then If r(1, 0) <> "" And r(1, 0) <> " " Then r = " "
      If r.Column < Columns.Count Then If r(1, 2) <> "" And r(1, 2) <> " " Then r = " "
    End If
  End If
Next
Application.EnableEvents = True
Columns.ColumnWidth = 15 'largeur à adapter
Cells.HorizontalAlignment = xlCenter
End Sub
A+
 
Re,

Avec une plage délimitée c'est plus simple :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, t, ncol%, i&, j%
Set r = [B2:K100] 'plage à adapter
t = r 'matrice, plus rapide
ncol = UBound(t, 2)
For i = 1 To UBound(t)
  For j = 1 To ncol
    t(i, j) = String(100, "-") & Replace(t(i, j), "-", "") & String(100, "-")
Next j, i
Application.EnableEvents = False
On Error Resume Next
r.ColumnWidth = 15 'largeur à adapter
r.HorizontalAlignment = xlCenter
r.Columns(0) = " "
r.Columns(r.Columns.Count + 1) = " "
r = t
Application.EnableEvents = True
End Sub
A+
 
Dernière édition:
Bonjour à tous,

Dans la macro précédente 100 tirets de chaque coté alourdit inutilement le fichier, utiliser :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, LC#, ncol%, mem$, n, t, i&, j%
Set r = [B2:K100] 'plage à adapter
LC = 15 'largeur colonne, à adapter
ncol = r.Columns.Count
mem = r(1)
Application.ScreenUpdating = False
Application.EnableEvents = False
r(1) = String(100, "-")
r(1).Columns.AutoFit
n = Int(100 * LC / r(1).ColumnWidth / 2) + 1
r(1) = mem
r.ColumnWidth = LC
r.HorizontalAlignment = xlCenter
If r.Column > 1 Then r.Columns(0) = " "
If r(1, ncol).Column < Columns.Count Then r.Columns(ncol + 1) = " "
t = r.Resize(r.Rows.Count + 1) 'matrice, au moins 2 éléments
For i = 1 To UBound(t) - 1
  For j = 1 To ncol
    t(i, j) = String(n, "-") & Replace(t(i, j), "-", "") & String(n, "-")
Next j, i
r = t
Application.EnableEvents = True
End Sub
A+
 
- 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

Discussions similaires

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