Voila j'ai une "Base de Bonnée" excel 97 qui contient 300 a 400 lignes de
données sur 14 colonnes (de A a O). Le nombre de lignes évolues au fil du
temps.
Dans la colonne A j'ai des plages nommées (du style: ref_1=$A$1:$A$10); le
nombre de plage nommées et leur largeur évolué au fil du temps.
Pour des raisons de rendu visuel, j'ai fais une mise en forme bordure par
plage de données.
En reprenant l'exemple:
pour les lignes: bordure supérieur" = "A1
à O1 et bordure inférieur "="A10 à O10
Pour les colonnes: une bordure par
colonne.
Mon problème c'est que lors d'un trie ou autre, les bordures ne
correspondent plus au plages nommées (bordure de la ref_1 qui empièté sur la
ref_2....).
Ce que je voudrai faire par VBA c'est virer l'ensemble des bordures et en
refaire des neufs qui correspondes aux plages nommées en colonne A.
Si quelqu'un à une idée de comment faire?
J'ai beau chercher sur le net et j'ai même acheté un bouquin (formation à
VBA de microsoft press: que je ne conseil pas) mais je n'y arrive pas.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
luck82
Bonjour;
Après pas mal de temps j'ai réussi à pondre ca (voire en bas du post). Ca marche tres bien mais ce ne s'applique qu'a la colonne A (et c'est normal puisque les plages nommées sont en A). Mais je voudrai que ma macro fasse cette mise en forme jusqu'a la colonne O et là je cale. Je suppose qu'il faut faire un truc du style Nom= Nom + NumRows: mais bon ca ne marche pas. Voila si quelqu'un pouvait m'aider. Merci par avance
Sub bordure()
' Dim Nom As Name For Each Nom In ActiveWorkbook.Names Range(Nom).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range(Nom).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With Next Nom End Sub
Bonjour;
Après pas mal de temps j'ai réussi à pondre ca (voire en bas du post).
Ca marche tres bien mais ce ne s'applique qu'a la colonne A (et c'est normal
puisque les plages nommées sont en A).
Mais je voudrai que ma macro fasse cette mise en forme jusqu'a la colonne O
et là je cale.
Je suppose qu'il faut faire un truc du style Nom= Nom + NumRows: mais bon
ca ne marche pas.
Voila si quelqu'un pouvait m'aider.
Merci par avance
Sub bordure()
'
Dim Nom As Name
For Each Nom In ActiveWorkbook.Names
Range(Nom).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range(Nom).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Next Nom
End Sub
Après pas mal de temps j'ai réussi à pondre ca (voire en bas du post). Ca marche tres bien mais ce ne s'applique qu'a la colonne A (et c'est normal puisque les plages nommées sont en A). Mais je voudrai que ma macro fasse cette mise en forme jusqu'a la colonne O et là je cale. Je suppose qu'il faut faire un truc du style Nom= Nom + NumRows: mais bon ca ne marche pas. Voila si quelqu'un pouvait m'aider. Merci par avance
Sub bordure()
' Dim Nom As Name For Each Nom In ActiveWorkbook.Names Range(Nom).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range(Nom).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With Next Nom End Sub
luck82
Bon j'ai trouvé une solution mais c'est pas très élégant (le code tout en bas): Je recopie le morceau de code suivant en faisant varié à chaque fois le nombre de colonnes de la fonction Offset de 0 à 14; soit 15 fois ce petit morceau de code. Si quelqu'un à une idée pour faire un truc du style: for Offset(0,0) to offset(0,14) merci par avance.
With Range(Nom).Offset(0, 1).Borders .LineStyle = xlContinuous .Item(xlEdgeLeft).LineStyle = xlContinuous .Item(xlEdgeTop).LineStyle = xlContinuous .Item(xlEdgeBottom).LineStyle = xlContinuous .Item(xlEdgeRight).LineStyle = xlContinuous .Item(xlInsideVertical).LineStyle = xContinuous .Item(xlInsideHorizontal).LineStyle = xContinuous End With
With Range(Nom).Offset(0, 0).Borders .LineStyle = xlContinuous .Item(xlEdgeLeft).LineStyle = xlContinuous .Item(xlEdgeTop).LineStyle = xlContinuous .Item(xlEdgeBottom).LineStyle = xlContinuous .Item(xlEdgeRight).LineStyle = xlContinuous .Item(xlInsideVertical).LineStyle = xContinuous .Item(xlInsideHorizontal).LineStyle = xContinuous End With With Range(Nom).Offset(0, 1).Borders .LineStyle = xlContinuous .Item(xlEdgeLeft).LineStyle = xlContinuous .Item(xlEdgeTop).LineStyle = xlContinuous .Item(xlEdgeBottom).LineStyle = xlContinuous .Item(xlEdgeRight).LineStyle = xlContinuous .Item(xlInsideVertical).LineStyle = xContinuous .Item(xlInsideHorizontal).LineStyle = xContinuous End With '.................................
Next Nom Range("A5").Select End Sub
Cordialement
Bon j'ai trouvé une solution mais c'est pas très élégant (le code tout en
bas):
Je recopie le morceau de code suivant en faisant varié à chaque fois le
nombre de colonnes de la fonction Offset de 0 à 14; soit 15 fois ce petit
morceau de code.
Si quelqu'un à une idée pour faire un truc du style: for Offset(0,0) to
offset(0,14) merci par avance.
With Range(Nom).Offset(0, 1).Borders
.LineStyle = xlContinuous
.Item(xlEdgeLeft).LineStyle = xlContinuous
.Item(xlEdgeTop).LineStyle = xlContinuous
.Item(xlEdgeBottom).LineStyle = xlContinuous
.Item(xlEdgeRight).LineStyle = xlContinuous
.Item(xlInsideVertical).LineStyle = xContinuous
.Item(xlInsideHorizontal).LineStyle = xContinuous
End With
Bon j'ai trouvé une solution mais c'est pas très élégant (le code tout en bas): Je recopie le morceau de code suivant en faisant varié à chaque fois le nombre de colonnes de la fonction Offset de 0 à 14; soit 15 fois ce petit morceau de code. Si quelqu'un à une idée pour faire un truc du style: for Offset(0,0) to offset(0,14) merci par avance.
With Range(Nom).Offset(0, 1).Borders .LineStyle = xlContinuous .Item(xlEdgeLeft).LineStyle = xlContinuous .Item(xlEdgeTop).LineStyle = xlContinuous .Item(xlEdgeBottom).LineStyle = xlContinuous .Item(xlEdgeRight).LineStyle = xlContinuous .Item(xlInsideVertical).LineStyle = xContinuous .Item(xlInsideHorizontal).LineStyle = xContinuous End With