[VB] Defusionner des cellules

Résolu
Bonjour,

J'ai un fichier .xls dont de nombreuses lignes et de nombreuses colonnes sont fusionner.
J'aimerai défusionner toute les cellules de mon fichier afin de pouvoir charger mon fichier en mémoire dans un tableau a deux dimensions et traiter facilement mes données.
Voilà ce que j'ai essayé :
Sub defusionne(adresse As String)

Dim fichier, xlApp, xlBook, xlWks  As Variant
Dim xlRange As Range


' Création de l'objet Excel (une classe)
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(adresse)
' Positionnement à l'intérieur du classeur
Set xlWks = xlBook.Worksheets(1)
Set xlRange = xlWks.Range("A1:A65535")

Application.ScreenUpdating = False
Application.DisplayAlerts = False
With xlWks
        Dercol = .Range("IH3").End(xlToLeft).Column 'définit la dernière colonne du fichier
        derlig = .Range("B65000").End(xlUp).Row ''définit la dernière ligne du fichier
        Selection = .Range(.Cells(1, 1), .Cells(derlig, Dercol))
End With

Selection .MergeCells = False
  
Application.ScreenUpdating = True
Application.DisplayAlerts = True

ActiveWorkbook.Save
    xlBook.Close
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing


End Sub


Pas d'erreur mais mon fichier excel n'est pas modifié ...
Merci d'avance.

Cordialement

Thibaut63



--
Dans tout les tiek's ca chuchotte

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Avec ce code toutes les cellules de la feuille en cours sont défusionnées .
    Sub Defusionner()
    
        Cells.Select
        With Selection
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
    End Sub
    
    1. Merci beaucoup !
      Bonne journée !
    2. J'avais le même problème, ça marche parfaitement. Merci
    3. Bonsoir à tous,
      La solution de ratikuss est exacte, mais il y a bien plus simple :

      Sub Défusionner()
        Cells.MergeCells = False
      End Sub
      

      Et c'est aussi plus sûr, dans le sens où ça laisse inchangées
      les autres options de formatage de cellules. Cordialement.
  2. Bonjour,

    Quoi!!! pour défusionner des cellules il faut écrire des codes. Dans les versions 2003 et en dessous, il fallait juste faire un clic sur un petit bouton..

    C'est quoi ce délire? je ne suis pas programmeur, juste un utilisateur d'un logiciel qui s'appelle Excel...
    1. Certes, mais tout dépend de l'utilisation finale.
      Il pose une question dans la partie "VB/VBA", on répond donc avec du code VBA.
    2. En 2016 et sur Excel pour mac, ce code fonctionne encore à merveille !
      #CommentaireInutile