erreur 1004 la méthode select de la classe range a échoué

le_duc007

XLDnaute Nouveau
Bonjour, l'objectif de ce bout de code n'est ni plus ni moins d'encadrer des tableaux de données, une fois que la page aura une existence (après exécution d'un autre gros morceau de code).
Mon problème est cette fameuse erreur 1004: la méthode select de la classe range a échoué,
j'ai pu lire ici et là que les "select" alourdissaient le code, voir même pouvait le planter. Cependant je ne sais pas comment, et si ce conseil s'applique au code suivant.

Encadre les différentes cases convoquées
Range(Sheets("PV NORMALISE").Cells(9 + (n_proprio - 1) * 4, 50), Sheets("PV NORMALISE").Cells(12 + (n_proprio - 1) * 4, 50)).Select
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With

Le code ci-dessus fonctionné avant que je décide de remplacer le n° de ligne initiale ("9" ci dessus) par une variable (ci-dessous " l ") et le n° de la colonne initiale ("50" ci-dessus) par une autre variable (ci-dessous " c "), est ce que cela est trop volumineux comme définition d'un range?

'Encadre les différentes cases convoquées
Range(Sheets("PV NORMALISE").Cells(l + (n_proprio - 1) * 4, c), Sheets("PV NORMALISE").Cells(l + 3 + (n_proprio - 1) * 4, c)).Select
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
 

Staple1600

XLDnaute Barbatruc
Re : erreur 1004 la méthode select de la classe range a échoué

Bonjour


Voici un code simplifié pour border des cellues.
Code:
Sub test_bordures()
    With Range("A1:E10").Borders
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
End Sub

Code:
Sub test_borduresAVEC_Variables()
Dim lig, col
lig = 1
col = 5
    With Cells(lig, "A").Resize(lig * 10, col).Borders
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
End Sub
Essaies d'adapter ces exemples ou...
....si on disposait d'un fichier exemple, on pourrait faire des tests selon ta problématique. ;)
 
Dernière édition:

le_duc007

XLDnaute Nouveau
Re : erreur 1004 la méthode select de la classe range a échoué

Bonsoir,
j'ai essayé la soluce de Staple1600 avec le "with" et le "resize", je vois ce que cela peut faire, et cela prendrait bcp moins de ligne de code et s'en compter le fait de ne plus utiliser ni de "range" ni de "select", donc conseil utile, merci bcp, simplement ça créer des bordures aux contours de chaque case contenues dans la sélection.

Existe-t-il une autre commande que "resize" pour spécifier que l'on ne veut encadrer uniquement le contour extérieur de la sélection, et non tout l'intérieur? Si oui comment cela se code-t-il?
 

le_duc007

XLDnaute Nouveau
Re : erreur 1004 la méthode select de la classe range a échoué

Effectivement inattention, oups, dsl.
Voici le module contenant le bout de code précédent, enregistré seul. Cela vous suffit-il pour pouvoir tester? ou vous faudrait-il le fichier xlm complet?
 

Pièces jointes

  • Module2.zip
    4.1 KB · Affichages: 41
  • Module2.zip
    4.1 KB · Affichages: 44
  • Module2.zip
    4.1 KB · Affichages: 43

le_duc007

XLDnaute Nouveau
Re : erreur 1004 la méthode select de la classe range a échoué

Merci bcp, j'ai enfin réussi à utiliser la structure with comme il faut, cela fonctionne et c'est plus rapide.
Bref merci, je ferais tout dorénavant pour ne pas utiliser de "select".

Cordialement.

pour ceux que cela intéresse,

With Range(Sheets("feuill1").Cells(l + (n - 1) * 4 , c + 1), Sheets("feuill1").Cells(l + 3 + (n - 1) * 4, c + 1)).Borders(xlEdgeRight)
.LineStyle = xlContinuous​
.Weight = xlMedium​
End With
With Range(Sheets("feuill1").Cells(l + (n - 1) * 4 , c + 1), Sheets("feuill1").Cells(l + 3 + (n - 1) * 4, c + 1)).Borders(xlEdgeleft)
.LineStyle = xlContinuous​
.Weight = xlMedium​
End With


etc...
 

Discussions similaires

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll