Prédéterminer un format de cellules

Résolu
bmpailli
Messages postés
11
Date d'inscription
mercredi 29 décembre 2010
Statut
Membre
Dernière intervention
7 mars 2014
- 12 févr. 2014 à 17:24
bmpailli
Messages postés
11
Date d'inscription
mercredi 29 décembre 2010
Statut
Membre
Dernière intervention
7 mars 2014
- 12 févr. 2014 à 18:36
Bonjour,
Je me pose une question pour l'instant sans réponse, concernant le formatage de plages de cellules dans un classeur Excel.
j'ai plusieurs plages de cellules déterminées par des variables, et selectionnées dans plusieurs parties du code, qui doivent être formatées de la même manière : police, alignement, etc. Peut-on prédéterminer un format, qui sera applicable à ces plages ?
Si oui, comment ?
Si non, suis-je obligé de me taper toutes les données à chaque fois qu'une plage est selectionnée ?
Par exemple, j'ai :

Range("x1:x12").select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = XlCenter
.Orientation = 0
End With

Range ("Y25;Y350").Select
With Selection
.HorizontalAlignment =xlCenter
.VerticalAlignment = xlCenter
.Orientation = 0
End With

(En vrai, c'est beaucoup plus long que ça). J'aurais voulu pouvoir prédéfinir le format (With ... End With) et l'appeler au moment où la plage est selectionnée.

Merci d'avance



--

3 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
12 févr. 2014 à 18:07
Bonjours
j'éviterais personnellement ce select (inutile, dès lors que l'on passe déjà une plage à la procédure) et l'utilisation de deux variables (x et y) qui ne serviront nulle part ailleurs ==>> une sous-routine fera l'affaire ===>>
Private Sub formatage1(maplage As Range)
With maplage
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Orientation = 0
End With
End Sub

Sub test()
formatage1 Range("A1:A10")
formatage1 Range("C1:C10")
End Sub
1
jordane45
Messages postés
35799
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 juillet 2022
358
12 févr. 2014 à 18:20
une sous-routine fera l'affaire
Oui.. j'y ai pensé après.. mais j'ai oublié de venir modifier mon message ^^
0
jordane45
Messages postés
35799
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 juillet 2022
358
12 févr. 2014 à 17:40
Bonjour,

C'est le principe des fonctions...

Tu créés une fonction qui fera ta mise en forme et tu l'appelles lorsque tu en as besoins sur les cellules qui t'interesse..

Function formatage1(maplage As Range)
    maplage.Select
    With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .Orientation = 0
    End With
End Function

Sub test()
 x = formatage1(Range("A1:A10"))
 y = formatage1(Range("C1:C10"))
End Sub

0
bmpailli
Messages postés
11
Date d'inscription
mercredi 29 décembre 2010
Statut
Membre
Dernière intervention
7 mars 2014

Modifié par bmpailli le 12/02/2014 à 18:38
Merci,

En fait, en attendant la réponse, j'ai tenté le coup en créant une Sub calendrier, qui reprend les données de formatage, et en l'appelant par "Call sub calendrier" dès la sélection de la plage concernée.
Ça allège le code et ça marche, mais c'est peut-être une abomination. Je ne suis pas encore familier des fonctions.

Edit :
Je réponds tard, je viens de lire les réponses suivantes, je ne suis pas loin de la vérité.

Merci

--
0