Defusioner les cellules en les remplissants! (Probleme de Date)

Fermé
Adibou - Modifié par pijaku le 13/11/2014 à 14:08
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 13 nov. 2014 à 14:12
Bonjour,

J'ai un fichier .xls dont de nombreuses lignes et de nombreuses colonnes sont fusionnés.
J'aimerai défusionner toute les cellules de mon fichier afin de pouvoir mieux exploiter mon fichier sur une BDD.

Voilà ce que j'ai essayé :

Sub défusionner()
    ' supprime toutes les fusions de cellules
    ' toutes les cellules d'une fusion reçoivent la valeur ou la formule d'origine
    Dim c1 As Range, c2 As Range, plage As Range, valeur As Variant
    Application.ScreenUpdating = False
    For Each c1 In ActiveSheet.UsedRange
        If c1.MergeCells Then
            valeur = c1.Formula
            If IsDate(c1.Value) Then c1.Value = Format(CDate(c1.Value), "dd/mm/yy")
            Set plage = c1.MergeArea
            plage.UnMerge
            For Each c2 In plage
            If IsDate(c2) Then c2.Value = Format(CDate(c2.Value), "dd/mm/yy")
                c2.Formula = valeur
            Next c2
        End If
    Next c1
    Application.ScreenUpdating = True
End Sub


La défusion s'éxecute correctement, le problème qui se pose qu'avec les colonne des date.

Exemple: Si ma cellule fusionnée contient la date 01/09/2014; cela me donne apres l'execution de la macro une date 09/01/2014.
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
13 nov. 2014 à 14:12
Bonjour,

Enlève le Format de tes dates. CDate() suffit.

Donc :
If IsDate(c1.Value) Then c1.Value = Format(CDate(c1.Value), "dd/mm/yy")

Devient :
If IsDate(c1.Value) Then c1.Value = CDate(c1.Value)

0