Fusionner des cellules si elles ont la même valeur

Bonjour,

Je deviens chèvre. Je souhaite fusionner des cellules de même valeur. J'ai suivi une explication du forum avec les fichiers joints. Néanmoins, sur le fichier exemple joint la macro fonctionne mais si je fais "exactement" la même chose sur un nouveau classeur, cela ne fonctionne pas . il y a forcement une différence mais impossible de la trouver...

Voici le sujet :

"Voici mon exemple (fichier ci-joint), j'ai sur la cellule B4 la date de départ ( critère que l'on choisi) et sur la cellule d'après j'ai la formule B4+7 que j'étend sur toute la ligne. Ensuite sur la ligne 5 j'ai le N° ISO de semaine qui correspond à la date au dessus et sur la ligne 3 le N° du mois de chaque semaine.

Je souhaiterai fusionner les cellules sur la lignes 3 si elles ont la même valeur ( ex: fusionner les cellules du mois d'octobre) sachant que la date de départ n'est jamais la même"

Je vous remercie par avance,

Cordialement,

Bonjour Marin33 et bienvenu,

Sub fusion()
     Dim nbCol As Integer, colFin As Integer, colDep As Integer, mois As Integer, col As Integer, i

     Application.DisplayAlerts = False
     Application.ScreenUpdating = False

     'initialisations
     colDep = 2
     col = colDep
     colFin = Cells(4, Columns.Count).End(xlToLeft).Column

     'réinitialisation de la mise en forme et des formules
     With Sheets("feuil1").Range(Cells(7, colDep), Cells(7, colFin))
          .UnMerge
          .Formula = "=if(R[-3]C="""","""",month(R[-3]C))"
          .Value = .Value
          .HorizontalAlignment = xlCenter
          .Borders.LineStyle = xlContinuous

          For i = 2 To .Columns.Count
               If .Cells(1, i).Value <> "" And .Cells(1, i).Value = .Cells(1, i - 1).MergeArea.Cells(1).Value Then Union(.Cells(1, i), .Cells(1, i - 1).MergeArea).Merge
          Next
     End With

     Application.DisplayAlerts = True
     Application.ScreenUpdating = True
End Sub

Merci pour votre rapidité !

Cela fonctionne merci.

J'ai quelques questions de compréhension: (malgré des tests je ne comprend pas, cela fait-il référence à une zone)

colDep = 2 ; en quoi fait référence le 2

i=2 ; idem en quoi fait référence le 2

Merci

Cordialement,

Bonsoir à tous ,

Un autre code.

Le seul paramètre à indiquer dans la procédure est la cellule de départ de la ligne à fusionner. On en déduira automatiquement que la ligne avec les dates de semaine est la ligne suivante.

  • dans le cas du fichier qui fonctionne, on indiquera : Const CelluleFusion = "B3"
  • dans le cas du classeur qui ne marche pas, on indiquera : Const CelluleFusion = "C3"

La procédure ne s'occupe que de la fusion. Elle ne touche pas aux formules de la ligne des dates de semaine.

Le code de la procédure :

Sub Fusion()
Const CelluleFusion = "C3"    ' indiquer la cellule de départ de la ligne à FUSIONNER
                              ' implicitement la ligne des dates sera la ligne juste en dessous
Dim ligneFus&, colDep&, colFin&, j&
   Application.DisplayAlerts = False: Application.ScreenUpdating = False
   ' initialisations
   ligneFus = Range(CelluleFusion).Row: colDep = Range(CelluleFusion).Column
   colFin = Cells(ligneFus + 1, Columns.Count).End(xlToLeft).Column
   ' réinitialisation de la mise en forme et des valeurs de la ligne à fusionner
   Range(Cells(ligneFus, colDep), Cells(ligneFus, colFin)).UnMerge
   Range(Cells(ligneFus, colDep), Cells(ligneFus, colFin)) = Range(Cells(ligneFus + 1, colDep), Cells(ligneFus + 1, colFin)).Value
   Range(Cells(ligneFus, colDep), Cells(ligneFus, colFin)).NumberFormat = "mmm-yyyy"
   Range(Cells(ligneFus, colDep), Cells(ligneFus, colFin)).HorizontalAlignment = xlCenter
   Range(Cells(ligneFus, colDep), Cells(ligneFus, colFin)).Borders.LineStyle = xlContinuous
   ' fusion
   For j = colFin - 1 To colDep Step -1
      If Month(Cells(ligneFus + 1, j)) = Month(Cells(ligneFus + 1, j + 1)) Then Cells(ligneFus, j).Resize(, 2).Merge
   Next j
   Application.DisplayAlerts = True: Application.ScreenUpdating = True
End Sub

Re,

Une méthode v1a avec la boucle de fusion légèrement modifiée pour être plus efficace (moins de fusions à faire) mais le code comporte un peu plus de lignes. C'est plus classique et moins rigolo.

Vous êtes des génies !

Merci beaucoup,

Sans vouloir pousser le bouchon, serait-il possible de lier cette ligne avec une barre de défilement ?

Dans mon tableau de gantt, j'ai une ligne avec la date associer a une barre de défilement. Je souhaiterais que la ligne du dessus avec les mois défile aussi avec les dates.

Je vous met un excel avec un exemple (si cela est possible bien entendu)

Je découvre toute les possibilités incroyable que l'on peut faire avec excel mais sans encore les maitriser.

Merci encore,

Cordialement

Rechercher des sujets similaires à "fusionner ont meme valeur"