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

Centrer sur plusieurs colonnes

36 réponses
Avatar
criocri
Bonjour,
j'essaye de créer un planning modulable automatiquement sur excel, tout est ok sauf une chose, voila je vous explique mon problème.
Une colonne affiche les jours au format date, et je veux que la colonne du dessus affiche le mois correspondant uniquement si le jour est le 1er du mois. J'ai mis la condition suivante : =SI(JOUR(A7)=1;A7;"") Cela fonctionne sauf qu'en appliquant la mise en forme centrée sur plusieurs colonne, j'ai l'impression que la formule empêche le centrage même si j'ai appliqué la valeur "" c'est à dire valeur vide. Du coup impossible de lire le nom du mois. Je ne sais pas si je suis assez clair, si quelqu'un a compris mon problème, merci pour votre aide.

6 réponses

1 2 3 4
Avatar
isabelle
salut mon ange,

dit donc t'est pas trop dépaysé sur cette vaste plage, j'espere que la
cave est comble dans ces bas fond ;-)

isabelle

Le 2011-03-01 18:33, Mgr T. Plubanni a écrit :
...en utilisant l'enregistreur de macros, pardi!
Mgr T. P.
PS Soeur Isabelle s'occupe des prisonniers dans la cellule IV 65536 car elle
n'a pas encore osé s'équiper de XL 2007 et me charge de répondre à sa place

"criocri" a écrit dans le message de news:


