Fusion de-fusion de cellule plage variable

JBOBO

XLDnaute Accro
Bonjour à tous,

J'ai un souci que je ne parviens pas à résoudre. Je souhaiterais pouvoir par macro evenementielle je pense, ou par bouton, fusionner ou défusionner des plages de cellules variables. Le problème est que je suis bien incapable d'ecrire le code et de plus je n'ai pas du trouver les bons mots clés pour rechercher les réponses à mon problème dans le forum.

Si vous avez une idée ou si vous connaissez une discussion qui se rapporte à mon problème, je suis preneur.

Je pense que l'exemple joint sera plus explicite mais s'il ne l'est pas, je me ferais un plaisir de répondre à vos interrogations.

Merci d'avance,
 

Pièces jointes

  • feuille sondage.zip
    24.3 KB · Affichages: 63

James007

XLDnaute Barbatruc
Re : Fusion de-fusion de cellule plage variable

Bonjour,

Comme point de depart ... en te placant par exemple sur C3 ...
Code:
Sub FusionCells()
Dim nb As Integer
Dim i As Integer
Application.DisplayAlerts = False
nb = Int(ActiveCell.Value * 10)
i = ActiveCell.Row
    With Range(Cells(i, 3), Cells(i + nb - 1, 3))
        .MergeCells = True
        .Orientation = 90
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
Application.DisplayAlerts = True
End Sub
 

JBOBO

XLDnaute Accro
Re : Fusion de-fusion de cellule plage variable

bonjour James007

Merci pour ce point de départ.

Je regarde cela de plus près mais je reste preneur de toute autre info, notamment est ce possible de "balayer" la colonne afin que cela ce fasse en automatique pour les différentes epaisseurs et surtout y a t'il moyen d'effectuer un "retour en arrière" pour défusionner ce qui à été préalablement fusionner.
De plus j'ai vu que dans la macro tu utilisais la valeur calculée pour fusionner les cellules et je ne pourrais pas l'utiliser pour la colonne E car pas de valeur numerique (encore qu'en y reflechissant ça pourra peut-être le faire si je ne trouve pas autre chose)

En tout cas encore merci pour cette première approche avec laquelle je vais tenter d'avancer.
 

JBOBO

XLDnaute Accro
Re : Fusion de-fusion de cellule plage variable

Bonjour,

j'essai de modifier le code de james007 mais ça ne marche pas. Je souhaite q'une fois une plage de cellule fusionné, il selectionne la cellule du dessous et boucle pour fusionner à nouveau une plage, et ce jusqu'à la ligne 64.
j'ai modifié le code comme ceci mais plantage. et je ne comprends pas pourquoi

Code:
Sub FusionCells()
Dim nb As Integer
Dim i As Integer
Application.DisplayAlerts = False
nb = Int(ActiveCell.Value * 10)
    [B]For i = 13 To 64[/B]
i = ActiveCell.Row
    With Range(Cells(i, 3), Cells(i + nb - 1, 3))
        .MergeCells = True
        .Orientation = 90
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
    [B]Range(Cells(i + nb, 3)).Select
    Next i[/B]
Application.DisplayAlerts = True
End Sub
 

Softmama

XLDnaute Accro
Re : Fusion de-fusion de cellule plage variable

Bonjour,

essaie un truc du type :

Code:
Sub FusionCells()
Dim nb As Integer
Dim i As Integer
Application.DisplayAlerts = False
nb = ActiveCell.Value
[B]i = 1
Do While i < 64[/B]
    With Range(Cells(i, 3), Cells(i + nb - 1, 3))
        .MergeCells = True
        .Orientation = 90
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
[B]    i = i + nb
Loop[/B]
Application.DisplayAlerts = True
End Sub
 

JBOBO

XLDnaute Accro
Re : Fusion de-fusion de cellule plage variable

bonjour Softmama,

Merci de ton aide,

j'ai réussi à adapter ton code à mon fichier en modifiant quelques peu le code, comme ci-dessous (en fait un mix de ton code et celui de james007),mais je ne sais pas comment je peux faire pour que la macro fasse la meme chose avec la colonne E qui elle ne comporte pas de valeur numerique, mais qui devra avoir le meme "fusionnage" que la colonne C.

Code:
Sub Fusion2Cells()
Dim nb As Integer
Dim i As Integer
Application.DisplayAlerts = False
Range("C13").Select
Do While i < 65
    i = ActiveCell.Row
    nb = Int(ActiveCell.Value * 10)
    With Range(Cells(i, 3), Cells(i + nb - 1, 3))
        .MergeCells = True
        .Orientation = 90
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
    i = i + nb
    Range(Cells(i, 3), Cells(i + nb - 1, 3)).Select
Loop
Application.DisplayAlerts = True
End Sub

Peut-etre saura tu m'aider ou m'apporter une piste, sachant que je ne suis pas contre une deuxieme macro distincte de la première, afin d'eviter un code à rallonge dont je ne comprendrais plus rien.

Encore merci de te pencher sur mon problème.
 

Softmama

XLDnaute Accro
Re : Fusion de-fusion de cellule plage variable

Re,

Adapte juste le code ainsi :
Code:
Sub Fusion2Cells()
Dim nb As Integer
Dim i As Integer
Application.DisplayAlerts = False
Range("C13").Select
Do While i < 65
    i = ActiveCell.Row
    nb = Int(ActiveCell.Value * 10)
    With [B][COLOR="Blue"]Union([/COLOR][/B]Range(Cells(i, 3), Cells(i + nb - 1, 3)), [B][COLOR="Blue"]Range(Cells(i, [SIZE="4"][COLOR="Red"]5[/COLOR][/SIZE]), Cells(i + nb - 1, [SIZE="4"][COLOR="Red"]5[/COLOR][/SIZE])))[/COLOR][/B]
        .MergeCells = True
        .Orientation = 90
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
    i = i + nb
    Range(Cells(i, 3), Cells(i + nb - 1, 3)).Select
Loop
Application.DisplayAlerts = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 339
Membres
103 524
dernier inscrit
Smile1813