VBA fusion cellule conditionnelle

romanza Messages postés 263 Statut Membre -  
romanza Messages postés 263 Statut Membre -
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

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

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

    Mettre un fichier anonymisé pour une meilleur compréhension

    Slts
    0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  4. romanza Messages postés 263 Statut Membre 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  7. romanza Messages postés 263 Statut Membre 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
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Bonjour,

      Déposes le fichier avec des commentaires explicatifs sur
      https://mon-partage.fr/
      et mets le lien obtenu dans ton prochain message.
      0
  8. romanza Messages postés 263 Statut Membre 2
     
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      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
  9. romanza Messages postés 263 Statut Membre 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
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      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
  10. romanza Messages postés 263 Statut Membre 2
     
    Merci Patrice cela fonctionne très bien.

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

      Par
             With ActiveSheet.Range(d, c.Offset(-1))
               .Merge
               .Borders.Weight = xlThin
             End With
      0
  11. romanza Messages postés 263 Statut Membre 2
     
    Merci Patrice

    TOP!!

    Bonne journée

    romanza
    0
  12. romanza Messages postés 263 Statut Membre 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
  13. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Dans le module de la feuille TCD, ajoutes :
    Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
      FusionnerMois
    End Sub


    0
  14. romanza Messages postés 263 Statut Membre 2
     
    Merci Patrice,

    Impec!

    romanza
    0
  15. romanza Messages postés 263 Statut Membre 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