Fusion de-fusion de cellule plage variable

  • Initiateur de la discussion Initiateur de la discussion JBOBO
  • 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 !

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

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
 
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.
 
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
 
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
 
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.
 
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
 
- 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

D
Réponses
4
Affichages
433
DidPouAxi
D
S
  • Question Question
Réponses
5
Affichages
1 K
Retour