Problème sur macro simple pour ajouter des bordures

Bonjour le Forum,

J'ai un (petit) problème que je ne comprends pas .

J'ai créé une macro avec l'enregistreur de macros pour créer une bordure autour de toutes les cellules sélectionnées.

Ça fonctionne très bien, sauf que, quand ma sélection ne comporte des cellules que sur une seule ligne ou une seule colonne, je reçois le message d'erreur : "Erreur d'exécution '1004' : Impossible de définir la propriété LineStyle de la classe Border".

Ça n'est pas bien grave car il suffit de cliquer sur le bouton "fin" de la fenêtre d'erreur, pour constater que la macro s'est bien exécutée. Mais tant qu'à faire, je préfèrerais éviter le message d'erreur tout court.

Quelqu'un saurait-il ce qu'il faut faire ?

Merci !

Sub Format_Cellule_Bordure_pointillé_partout()
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
End Sub

Bonjour

pour ce que je vois il y a beaucoup plus simple comme code pour faire un quadrillage d'une sélection...

cela va résoudre ton problème... en théorie car ce qui pose problème dans ton code c'est

    With Selection.Borders(xlInsideVertical)
    With Selection.Borders(xlInsideHorizontal)

qui n'existe pas suivant le cas

     With Selection.Borders  'sans rien derrière !
             .LineStyle = xlContinuous
             .Weight = xlHairline
             .ColorIndex = xlAutomatic
       End With

Fred

Bonjour,

Sous 2016, (PC), aucune erreur :

  • Plusieurs cellules sur 1 ligne
  • Plusieurs cellules sur 1 colonne
  • Plusieurs cellules sur x lignes et x colonnes
  • Plusieurs cellules sur sélection multiples
  • Cellules fusionnées
  • Cellules centrées sur plusieurs colonnes...

Bref, pas d'erreur chez moi

@Fred :

Merci pour le code (je n'aurais pas su faire moi-même) et pour l'explication (évidemment, impossible d'appliquer une bordure intermédiaire quand il n'y a qu'une ligne ou une colonne) : ça marche désormais très bien !

@cousinhub

Comme je suis un archéo, je travaille sur une version vintage (Excel 2003) – je la trouve tellement plus adaptée à ma façon de travailler que les plus récentes. La différence de version explique sans doute la différence de fonctionnement....

Merci à tous les 2.

Rechercher des sujets similaires à "probleme macro simple ajouter bordures"