Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Simplification de code

2 réponses
Avatar
j-pascal
Bonsoir,

J'ai un petit pb de simplification de code (en particulier avec la
boucle "For a = 7 To 12") :

'--------
With Selection
.ClearContents
.UnMerge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.RowHeight = 11.25
.Interior.ColorIndex = xlNone
End With

With Selection
For a = 7 To 12
.Borders(a).xlContinuous
Next
End With

With Selection
For a = 7 To 12
.Borders(a).Weight = xlThin
Next
End With

With Selection
For a = 7 To 12
.Borders(a).ColorIndex = xlAutomatic
Next
End With

With Selection.Font
.Name = "Verdana"
.FontStyle = "Normal"
.Size = 9
End With
'-------

J'avais même essayé :

'-------
With Selection
For a = 7 To 12
.Borders(a).xlContinuous
.Borders(a).Weight = xlThin
.Borders(a).ColorIndex = xlAutomatic
Next
End With
'-------

qui ne fonctionne pas !

Merci pour votre aide,

jp

2 réponses

Avatar
j-pascal
Bonsoir Denis,

Merci.

En haut du code, j'ai :

'----
Sub Reset_Feuil_Import()
Dim img As Object

Stop
Application.ScreenUpdating = False
Cells.Select
'----- MD
On Error Resume Next
With Selection
.ClearContents ' [en mode "pas à pas", cette ligne est
sélectionnée, mais il n'y a aucune action qui s'effectue à partir de là
!]
'----

Je ne comprends pas pourquoi !
Si j'insère, "On Error Resume Next", toutes les lignes suivantes sont
successivement sélectionnées, mais sans aucune action !

jp

Bonjour J-Pascal,

Ceci est suffisant :

Il est préférable d'utiliser l'objet Range pour définir la plage de cellules


With Selection
.ClearContents
.UnMerge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.RowHeight = 11.25
.Interior.ColorIndex = xlNone
.Name = "Verdana"
.Font.FontStyle = xlNormal
.Font.Size = 9
For a = 7 To 12
.Borders(a).LineStyle = xlContinuous
.Borders(a).Weight = xlThin
.Borders(a).ColorIndex = xlAutomatic
Next
End With




"j-pascal" a écrit dans le message de groupe de
discussion : Bonsoir,

J'ai un petit pb de simplification de code (en particulier avec la
boucle "For a = 7 To 12") :

'--------
With Selection
.ClearContents
.UnMerge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.RowHeight = 11.25
.Interior.ColorIndex = xlNone
End With

With Selection
For a = 7 To 12
.Borders(a).xlContinuous
Next
End With

With Selection
For a = 7 To 12
.Borders(a).Weight = xlThin
Next
End With

With Selection
For a = 7 To 12
.Borders(a).ColorIndex = xlAutomatic
Next
End With

With Selection.Font
.Name = "Verdana"
.FontStyle = "Normal"
.Size = 9
End With
'-------

J'avais même essayé :

'-------
With Selection
For a = 7 To 12
.Borders(a).xlContinuous
.Borders(a).Weight = xlThin
.Borders(a).ColorIndex = xlAutomatic
Next
End With
'-------

qui ne fonctionne pas !

Merci pour votre aide,

jp


Avatar
j-pascal
Bonjour Denis,

Cette fois, c'est noté (j'espère !),

Merci

jp

C'est quoi la grosseur de ton tableau

Quelques centaines de lignes par quelques dizaines de colonnes ?

Et pour formater ce petit tableau, tu trouves intelligent d'appliquer
ton format à toutes les cellules d'une feuille de calcul soit
65536 lignes par 256 colonnes pour les version d'avant Excel 2007
et pour Excel 2007
au delà de 1,000,000 lignes par plus 16,000 colonnes. Ceci signifie
que tu vas te retrouver avec un énorme fichier sans qu'il n'y ait
aucune donnée, aucune formule à l'intérieur. ça ne fait aucun sens.

Je te le répète encore une fois, utilise un objet range et traite la plage
dont tu as de besoin au lieu de traiter la totalité de la feuille de calcul.


Range("A1:Z500") au lieu de l'expression générique Selection.



"j-pascal" a écrit dans le message de groupe de
discussion : Bonsoir Denis,

Merci.

En haut du code, j'ai :

'----
Sub Reset_Feuil_Import()
Dim img As Object

Stop
Application.ScreenUpdating = False
Cells.Select
'----- MD
On Error Resume Next
With Selection
.ClearContents ' [en mode "pas à pas", cette ligne est
sélectionnée, mais il n'y a aucune action qui s'effectue à partir de là
!]
'----

Je ne comprends pas pourquoi !
Si j'insère, "On Error Resume Next", toutes les lignes suivantes sont
successivement sélectionnées, mais sans aucune action !

jp

Bonjour J-Pascal,

Ceci est suffisant :

Il est préférable d'utiliser l'objet Range pour définir la plage de cellules


With Selection
.ClearContents
.UnMerge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.RowHeight = 11.25
.Interior.ColorIndex = xlNone
.Name = "Verdana"
.Font.FontStyle = xlNormal
.Font.Size = 9
For a = 7 To 12
.Borders(a).LineStyle = xlContinuous
.Borders(a).Weight = xlThin
.Borders(a).ColorIndex = xlAutomatic
Next
End With




"j-pascal" a écrit dans le message de groupe de
discussion : Bonsoir,

J'ai un petit pb de simplification de code (en particulier avec la
boucle "For a = 7 To 12") :

'--------
With Selection
.ClearContents
.UnMerge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.RowHeight = 11.25
.Interior.ColorIndex = xlNone
End With

With Selection
For a = 7 To 12
.Borders(a).xlContinuous
Next
End With

With Selection
For a = 7 To 12
.Borders(a).Weight = xlThin
Next
End With

With Selection
For a = 7 To 12
.Borders(a).ColorIndex = xlAutomatic
Next
End With

With Selection.Font
.Name = "Verdana"
.FontStyle = "Normal"
.Size = 9
End With
'-------

J'avais même essayé :

'-------
With Selection
For a = 7 To 12
.Borders(a).xlContinuous
.Borders(a).Weight = xlThin
.Borders(a).ColorIndex = xlAutomatic
Next
End With
'-------

qui ne fonctionne pas !

Merci pour votre aide,

jp