WITH - END WITH
STEVENS1962
-
STEVENS1962 -
STEVENS1962 -
Bonjour,
Bonjour,
débutant enVBA , j'ai une petite routine qui : sélectionne une plage de cellule et qui centre les données en milieu de cellule. Lors de l'exécution apparait le message suivant : Erreur de compilation , Fonction ou variable attendue. L'éditeur visual Basic sélectionne le mot situé après With, c'est à dire "SELECTION". Que dois-je écrire comme fonction ou variable?
Enfin comment peut-on formuler en français ce que fait l'instruction WITH - END WITH
'Centrer toutes les données des cellules d'une plage définie'
Range("A1:B15").Select
With SELECTION.Find
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
voici mon tableau sous EXCEL :
A B
citroen xsara
citroen picasso
peugeot 307
peugeot 407
peugeot 607
renault laguna
Merci pour votre réponse
NB j'ai une autre solution plus simple
'Centrer toutes les données des cellules d'un tableau'
ActiveSheet.Range("A1").CurrentRegion.HorizontalAlignment = xlCenter
mais je souhaite comprendre la syntaxe de la première solution
JMB
Bonjour,
débutant enVBA , j'ai une petite routine qui : sélectionne une plage de cellule et qui centre les données en milieu de cellule. Lors de l'exécution apparait le message suivant : Erreur de compilation , Fonction ou variable attendue. L'éditeur visual Basic sélectionne le mot situé après With, c'est à dire "SELECTION". Que dois-je écrire comme fonction ou variable?
Enfin comment peut-on formuler en français ce que fait l'instruction WITH - END WITH
'Centrer toutes les données des cellules d'une plage définie'
Range("A1:B15").Select
With SELECTION.Find
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
voici mon tableau sous EXCEL :
A B
citroen xsara
citroen picasso
peugeot 307
peugeot 407
peugeot 607
renault laguna
Merci pour votre réponse
NB j'ai une autre solution plus simple
'Centrer toutes les données des cellules d'un tableau'
ActiveSheet.Range("A1").CurrentRegion.HorizontalAlignment = xlCenter
mais je souhaite comprendre la syntaxe de la première solution
JMB
2 réponses
-
Bonsoir,
Dans ton code, le Find est en trop. Pour qu'il fonctionne, tu devrais écrire :Range("A1:B15").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .MergeCells = False End With
ou sans sélectionner :With Range("A1:B15") .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .MergeCells = False End With
Le With...End With évite de devoir répéter le nom de l'objet (dans le second exemple, Range("A1:B15")). Le second exemple est donc équivalent, en terme d'action à :Range("A1:B15").HorizontalAlignment = xlCenter Range("A1:B15").VerticalAlignment = xlBottom Range("A1:B15").WrapText = False Range("A1:B15").Orientation = 0 Range("A1:B15").AddIndent = False Range("A1:B15").ShrinkToFit = False Range("A1:B15").MergeCells = False
L'avantage se note également en terme de rapidité d'éxécution du code. Lors d'une syntaxe avec With, l'objet est évalué une fois et on modifie les propriétés. Dans la syntaxe sans With, l'objet est évalué pour chaque modification de propriété.
Voilà, je pense que c'est clair.
@+ -
Merci bien pour ta réponse Gord21 . Elle est très claire et complète.
Merci encore pour ton aide précieuse.