[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 14930 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
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  2. 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
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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