VBA fusion cellule conditionnelle

romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   -  
romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je suis en train de construire une planning.

En ligne K12 -NL12, j'ai mis des dates journalières.
Je souhaiterais qu'au dessus en ligne L11-NL11, les cellules se fusionnent pour indiquer le mois correspondant uniquement.

la solution est en VBA me semble-t-il mais je ne maîtrise pas.

Je vous remercie pour votre aide précieuse.

Bonne journée




Configuration: Windows / Internet Explorer 11.0

14 réponses

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Sous Excel (et VBA), la fusion de cellules c'est le début de la catastrophe !
1
The_boss_68 Messages postés 952 Date d'inscription   Statut Membre Dernière intervention   182
 
Bonjour,

Mettre un fichier anonymisé pour une meilleur compréhension

Slts
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

j'approuve, éviter les fusions tant qu'on peut.
Tu peux te contenter de mettre le mois sur la 1ère colonne où il apparait ce qui fera exactement pareil.
En K11 :
=K12

En L11, à tirer vers la droite :
=SI(OU(K12="";MOIS(K12)<>MOIS(L12));L12;"")

format de cellule
mmmm-aa

eric


0
romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci pour vos retours.

La fusion est un souhait de présentation sur un fichier Excel type Gant.

En K12 -NL12, mes dates peuvent varier en fonction d'une formule que j'ai mis en amont.
Aussi, pour plus de lisibilité, je souhaite que la ligne au dessus - L11-NL11 -n'indique que le mois.

Ex : En K12-Z12, j'ai des jours de février, en AA12-BF12, j'ai des jours de mars

Je souhaite que K11-Z11 soient fusionnées avec indication "FEVRIER"
que AA11-BF11 soient fusionnées avec indication "MARS
et ainsi de suite...."

romanza
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Avec cette procédure :
Option Explicit
Sub FusionnerMois()
Dim r As Range
Dim c As Range
Dim d As Range
   
   Set r = ActiveSheet.Range("K12:NL12")
   With r.Offset(-1)
     .UnMerge
     .ClearContents
     .NumberFormat = "mmmm"
     .HorizontalAlignment = xlCenter
   End With
   For Each c In r.Cells
     If d Is Nothing Then
       Set d = c.Offset(-1)
       d.Value = c.Value
     End If
     If Month(c.Offset(0, 1).Value) <> Month(d.Value) Then
       ActiveSheet.Range(d, c.Offset(-1)).Merge
       Set d = Nothing
     End If
   Next c
   
End Sub
0
romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour Patrice,

Merci pour le temps passé.

Ce qu'il y a c'est que j'ai une barre de défilement des jours associée.

Je te propose de t'envoyer le fichier mais ici je ne sais pas comment....

romanza
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Déposes le fichier avec des commentaires explicatifs sur
https://mon-partage.fr/
et mets le lien obtenu dans ton prochain message.
0
romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   2
 
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Comme quoi il faut toujours poser la bonne question !!!!
Les dates ne sont pas en K12:NL12 mais en J11:NK11 et le résultat attendu n'est plus FÉVRIER mais févr-21.

Ceci dit, la macro fonctionne parfaitement, il suffit d'adapter la plage et le format.

Au lieu de la plage :
   Set r = ActiveSheet.Range("K12:NL12")
Il fallait l'adapter :
   Set r = ActiveSheet.Range("J11:NK11")


Et au lieu du format :
     .NumberFormat = "mmmm"

il suffit de le remplacer par :
     .NumberFormat = "mmm-yy"


EDIT : C'est quoi « une barre de défilement des jours associée »
0
romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   2
 
Oui, j'avais adapté pour la plage de cellules.

Mais si tu utilises la barre de défilement des jours en haut, les mois fusionnés ne suivent pas.
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Il faut affecter la macro à la barre de défilement
et ajouter en début de macro :
   Application.ScreenUpdating = False


Et pour plus de fluidité, prévoir d'arrêter les calculs pendant la macro
0
romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci Patrice cela fonctionne très bien.

Peux-tu m'indiquer le code pour que les cellules mois soit bordurées
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Remplaces :
       ActiveSheet.Range(d, c.Offset(-1)).Merge

Par
       With ActiveSheet.Range(d, c.Offset(-1))
         .Merge
         .Borders.Weight = xlThin
       End With
0
romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci Patrice

TOP!!

Bonne journée

romanza
0
romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   2
 
Autre souci dont je viens de me rendre compte.

Quand on filtre avec les segments la correspondance mois ne suit pas.

Comment peut-on déclencher la macro à partir du filtre segment?
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Dans le module de la feuille TCD, ajoutes :
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
  FusionnerMois
End Sub


0
romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci Patrice,

Impec!

romanza
0
romanza Messages postés 249 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour Patrice,

Je me permets de te solliciter pour mon projet pour lequel je rencontre 2 questions sur l'onglet "Chronologie des tâches"

Je te joins le fichier et j'ai mis 2 commentaires sur l'onglet correspondant

https://mon-partage.fr/f/tZRhVCpw/


Je te remercie d'avance pour ton aide

Pascal


.
0