Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fusion de cellule vba

  • Initiateur de la discussion Initiateur de la discussion jibdu64
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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 ..
 
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
 
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
 
Re : Fusion de cellule vba

Super ca marche, merci merci merci beaucoup, tu m'enlève une sacré épine du pied, car c'est un programme essentiel au développement d'un projet.

Merci encore, trop fort!!!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
374
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…