[VBA Excel] Boucle pour fusion de cellules

Résolu
juju93110 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Je travaille actuellement à la réalisation de macros me permettant de trier une grosse quantité de données.

Je souhaite notamment fusionner des ensembles de cellules espacés à chaque fois de 13 lignes. Malheureusement seul le premier ensemble de cellules se fusionne (voir le code ci-dessous).

Si quelqu'un a une suggestion, je suis preneur. Merci d'avance.

------------------------

Sub fusion()

decalage_ligne = 0

Do While Range("L3").Offset(decalage_ligne, 0).Value <> ""

Range("J13:J14").Offset(decalage_ligne, 0).Select
Range("J13:J14").Offset(decalage_ligne, 0).Activate
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
decalage_ligne = decalage_ligne + 13

Loop

End Sub
A voir également:

3 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour

Tu peux simplifier ton code en évitant les sélections qui ne servent qu'à ralentir l'exécution.
Sub fusion()
Dim decalage_ligne As Double
decalage_ligne = 0

Do While Range("L3").Offset(decalage_ligne, 0).Value <> ""

With Range("L13:L14").Offset(decalage_ligne, -2)
    .HorizontalAlignment = xlLeft
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = True
End With
decalage_ligne = decalage_ligne + 13

Loop

End Sub

Cependant si ceci fera fonctionner ta macro, il est tout de même fortement déconseillé d'utiliser les macros avec des cellules fusionnées.

Tu veux en plus fusionner avec une macro mais comme tu l'as remarqué, la première fonctionne mais pas les suivantes car celle qui est fusionnée perturbe les adressages : pour Excel la ligne fusionnée ne compte plus.

Je fais fonctionner ta macro en utilisant une colonne où je n'ai pas de fusions de lignes mais si tu en as tu auras le même problème.

Si tu veux éviter les soucis, je te conseille expressément d'éviter les fusions de cellules en utilisant des boucles macros.

Maintenant y en a qui ont essayé...ils ont eu des problèmes, c'est vous qui voyez ! comme disent Chevallier Laspales...
1
juju93110 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Ah !!! mais c'est tout vu.

Merci beaucoup pour ta réponse.

Je me sent bête de ne pas y avoir pensé moi même.

La fusion des cellules n'a qu'un but purement esthétique.
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour

La fusion des cellules n'a qu'un but purement esthétique.

C'est souvent le cas car on utilise Excel pour faire de la présentation et en fait un tableur était surtout destiné à calculer...

Je me sent bête de ne pas y avoir pensé moi même.

Surtout pas !
C'est toujours très difficile de remettre en cause une procédure que l'on a conçue et qui était tout à fait logique si tu ne connais pas le problème des fusions de cellules.

@+ et bonne suite.
0