Résolu VBA Bordures sur ligne si cellule non vide

Fredox

XLDnaute Occasionnel
Bonjour,

Je souhaiterais avoir des bordures de cellules tans que la cellule CX n'est pas vide, sinon la macro s'arrête.

Ma plage de colonnes lignes est A8:Q1008, la valeur de référence est contenu en celulle C8 (puis C9, C10 et ainsi de suite tant que le contenu n'est pas différent de rien)

Pour le format des bordures sur la ligne tant qu'en C il y a du contenu:
Code:
     .borders(xlInsideVertical).LineStyle = 1
     .borders(xlInsideVertical).Color = RGB(128, 128, 128)
     .borders(xlEdgeLeft).Weight = 3
     .borders(xlEdgeLeft).Color = RGB(128, 128, 128)
     .borders(xlEdgeRight).Weight = 3
     .borders(xlEdgeRight).Color = RGB(128, 128, 128)
Possible d'avoir un coup de main pour la macro ?

Merci
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Fredox

Si j'ai bien compris
VB:
Sub Bordures()
With Range(Cells(8, "C"), Cells(8, "C").End(xlDown)).Borders
.Weight = 3: .Color = RGB(128, 128, 128)
End With
End Sub
 

Fredox

XLDnaute Occasionnel
Bonsoir Staple1600
Presque, il faut que cela s'applique (la mise en forme) de la colonne A à Q de chaque ligne.
Dans ton exemple cela fonctionne unique sur C.

Merci
 

Staple1600

XLDnaute Barbatruc
Re

Et comme ceci, c'est mieux? ;)
VB:
Sub Bordures_II()
Application.ScreenUpdating = False
With [A8:Q1008].SpecialCells(xlCellTypeConstants, 3).Borders
.Weight = 3: .Color = RGB(128, 128, 128)
End With
End Sub
 

Fredox

XLDnaute Occasionnel
C'est mieux mais...
Il a bien travailler sur la zone A8:Q1008, mais a mis des bordures à chacune des cellules tant que chaque contenu en différent de rien.

En fait ce que je souhaite:
Sur la zone A8:A1008, pour chaque ligne, la seule référence c'est en C, si C est différent de rien alors toute la ligne se voit appliquer les bordures, et ainsi de suite pour les lignes suivantes.

J'essais d’être clair mais je me complique la vie dans mes propos.

Merci encore.
 

Staple1600

XLDnaute Barbatruc
Re

bah oui, c'est une solution possible.
Boucler sur les cellules de la colonne C.
Tu as désormais tout ce qu'il faut pour résoudre ta question ;)
A toi désormais de mouiller un peu le maillot, camarade ;)
 

Marcel32

XLDnaute Accro
Bonjour,

Est-ce que ceci pourrait fonctionner :
VB:
With Range("A8:Q" & Range("C8").End(xlDown).Row).Borders
.Weight = 3: .Color = RGB(128, 128, 128)
End With
 

Fredox

XLDnaute Occasionnel
Bonjour Marcel32
Oui, cela fonctionne très bien.
J'ai besoin d'avoir à droite et à gauche des bordures différentes des intérieurs (plus épaisses), comment faire ?

Merci
 

Staple1600

XLDnaute Barbatruc
Bonjour Marcel32

Merci d'avoir mouillé le maillot à la place du demandeur ;)
Je te laisse le relais

PS: Merci pour le Range("C8").End(xlDown).Row auquel je n'ai point songé ;)
 

Marcel32

XLDnaute Accro
Je te laisse le relais
Mais euh... J'y connais pas grand chose moi, et du coup je ne sais pas si j'arriverais à l'aider. :(


Oui, cela fonctionne très bien.
J'ai besoin d'avoir à droite et à gauche des bordures différentes des intérieurs (plus épaisses), comment faire ?
Essaye de remplacer la ligne entre le With et le End with par ce que tu as écrit dans ton premier message.

VB:
With Range("A8:Q" & Range("C8").End(xlDown).Row)
     .borders(xlInsideVertical).LineStyle = 1
     .borders(xlInsideVertical).Color = RGB(128, 128, 128)
     .borders(xlEdgeLeft).Weight = 3
     .borders(xlEdgeLeft).Color = RGB(128, 128, 128)
     .borders(xlEdgeRight).Weight = 3
     .borders(xlEdgeRight).Color = RGB(128, 128, 128)
End With
 

Fredox

XLDnaute Occasionnel
Voici:
VB:
Sub Bordures()
With Range("A8:Q" & Range("C8").End(xlDown).Row)
     .Borders(xlInsideVertical).LineStyle = 1
     .Borders(xlInsideVertical).Color = RGB(128, 128, 128)
     .Borders(xlEdgeLeft).Weight = 3
     .Borders(xlEdgeLeft).Color = RGB(128, 128, 128)
     .Borders(xlEdgeRight).Weight = 3
     .Borders(xlEdgeRight).Color = RGB(128, 128, 128)

End With
End Sub
Merci du coup de main Staple1600 et Marcel32

Bonne soirée
 

Staple1600

XLDnaute Barbatruc
Re

Avec plus d'endives ;)
VB:
Sub Bordures()
With Range("A8:Q" & Range("C8").End(xlDown).Row)
    With .Borders(xlInsideVertical)
    .LineStyle = 1: .Color = RGB(128, 128, 128)
    End With
    With .Borders(xlEdgeLeft)
    .Weight = 3: .Color = RGB(128, 128, 128)
    End With
    With .Borders(xlEdgeRight)
    .Weight = 3: .Color = RGB(128, 128, 128)
    End With
End With
End Sub
NB: Mais pour moi, il pourra y avoir un petit souci
(avec les deux codes)
 

Staple1600

XLDnaute Barbatruc
Re

Fredox
Le souci sera le suivant
Lance cette macro sur une feuille vierge
VB:
Sub Bouclettes()
For i = 8 To 33
Select Case i Mod 8
Case 0
Cells(i, "C") = 1600
Case 1 To 4
Cells(i, "C") = "Staple"
End Select
Next
End Sub
Puis lance la macro Bordures
Et tu verras apparaitre le souci ;)
 

Marcel32

XLDnaute Accro
Je te laisse corriger. ;)

@+

[edit]
Je viens de faire ce que tu as dit dans ton message #18 et j'avoue ne pas voir le problème. :(
On ne pensait donc pas au même souci éventuel.
[/edit]
 
Dernière édition:

Fredox

XLDnaute Occasionnel
Merci, la macro ne sera jamais lancée sur une feuille vierge, donc normalement pas de soucis.

Merci
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas