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

Microsoft 365 Fusionner colonnes avec formule.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

h.harn

XLDnaute Nouveau
Bonjour,

Je voudrais sur la ligne 3 afficher les numéros de semaines. Par contre, les cellules du lundi au vendredi sont fusionnées pour que le numéro de semaine s'affiche au milieu et non pas par cellules. Est-ce que c'est possible de le faire ?

Cordialement
 

Pièces jointes

Bonjour.
Avec cette macro dans le module de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address = "$A$1" Or Target.Address = "$C$2" Then
      With Me.[C3:AG3]
         .FormulaR1C1 = "=IF(ISOWEEKNUM(OFFSET(R[2]C,0,-1))=ISOWEEKNUM(R[2]C),NA(),ISOWEEKNUM(R[2]C))"
         .Value = .Value
         .SpecialCells(xlCellTypeConstants, xlErrors).ClearContents
         .HorizontalAlignment = xlHAlignCenterAcrossSelection
         End With
      End If
   End Sub
En C5, mettez plutôt :
Code:
=DATEVAL("1 "&C$2&" "&$A$1)
Remarque: Peut être vaudrait-il mieux que ce soit fait par semaines, et que ça commence toujours un lundi …
Dans ce cas, en C5 :
Code:
=LET(Mai;DATE($A$1;5;31);Lun;Mai-JOURSEM(Mai;2);
Lun+7*($C$3-NO.SEMAINE.ISO(Mai))+1)
Et plus besoin de la macro !
 
Dernière édition:
Bonjour h.harn, Bernard,

Entrez en C3 la formule :
Code:
=SIERREUR(NO.SEMAINE.ISO(DATE($A1;MOIS("1/"&$C2);JOUR(C5)));"")
Puis tirez-la vers la droite, vous obtenez le fichier joint.

En ligne 3 il vous reste à fusionner les 1 puis les 2 puis les 3 puis les 4 puis les 5.

Edit : en AE5 AF5 AG5 j'ai complété la formule.

A+
 

Pièces jointes

Dernière édition:
Pour automatiser les diverses opérations utilisez le fichier .xlsm joint avec cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1,C2]) Is Nothing Then Exit Sub
Dim jour%
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
With [C3:AG3]
    .Columns.Hidden = False 'affiche tout
    .UnMerge 'défusionne
    .Formula = "=IFERROR(ISOWEEKNUM(DATE($A1,MONTH(""1/""&$C2),DAY(C5))),"""")"
    For jour = Application.Min(.Cells) To Application.Max(.Cells)
        .Cells(1, Application.Match(jour, .Cells, 0)).Resize(, Application.CountIf(.Cells, jour)).Merge 'fusionne
    Next
    .Borders.Weight = xlThin 'bordures
    For jour = 29 To 31: .Columns(jour).Hidden = .Cells(2, jour) = "": Next 'masque la colonne
End With
End Sub
Elle se déclenche quand on modifie l'année en A1 ou le mois en C2.

Edit: la macro masque si nécessaire les colonnes AE AF AG (29 à 31).
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

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