Vba excel - repérer, compter, supprimer des cellules fusionnées

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 193 fois - Téléchargée 19 fois

Contenu du snippet

Salut

J'ai eu un problème pour exploiter un tableau sous forme de base de données ... les cellules fusionnées ce n'est pas bon pour celà !
Je propose le code VBA suivant pour compter les cellules fusionnées d'une zone, les identifier (message en pop up), et à volonter supprimer la fusion et dans ce cas recopier ou non la valeur de la cellule fusionnée dans les autres cellules ...

--------------------------------------------------------------------------------
On peut :
?ne rien donner comme argument (la recherche se fait autour du point selectionné et les cases fusionnées sont annoncées en pop up)
?préciser une adresse (sous la forme range("F5:H232"))
?le faire taire : a= fusionnées(,False)
?faire séparer les cellules fusionnées : a= fusionnées(,False, True)
?séparer les cellules fusionnées sans recopier la valeur : a= fusionnées(,False, true, false)

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

Source / Exemple :


Function Fusionnées(Optional MaZone As Range, Optional Verbose As Boolean = True, Optional Clear As Boolean = False, Optional Recopie As Boolean = True)
Dim rg As Range, cl As Range, cll As Range
Dim TempVal
If MaZone Is Nothing Then Set MaZone = ActiveCell.CurrentRegion

Fusionnées = 0
For Each cll In MaZone
    If cll.MergeCells = True Then
        If Verbose Then MsgBox (cll.Address & " est fusionnée dans " & cll.MergeArea.Address)
        If Clear Then
            Set rg = cll.MergeArea
            Fusionnées = Fusionnées + rg.Cells.Count
            'MsgBox Fusionnées
            TempVal = rg.Cells(1, 1).Value
            'MsgBox "a recopier " + CStr(TempVal)
            cll.MergeArea.UnMerge
            If Recopie Then
                For Each cl In rg
                    rg.Value = TempVal
                Next cl
            End If
        Else
        Fusionnées = Fusionnées + 1
        End If
    End If
Next cll
End Function

Conclusion :


plutôt cool non ?

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.