[VBA Excel] Boucle pour fusion de cellules

Résolu/Fermé
juju93110 Messages postés 19 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 10 décembre 2013 - 7 janv. 2008 à 16:29
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 7 janv. 2008 à 22:59
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
7 janv. 2008 à 21:54
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 lundi 17 décembre 2007 Statut Membre Dernière intervention 10 décembre 2013
7 janv. 2008 à 22:49
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
7 janv. 2008 à 22:59
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