J'ai enregistré une macro automatiquement pour générer les bordures d'un tableau.
Le code généré automatiquement me semble très long et j'aimerais le simplifier car il est destiné à être intégré dans une macro plus longue.
La dernière ligne est mouvante en fonction du nb de lignes qui seront intégrées dans le tableau (je devrais pouvoi arriver à gérer ce point).
Pourriez-vous m'aider svp ?
Je vous remercie ppur votre aide et vous souhaite une bonne semaine.
Sub MAJ_Bordure()
With Range("A5:O11,P5:Y11,Z5:AK11,AL5:AV11")
.Borders(xlEdgeLeft).LineStyle = 1
.Borders(xlEdgeTop).LineStyle = 1
.Borders(xlEdgeBottom).LineStyle = 1
.Borders(xlEdgeRight).LineStyle = 1
.Borders(xlInsideVertical).LineStyle = 1
End With
End Sub
Sub Pourquoi()
Dim t, r As Range, i
Set r = Range("A5:O11,P5:Y11,Z5:AK11,AL5:AV11")
t = Array(Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1))
For i = 1 To 4
r.Borders(t(i)(0)).LineStyle = t(i)(1)
Next
End Sub
Mon code du message#3 était juste une conséquence de mon désoeuvrement "confinique"
Et non point une "critique" de ton code
C'est plus parlant pour les novices de garder les vrais noms type
xlEdgeLeft
Mais fallait que je titille mon VBE pour que le temps passe plus vite.
Je ne l'ai pas pris pour une critique mais je me suis rendu compte que je n'avais pas tout à fait répondu à la demande de Chrystel.... et comme elle voulait du condensé j'en ai profité pour .... condensé.
A titre personnel c'est vrai que j'aurais mis dans mon code le vrai nom et non pas sa version numérique....
Suivant le retour de Chrystel je changerais si elle le souhaite....
Bonjour Phil69970, Bonjour Staple 1600
et bonjour le Forum,
Je vous remercie pour vos réponses.
J'ai testé vos 2 1ères suggestions qui fonctionnent parfaitement.
Je maitrise peu le VBA alors j'ai plus de facilités pour comprendre la suggestion de Phil69970 qui est plus simple pour moi car elle s'apparente plus à l'enregistrement automatique de macro.
Je voulais tester la 2ème proposisiton de Phil69970 qui m'intéresse vivement car elle surligne un peu plus certaines bordures mais je n'arrive pas à faire fonctionner le code (peut être car il n'y a plus la notion type .Borders(xlEdgeLeft) ?)
D'autre part, à quoi correspond SVP le n° à droite de "borders" ? ex .Borders(7) ?
Le code suivant devrait le faire tout en restant assez lisible (avec les bordures des cadres plus épaisses) :
VB:
Sub MAJ_Bordure()
Dim xArea
Application.ScreenUpdating = False
For Each xArea In Range("A5:O11,P5:Y11,Z5:AK11,AL5:AV11").Areas
xArea.Borders.LineStyle = xlContinuous
xArea.Borders.Weight = xlMedium
xArea.Borders(xlInsideHorizontal).LineStyle = xlLineStyleNone
xArea.Borders(xlInsideVertical).Weight = xlThin
Next xArea
End Sub
Merci beaucoup !!!
Toutes vos propositions sont courtes en restant compréhensibles
Je voulais surtout éviter la trentaine de lignes créées automatiquement...
et pouvoir être capable de refaire des bordures simplement sur d'autres cas que je pourrais rencontrer.
Donc c'est parfait et je vous remercie beaucoup pour votre aide à tous car j'ai appris en plus différentes méthodes !!!
[mode humour post G.]
Pour ma part, je me suis fait violence car comme disait il y a longtemps Peter et Kate
Hans plays with Lotte, Lotte plays with Jane Jane plays with Willi, Willi is happy again Suki plays with Leo, Sacha plays with Britt Adolf builts a bombfire, Enrico plays with it It's a knockout If looks could kill, they probably will In games without frontiers-war without tears Games without frontiers-war without tears
J'ai donc fait du Game With Borders et en lieu et place de Kate B.
j'étais accompagné de Valéria Bin Aire (qui chante beaucoup moins bien)
[/mode humour post G.]
=>mapomme
Sion, c'est plus court et l'effet est le même non?
VB:
Sub MAJ_Bordure_mapomme_bis()
Dim xArea
Application.ScreenUpdating = False
For Each xArea In Range("A5:O11,P5:Y11,Z5:AK11,AL5:AV11").Areas
xArea.Borders.Weight = 2
xArea.Borders(xlInsideHorizontal).LineStyle = xlLineStyleNone
xArea.Borders(xlInsideVertical).Weight = xlThin
Next xArea
End Sub