Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

TheLio

XLDnaute Accro
Bonjour tous, bonjour le forum,
Ça fait un bail
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
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
 

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
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…