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
A voir également:
- WITH - END WITH
- Download finish time lite with crqck - Télécharger - Utilitaires
- Deactivate uac with msconfig - Guide
- Exemple planning 1 week-end sur 3 - Télécharger - Outils professionnels
- Eclipse temurin jre with hotspot ✓ - Forum PC portable
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
2 réponses
Bonsoir,
Dans ton code, le Find est en trop. Pour qu'il fonctionne, tu devrais écrire :
ou sans sélectionner :
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 à :
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.
@+
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 pour ton aide précieuse.