problème macro sous 2010

  • Initiateur de la discussion Initiateur de la discussion matt31
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

matt31

XLDnaute Occasionnel
Bonsoir,

j'ai une macro dans le fichier joint qui à la fermeture du fichier m'efface toutes les lignes non remplie en A, à partir de A3 et qui pour toute cellule remplie en A3 me trace le quadrillage.

Par contre mon souci est que la macro fonctionne parfaitement sous 2003 mais que sous 2010, si tout va bien à la 1° fermeture du fichier, la 2° fois j'ai systématiquement un message d'erreur :
"Erreur d'exécution '1004' :
impossible définir la propriété Weight de la classe Borders"

avec une erreur sur cette ligne :

Code:
.Range("A3:W" & .Range("A" & Rows.Count).End(xlUp).Row).Borders.Weight = xlThin

est ce que quelqu'un aurait une solution pour que cela fonctionne sous 2010?

Merci d'avance
 
Re : problème macro sous 2010

Bonjour

@matt31
Appliques une bordure sous Excel 2010 en laissant tourner l'enregistreur de macros
et regardes en qoui le code VA généré différe de celui d'Excel 2003.

Désolé je viens de voir que j'ai eu la mémé idée que Pierrot93 (dont je n'avais pas vu le message)
 
Re : problème macro sous 2010

merci pour vos réponses.

Hier j'ai oublié la pièce jointe, je rectifie l'erreur, c'est classeur 3.

En pensant par l'enregistreur de macro de 2010 pour tracer les bordures comme je le souhaite voilà ce que ça donne :

Code:
Sub Macro2()
'
' Macro2 Macro
'

'
    Range("A3:W6").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("J3:J6,N3:N6,S3:S6,V3:V6").Select
    Range("V3").Activate
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThick
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThick
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("A7").Select
End Sub

ou directement en pièce jointe (classeur 4)
 

Pièces jointes

Re : problème macro sous 2010

Bonjour Matt,

pas testé sous 2010, mais essaye peut être ainsi :
Code:
    With .Range("A3:W" & .Range("A" & Rows.Count).End(xlUp).Row).Borders
        .LineStyle = xlLineStyleNone
        .Weight = xlThin
    End With

bonne journée
@+
 
Re : problème macro sous 2010

Bonjour
Je pense que tu rencontres le même genre de problème que ce qu'on a avec les tris. Il y a plus d'options disponibles pour les bordures dans 2010 (des doubles en particulier, plus de couleurs aussi) que dans 2003 (idem pour les tris) et du coup il faut donner plus de précision dans 2010.
essaie avec ça (proche de la solution de Pierrot)

Code:
    With .Range("A3:W" & .Range("A" & Rows.Count).End(xlUp).Row).Borders
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With

je pense que tu peux te passer du tint and shade mais si ça ne passe toujours pas rajoute le.
 
Re : problème macro sous 2010

bonsoir et merci à vous 2 pour votre aide.

Pas de connexion quelques jours donc impossibilité de lire et tester votre proposition.

J'avoue ne rien comprendre. La proposition de Misange bloque avec le même type d'erreur dès la 2° ligne.

La proposition de Pierrot93 semble fonctionner. Je testerai dès lundi sur des fichiers entiers.

Pour finaliser, j'ai 2 macros que je souhaiterais appliquer à l'enregistrement. En l'état, j'ai un message box à l'enregistrement et à la fermeture cette macro de quadrillage. Le truc c'est que la fermeture créant une modification du fichier, cela me remet le message box. Comment tout réunir pour que cela s'applique (quadrillage+messagebox) à l'enregistrement.

Merci encore
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

D
Réponses
4
Affichages
313
DidPouAxi
D
Retour