[Formule ou VBA]Mois sur plusieurs cellules contiguës

TheLio

XLDnaute Accro
Bonjour tous, bonjour le forum,
Ça fait un bail :rolleyes:
Me voici avec une question pour les lignes 7 19 31 43 de l'onglet Planning base du fichier joint.
Je cherche à avoir la visibilité du mois en cours sur ces lignes, mais ma formule (invisible si répétition) ne permet pas cette possibilité...
Auriez-vous un bout de piste ?
Je pense que par formule c'est impossible, mais peut-être un vébéiste averti saura me trouver un miracle centré sur plusieurs colonnes ;)

Merci d'avance à tous
@++
Lio
 

Pièces jointes

  • Planning métier de la cuisine 2018-2019 - Vierge_v2.xlsx
    61.7 KB · Affichages: 26

job75

XLDnaute Barbatruc
Bonjour TheLio, heureux de te revoir,

"Je cherche à avoir la visibilité du mois en cours" n'est pas bien clair mais vois ce que donne une MFC sur les lignes 7 19 31 43.

A+
 

Pièces jointes

  • Planning métier de la cuisine 2018-2019 - Vierge(1).xlsx
    62.8 KB · Affichages: 30

TheLio

XLDnaute Accro
Oui, job75, je te remercie,

c'est déjà une sacré avancée ta MFC et j'admire...
Ce que je cherchais de plus, c'est que le texte puisse déborder sur les cellules se trouvant à droite...
car je suis contraint d'avoir des cellules de 34 pixels maximum
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Re tous,
Après quelques recherches sur le sujet, ceci paraît clairement impossible...
Apparemment, seul le VBA aura raison de ce défi.

Je continue de creuser, mais j'ai perdu un peu la foi :(
@++
@tous
comme ceci sans VBA :
upload_2018-5-29_1-35-6.png
 

Pièces jointes

  • Planning métier de la cuisine 2018-2019 - Vierge(1).xlsx
    65.7 KB · Affichages: 24

job75

XLDnaute Barbatruc
Bonsoir TheLio, Modeste geedee,
Ce que je cherchais de plus, c'est que le texte puisse déborder sur les cellules se trouvant à droite...
car je suis contraint d'avoir des cellules de 34 pixels maximum
Je comprends mieux ton problème, ce n'est pas une affaire de MFC, il faut du VBA, le code de la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Intersect(Target, [B3:J3]) Is Nothing Then Exit Sub
[D7:CO7,D19:CO19,D31:CO31,D43:CO43] = "=IF(TEXT(R[2]C[-1],""MMMM"")=TEXT(R[2]C,""MMMM""),"""",TEXT(R[2]C,""MMMM""))"
For Each c In [C7:CO7,C19:CO19,C31:CO31,C43:CO43]
    If c <> "" Then c(1, 2).Resize(, 6) = "" 'les formules des 6 jours suivants sont effacées
Next
End Sub
Fichier joint.

Bonne nuit.
 

Pièces jointes

  • Planning métier de la cuisine 2018-2019 - VBA(1).xlsm
    71.1 KB · Affichages: 17

job75

XLDnaute Barbatruc
Re,

Ceci est mieux car les textes des mois en colonne C nécessitent un soin particulier :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, i As Byte
If Intersect(Target, [B3:C3]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
[D7:CO7,D19:CO19,D31:CO31,D43:CO43] = "=IF(TEXT(R[2]C[-1],""MMMM"")=TEXT(R[2]C,""MMMM""),"""","" ""&PROPER(TEXT(R[2]C,""MMMM"")))"
[C7:CP7,C19:CP19,C31:CP31,C43:CP43].Borders(xlInsideVertical).LineStyle = xlNone
For Each c In [C7:CO7,C19:CO19,C31:CO31,C43:CO43]
    If c.Column = 3 Then
        For i = 2 To 7
            If c(1, i) = "" Then c(1, i) = ""
        Next
    ElseIf c <> "" Then
        c.Borders(xlEdgeLeft).Weight = xlThin 'bordure gauche
        c(1, 2).Resize(, 6) = "" 'les formules des 6 jours suivants sont effacées
    End If
Next
End Sub
Fichier (2).

Edit 1 : j'ai aussi complété les MFC des lignes 7 19 31 43 :
Code:
=(ANNEE(SI(ESTNUM(C9);C9;B9))=ANNEE(AUJOURDHUI()))*(MOIS(SI(ESTNUM(C9);C9;B9))=MOIS(AUJOURDHUI()))
=MOD(MOIS(SI(ESTNUM(C9);C9;B9));2)
Edit 2 : les noms des mois commencent par une majuscule.

Re-bonne nuit.
 

Pièces jointes

  • Planning métier de la cuisine 2018-2019 - VBA(2).xlsm
    70.1 KB · Affichages: 17
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour TheLio, le forum,

Ceci est bien mieux car nettement plus simple et surtout plus rapide :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Range, c As Range
If Intersect(Target, [B3:C3]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
[D7:CO7,D19:CO19,D31:CO31,D43:CO43] = "=IF(TEXT(R[2]C[-1],""MMMM"")=TEXT(R[2]C,""MMMM""),"""","" ""&PROPER(TEXT(R[2]C,""MMMM"")))"
[C7:CP7,C19:CP19,C31:CP31,C43:CP43].Borders(xlInsideVertical).LineStyle = xlNone
For Each a In [D7:CO7,D19:CO19,D31:CO31,D43:CO43].Areas
    a = a.Value 'supprime les formules
    For Each c In a
        If c <> "" Then c.Borders(xlEdgeLeft).Weight = xlThin 'bordure gauche
Next c, a
End Sub
Les formules des mois sont supprimées en colonne D et suivantes.

Fichier (3).

Bonne journée.
 

Pièces jointes

  • Planning métier de la cuisine 2018-2019 - VBA(3).xlsm
    68.3 KB · Affichages: 20

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 082
Membres
103 113
dernier inscrit
jlaussenac