VBA fusion cellule conditionnelle

Signaler
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
-
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
-
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

Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 683
Bonjour,

Sous Excel (et VBA), la fusion de cellules c'est le début de la catastrophe !
Messages postés
790
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
16 juillet 2021
143
Bonjour,

Mettre un fichier anonymisé pour une meilleur compréhension

Slts
Messages postés
24148
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
3 août 2021
6 850
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


En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 683
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
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 683
Bonjour,

Déposes le fichier avec des commentaires explicatifs sur
https://mon-partage.fr/
et mets le lien obtenu dans ton prochain message.
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 683
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 »
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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.
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 683
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
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2
Merci Patrice cela fonctionne très bien.

Peux-tu m'indiquer le code pour que les cellules mois soit bordurées
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 683
Remplaces :
       ActiveSheet.Range(d, c.Offset(-1)).Merge

Par
       With ActiveSheet.Range(d, c.Offset(-1))
         .Merge
         .Borders.Weight = xlThin
       End With
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2
Merci Patrice

TOP!!

Bonne journée

romanza
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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?
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 683
Dans le module de la feuille TCD, ajoutes :
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
  FusionnerMois
End Sub


Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2
Merci Patrice,

Impec!

romanza
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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


.