Bonjour
bioteau, le fil,
j'essaye de "déchiffrer" celui de SOAN.... pas simple. Si tu peux me donner quelques explications, cela me permettra de progresser dans mon apprentissage du VBA.
If ActiveSheet.Name <> "TEST" Then Exit Sub
: la feuille active doit être la feuille "TEST" ; c'est forcément le cas si ton classeur contient uniquement cette feuille, mais au cas où ton fichier réel comporterait plus d'une feuille, je préfère mettre cette précaution ; d'un autre côté c'était utile quand j'avais mis un raccourci clavier Ctrl e pour lancer la macro : c'est plus simple qu'un clic sur le bouton "LANCEMENT MACRO" ; note bien ceci : quand on clique sur ce bouton, la feuille "TEST" est forcément la feuille active puisque le bouton est situé sur cette feuille ; mais : a) avec Ctrl e, ça pourrait être une autre feuille ! b) même si j'ai enlevé ensuite le raccourci Ctrl e, l'utilisateur peut lancer la macro via la fenêtre des macros (Alt F8), et dans ce cas aussi, ça pourrait être une autre feuille ! grâce à ce test If
la macro s'arrêtera aussitôt si la feuille active est autre que "TEST" ; donc pour la suite du code VBA, toute référence de cellule sans référence explicite de feuille sera une cellule de la feuille active, donc de la feuille "TEST".
Dim n&
: idem que
Dim n As Long
n = Cells(Rows.Count, 3).End(3).Row
: idem que n = Cells(Rows.Count, "C").End(xlUp).Row
: dernière ligne utilisée, selon la colonne C ; ici, n = ligne n° 11.
If n = 2 Then Exit Sub
: si ton tableau ne contenait aucune donnée (ce qui est le cas au début, quand tu commences à le faire), la dernière ligne serait alors la ligne d'en-têtes, qui est la ligne n° 2 ; or dans ce cas, y'a rien à faire ➯ on quitte la sub si n = 2.
Dim a&, b&, i As Byte
: déclaration de 3 autres variables
a = n + 1
: a = n + 1 = 11 + 1 = 12
Application.ScreenUpdating = 0
: désactive la mise à jour de l'écran ➯ exécution plus rapide
With Range("B3:D" & n)
..
End With
: avec la plage
B3: D11
For i = 7 To 11
..
Next i
: boucle i de
7 à
11
If i <> 8 Then
: avec ce test,
sauf pour i =
8, donc pour :
7 ;
9 ;
10 ;
11
.Borders(i).LineStyle = 1
: on met un trait pour
B3: D11,
et pour la bordure de type i :
* Borders(
7) = Borders(
xlEdgeLeft) = bordure
gauche
* Borders(
9) = Borders(
xlEdgeBottom) = bordure
bas
* Borders(
10) = Borders(
xlEdgeRight) = bordure
droite
* Borders(
11) = Borders(
xlInsideVertical) = bordure
interne verticale
si la macro se terminait ici, on aurait :
c'est donc la moitié du travail qui est déjà faite ! 😊 mais le plus dur reste à faire ! 😭 c'est-à-dire mettre les lignes horizontales internes aux bons emplacements, donc pas pour n'importe quelle ligne ! 😜
je te laisse lire déjà tout ça ; la suite du feuilleton sera dans mon prochain post. 😄 comme tu viens de le voir ci-dessus, une bonne explication détaillée est très longue à faire ! donc ça va beaucoup tarder avant que tu puisses voir le prochain épisode ! 😁 😀 (même si tu t'abonnes à la TNT et au fibre)
soan