merci Isabelle, grâce à toi ça fonctionne, tu sais ou je peux trouver
les
codes
concernant la mise en forme ( épaisseur des traits de cadre, choix de la
police,
couleurs ...
Merci encore mille fois.





Avatar
isabelle
en reprenant une section de la macro,
en voici quelque un, pour voir les différentes propriétées, par exemple
place le curseur sur le mot "Weight" de la parti bordure
et appuit sur la touche F1 sur la fenêtre d'aide clic sur "Affiché tout"
en haut à droite,
et clic sur XlBorderWeight pour voir les constantes XlBorderWeight que
tu peut utiliser.

With Range(Cells(i - 1, deb), Cells(i - 1, y - 1))
' alligne le mois sur x cellule
.HorizontalAlignment = xlHAlignCenterAcrossSelection

'ajoute les bordures
For w = 1 To .Borders.Count - 2
With .Borders(w)
.LineStyle = xlContinuous 'style de la ligne
.Weight = xlMedium 'épaisseur du trait
.ColorIndex = xlAutomatic 'couleur du trait
End With
Next
'enlève le bordures vertical intérieur
.Borders(xlInsideVertical).LineStyle = xlNone

'définir la couleur de fond de la cellule
.Interior.ColorIndex = 3

'définir le format du texte
With .Font
.Name = "Arial Narrow" 'police
.Size = 12 'taille
.Underline = xlUnderlineStyleNone 'souligné
xlUnderlineStyleSingle
.ColorIndex = 3 'ou xlAutomatic
.Bold = True
.Italic = True
End With
End With

isabelle


Le 2011-03-01 17:46, criocri a écrit :
merci Isabelle, grâce à toi ça fonctionne, tu sais ou je peux trouver
les codes
concernant la mise en forme ( épaisseur des traits de cadre, choix de la police,
couleurs ...
Merci encore mille fois.

Avatar
criocri
isabelle a écrit le 02/03/2011 à 01h44 :
en reprenant une section de la macro,
en voici quelque un, pour voir les différentes
propriétées, par exemple
place le curseur sur le mot "Weight" de la parti bordure
et appuit sur la touche F1 sur la fenêtre d'aide clic sur
"Affiché tout"
en haut à droite,
et clic sur XlBorderWeight pour voir les constantes XlBorderWeight que
tu peut utiliser.

With Range(Cells(i - 1, deb), Cells(i - 1, y - 1))
' alligne le mois sur x cellule
.HorizontalAlignment = xlHAlignCenterAcrossSelection

'ajoute les bordures
For w = 1 To .Borders.Count - 2
With .Borders(w)
.LineStyle = xlContinuous 'style de la ligne
.Weight = xlMedium 'épaisseur du trait
.ColorIndex = xlAutomatic 'couleur du trait
End With
Next
'enlève le bordures vertical intérieur
.Borders(xlInsideVertical).LineStyle = xlNone

'définir la couleur de fond de la cellule
.Interior.ColorIndex = 3

'définir le format du texte
With .Font
.Name = "Arial Narrow" 'police
.Size = 12 'taille
.Underline = xlUnderlineStyleNone 'souligné
xlUnderlineStyleSingle
.ColorIndex = 3 'ou xlAutomatic
.Bold = True
.Italic = True
End With
End With

isabelle


Le 2011-03-01 17:46, criocri a écrit :
merci Isabelle, grâce à toi ça fonctionne, tu sais ou je
peux trouver
les codes
concernant la mise en forme ( épaisseur des traits de cadre, choix de
la police,
couleurs ...
Merci encore mille fois.




bonsoir Isabelle, tout fonctionne à merveille grâce à toi. Merci beaucoup.
Si je veux que la macro s'active uniquement par exemple si je modifie la valeur d'une cellule précise ( par exemple T2 ), est ce possible ? En effet, dès que je change une valeur n'importe ou dans mon planning, la macro ralentie pas mal le traitement de mon tableau. Malgré ça, je suis très content du résultat, merci Soeur Isabelle.
Avatar
isabelle
bonjour criocri,

oui c'est possible,
ajoute ces 2 lignes au début de la macro,

Set plgI = Application.Intersect(Target, Range("T2"))
If Not plgI Is Nothing Then

et ajoute en fin de macro (avant le End Sub) la ligne suivante

End If

isabelle


Le 2011-03-02 17:45, criocri a écrit :
bonsoir Isabelle, tout fonctionne à merveille grâce à toi. Merci beaucoup.
Si je veux que la macro s'active uniquement par exemple si je modifie la valeur
d'une cellule précise ( par exemple T2 ), est ce possible ? En effet, dès que je
change une valeur n'importe ou dans mon planning, la macro ralentie pas mal le
traitement de mon tableau. Malgré ça, je suis très content du résultat, merci
Soeur Isabelle.

Avatar
criocri
isabelle a écrit le 03/03/2011 à 00h34 :
bonjour criocri,

oui c'est possible,
ajoute ces 2 lignes au début de la macro,

Set plgI = Application.Intersect(Target, Range("T2"))
If Not plgI Is Nothing Then

et ajoute en fin de macro (avant le End Sub) la ligne suivante

End If

isabelle


Le 2011-03-02 17:45, criocri a écrit :
bonsoir Isabelle, tout fonctionne à merveille grâce à toi.
Merci beaucoup.
Si je veux que la macro s'active uniquement par exemple si je modifie la
valeur
d'une cellule précise ( par exemple T2 ), est ce possible ? En effet,
dès que je
change une valeur n'importe ou dans mon planning, la macro ralentie pas mal le
traitement de mon tableau. Malgré ça, je suis très
content du résultat, merci
Soeur Isabelle.




bonsoir Isabelle, lorsque je copie ton dernier code, j'ai un message d'erreur : plgI variable non défini,
je t'ai copié mon fichier pourque tu vois un peu l'étendu de mon bidouillage ;-)

http://www.cijoint.fr/cjlink.php?file=cj201103/cijraHr6eE.xlsm

A bientôt.
Avatar
isabelle
oui il faut la declarer Variant,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Integer, i As Integer, y As Integer, w As Integer, deb As
Integer 'déclaration des variables
Dim plgI As Variant 'déclaration des variables

Set plgI = Application.Intersect(Target, Range("T2"))
If Not plgI Is Nothing Then

Application.EnableEvents = False 'désactiver les événements
Application.ScreenUpdating = False
For i = 2 To Range("V65536").End(xlUp).Row 'de 1 à la derniere ligne
renseignée de la colonne V
On Error GoTo fin ' s'il y a un erreur passe à fin
If IsDate(Range("V" & i)) Then 'si c'est une date
x = Range("ABZ" & i).End(xlToLeft).Column ' détermine la derniere
cellule renseigné de la ligne i
Rows(i - 1).Clear 'efface les données au dessus de la ligne i
deb = 22
For y = 23 To x + 1
If Month(Cells(i, deb)) <> Month(Cells(i, y)) Then
Cells(i - 1, deb) = "'" & Format(Cells(i, deb), "mmmm") 'met le
mois au dessus de la ligne i
With Range(Cells(i - 1, deb), Cells(i - 1, y - 1))
.HorizontalAlignment = xlHAlignCenterAcrossSelection ' alligne le
mois sur x cellule
For w = 1 To .Borders.Count - 2
With .Borders(w)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Font
.Name = "Arial" 'police
.Size = 8 'taille
.Underline = xlUnderlineStyleNone 'souligné
.ColorIndex = xlAutomatic
.Bold = False
.Italic = False
End With
Next w
.Borders(xlInsideVertical).LineStyle = xlNone
End With
Rows(i).HorizontalAlignment = xlHAlignCenter ' alligne la ligne
de date au centre
deb = y
End If
Next y
End If 'fin de la condition si
fin:
Err.Clear 'efface l'erreur
Next i
Application.ScreenUpdating = True
Application.EnableEvents = True ' réactiver les événements
End If
End Sub


isabelle



Le 2011-03-03 16:40, criocri a écrit :
bonsoir Isabelle, lorsque je copie ton dernier code, j'ai un message
d'erreur :
plgI variable non défini,
je t'ai copié mon fichier pourque tu vois un peu l'étendu de mon bidouillage
;-)

http://www.cijoint.fr/cjlink.php?file=cj201103/cijraHr6eE.xlsm

A bientôt.

1 2 3 4