Probleme Borders.Value excel 2010

Résolu/Fermé
silerys Messages postés 116 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 16 avril 2013 - 15 nov. 2012 à 12:10
silerys Messages postés 116 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 16 avril 2013 - 15 nov. 2012 à 17:27
Bonjour,

Voila mon petit soucis,

Je cherche par une fonction (un sub hein ^^) VBA a copier le style d'une cellule par rapport a une autre.

Le problème est que je n'arrive pas a accédé a la fonction a la valeur Value de mon border.
Ceux qui normalement permet d'afficher les bordures ou non.
La je n'ai rien qui passe.

 
Public Sub CopieStyle(ByVal Cible As Range, ByVal Origine As Range)
Dim DefBorder(0 To 5) As integer
    DefBorder(0) = xlEdgeBottom
    DefBorder(1) = xlEdgeLeft
    DefBorder(2) = xlEdgeTop
    DefBorder(3) = xlEdgeRight
    DefBorder(4) = xlInsideHorizontal
    DefBorder(5) = xlInsideVertical
      
With Cible
For i = 0 To 5
            With .Borders(DefBorder(i))
                .Color = Origine.Borders(DefBorder(i)).Color
                .LineStyle = Origine.Borders(DefBorder(i)).LineStyle
                .Value = Origine.Borders(DefBorder(i)).Value   '<------ Ligne a probleme
                .Weight = Origine.Borders(DefBorder(i)).Weight
            End With
Next i


Si je supprime la ligne .Value je n'est plus d'erreur.
je ne voit pas se qui peut généré cette erreur.
De plus si je ne prend pas cette valeur, les bordures sur la cellules de destinations sont toujours affiché. alors que al cellule d'origine n'as pas de bordure.


A voir également:

2 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
15 nov. 2012 à 13:22
Bonjour,

Normal, .value n'est pas une propriété de Border.

Ce qui est étrange c'est que Origine.Borders(DefBorder(i)).Weight reste à 2 même si on lui enlève tout encadrement.
Ce qui fait que l'encadrement est bien enlevé mais remis sur cette ligne de code.

remplace par :
If Origine.Borders(DefBorder(i)).LineStyle <> xlNone Then .Weight = Origine.Borders(DefBorder(i)).Weight

Par contre tu plantes si la sélection fait 1 ligne ou 1 colonne.
Tu devrais tester largeur et hauteur de la sélection avant de modifier xlInsideHorizontal et xlInsideVertical.

eric
0
silerys Messages postés 116 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 16 avril 2013 7
15 nov. 2012 à 17:27
Je te remercie pour ta réponse.

J'ai finalement résolu le problème :D

J'ai changé l'ordre des appels :

.Weight = Origine.Borders(DefBorder(i)).Weight
.Color = Origine.Borders(DefBorder(i)).Color
.LineStyle = Origine.Borders(DefBorder(i)).LineStyle


Le Weight ne redéfini plus le LineStyle, Les bordures ne sont donc plus affiché ^^

Et pour les lignes intérieurs je les ai enlevé et remplacé par les barre diagonal.
(je verrais pour évoluer ma fonction plus tard)

Merci pour ton aide.
0