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 211
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 38206 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 juin 2024 344
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 38206 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 juin 2024 344
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
Rejoignez-nous