Fusion de cellule vba

jibdu64

XLDnaute Nouveau
Bonjour,

je galère depuis bientôt deux jours sur un problème de fusion de cellule.
Voila, j'ai programmé en vba de façon a obtenir un calendrier :

Mois Jours
Octobre 29/10/2015
Octobre 30/10/2015
Octobre 31/10/2015
Novembre 01/11/2015
Novembre 02/11/2015
Novembre 03/11/2015
..

J'aimerais fusionner les cellules des mêmes mois de façon a visualiser une fois le mois pour tous les jours du mois.

Auriez-vous une idée a la façon dont je dois procéder ?

Merci d'avance pour vos réponses
 

jibdu64

XLDnaute Nouveau
Re : Fusion de cellule vba

oui je le concoi, desolé, je n'avais pas compris ton message, voici mon fichier
 

Pièces jointes

  • Calendrier.xlsm
    21.2 KB · Affichages: 25
  • Calendrier.xlsm
    21.2 KB · Affichages: 31
  • Calendrier.xlsm
    21.2 KB · Affichages: 38

Pierrot93

XLDnaute Barbatruc
Re : Fusion de cellule vba

Re,

ton code modifié comme suit :

Code:
Sub cal()
Set F = Worksheets("Feuil1")
Set G = Worksheets("Feuil2")

debut = F.Cells(2, 2)
fin = F.Cells(3, 2)
G.Cells(4, 3) = Day(debut)
G.Cells(4, 3).ColumnWidth = 3.5
G.Cells(2, 3) = MonthName(Month(debut))

For i = 1 To (fin - debut)
    'affectation des jours du mois
    G.Cells(4, i + 3) = Day(debut + i)
    G.Cells(4, i + 3).ColumnWidth = 3.5
     
    'Affectation des jours de la semaine
    jours = Weekday(debut + i, vbMonday)
    
    If jours = 1 Then
    G.Cells(3, i + 3) = "L"
    ElseIf jours = 2 Then
    G.Cells(3, i + 3) = "Ma"
    ElseIf jours = 3 Then
    G.Cells(3, i + 3) = "Me"
    ElseIf jours = 4 Then
    G.Cells(3, i + 3) = "J"
    ElseIf jours = 5 Then
    G.Cells(3, i + 3) = "V"
    ElseIf jours = 6 Then
    G.Cells(3, i + 3) = "S"
    ElseIf jours = 7 Then
    G.Cells(3, i + 3) = "D"
    End If
    If MonthName(Month(debut + i)) <> MonthName(Month(debut + i - 1)) Then G.Cells(2, i + 3) = MonthName(Month(debut + i))
Next i
End Sub
 

jibdu64

XLDnaute Nouveau
Re : Fusion de cellule vba

Merci, mais mon problème persiste, je veux que le nom du mois n'apparaisse qu'une fois, et donc qu'il se fussionne avec toute les cases ou le nom du mois est le même ..
Or là il s'affiche au dessus de chaque date ..
 

Pierrot93

XLDnaute Barbatruc
Re : Fusion de cellule vba

Re,

bah... fonctionne chez moi, mais manquait la fusion, ceci devrait le faire...

Code:
Sub cal()
Set F = Worksheets("Feuil1")
Set G = Worksheets("Feuil2")

debut = F.Cells(2, 2)
fin = F.Cells(3, 2)
G.Cells(4, 3) = Day(debut)
G.Cells(4, 3).ColumnWidth = 3.5
G.Cells(2, 3) = MonthName(Month(debut))

For i = 1 To (fin - debut)
    'affectation des jours du mois
    G.Cells(4, i + 3) = Day(debut + i)
    G.Cells(4, i + 3).ColumnWidth = 3.5
     
    'Affectation des jours de la semaine
    jours = Weekday(debut + i, vbMonday)
    
    If jours = 1 Then
    G.Cells(3, i + 3) = "L"
    ElseIf jours = 2 Then
    G.Cells(3, i + 3) = "Ma"
    ElseIf jours = 3 Then
    G.Cells(3, i + 3) = "Me"
    ElseIf jours = 4 Then
    G.Cells(3, i + 3) = "J"
    ElseIf jours = 5 Then
    G.Cells(3, i + 3) = "V"
    ElseIf jours = 6 Then
    G.Cells(3, i + 3) = "S"
    ElseIf jours = 7 Then
    G.Cells(3, i + 3) = "D"
    End If
    If MonthName(Month(debut + i)) <> MonthName(Month(debut + i - 1)) Then G.Cells(2, i + 3) = MonthName(Month(debut + i)) _
        Else: With G.Cells(2, i + 2).Resize(, 2): .Merge: .HorizontalAlignment = xlCenter: End With
Next i
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Fusion de cellule vba

Re,

bah pas ce problème chez moi.... essaye comme cela :

Code:
Sub cal()
Application.DisplayAlerts = False
Set F = Worksheets("Feuil1")
Set g = Worksheets("Feuil2")
g.Cells.Clear
debut = F.Cells(2, 2)
fin = F.Cells(3, 2)
g.Cells(4, 3) = Day(debut)
g.Cells(4, 3).ColumnWidth = 3.5
g.Cells(2, 3) = MonthName(Month(debut))

For i = 1 To (fin - debut)
    'affectation des jours du mois
    g.Cells(4, i + 3) = Day(debut + i)
    g.Cells(4, i + 3).ColumnWidth = 3.5
     
    'Affectation des jours de la semaine
    jours = Weekday(debut + i, vbMonday)
    
    If jours = 1 Then
    g.Cells(3, i + 3) = "L"
    ElseIf jours = 2 Then
    g.Cells(3, i + 3) = "Ma"
    ElseIf jours = 3 Then
    g.Cells(3, i + 3) = "Me"
    ElseIf jours = 4 Then
    g.Cells(3, i + 3) = "J"
    ElseIf jours = 5 Then
    g.Cells(3, i + 3) = "V"
    ElseIf jours = 6 Then
    g.Cells(3, i + 3) = "S"
    ElseIf jours = 7 Then
    g.Cells(3, i + 3) = "D"
    End If
    If MonthName(Month(debut + i)) <> MonthName(Month(debut + i - 1)) Then g.Cells(2, i + 3) = MonthName(Month(debut + i)) _
        Else: With g.Cells(2, i + 2).Resize(, 2): .Merge: .HorizontalAlignment = xlCenter: End With
Next i
Application.DisplayAlerts = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 391
Messages
2 087 980
Membres
103 690
dernier inscrit
LeDuc