Macro defusionner en gardant le contenu dans les deux cell

BOnjour tout le monde, je suis nouveau sur le forum, et j'épère y trouver un peu d'aider car cela fait 2 jours que je bloque sur un problème que voici :

Travaillant sur une macro assez vaste, je dois à un moment défusionner des cellules, pour cela j'utilise :

Range("A15:U1000").MergeCells = False

Le problème est que j'aimerais que le contenu de mes cellule défusionnées soient identique (uniquement du texte), et que pas une seul des deux gardent la valeur. (Je précise que ce sont des cellules isolés qui sont fusionnées)

Ma question que dois je rajouter à ma macro?

Merci d'avance ,

James

Bonjour,

essaie ce bout de code

Public Sub Defusion()
    Dim Zone As Range
    'Défini ta zone de traitement
    Set Zone = Sheets("Feuil1").Range("A15:U1000")

    Dim Cellule As Range

    For Each Cellule In Zone
        If Cellule.MergeCells Then
            Dim ZoneFusion As Range
            Set ZoneFusion = Cellule.MergeArea
            Dim Valeur As String
            Valeur = Cellule.Value

            Cellule.UnMerge

            For Each C In ZoneFusion
                C.Value = Valeur
            Next

        End If
    Next
End Sub

Ca marche !!!!!!

Un grand merci à toi Math !!!

J'avoue ne pas tout comprendre dans la macro mais je vais me pencher dessus pour essayer d'approfondir un peu mes connaissances (surtour les dim as string zone etc...) qui sont encore tres flou pour moi.

Encore merci §!!

James

revoici mon code commenté

Public Sub Defusion()
    'Dim sert à déclarer une variable
    'Déclare la variable Zone avec le type range
    'Le type Range est en fait une selection de cellule
    Dim Zone As Range
    'Défini ta zone de traitement
    'Set sert à attribuer une valeur à une variable "objet"
    'Je lui donne la zone de traitement
    Set Zone = Sheets("Feuil1").Range("A15:U1000")

    'Ici je défini un deuxième objet nommé Cellule range pour utiliser dans la boucle
    Dim Cellule As Range

    'Je boucle sur tout les "Range" de l'objet Zone
    'C'est à dire toutes les cellules de la zone A15:U1000
    For Each Cellule In Zone
        'Si la cellule est fusionné
        If Cellule.MergeCells Then
            'Déclare un objet range qui contient les cellules fusionnées
            Dim ZoneFusion As Range
            'MergeArea renvoie un objet range qui contient les cellules fusionnés
            Set ZoneFusion = Cellule.MergeArea
            'Déclare un variable (Dim) texte ( as string )
            Dim Valeur As String
            'Je lui attribue la valeur de la cellule
            'dans des cellules fusionnées, la première cellule du lot contient le texte
            'Vu que la boucle tombe toujours sur la première cellule d'une fusion, c'est
            'une façon rapide de trouver la valeur à reproduire
            Valeur = Cellule.Value

            'Je défusionne les cellules
            Cellule.UnMerge

            'Pour chaque cellule de la fusion, j'attribut la valeur de la variable Valeur
            'Ici je n'ai pas déclarer la variable C qui sera de type range par défaut
            'Parce qu'elle prend la type de ZoneFusion.
            'C'est par paresse que je n'ai pas déclarer C, c'est toujours mieux de déclarer
            'ses variables :)
            For Each C In ZoneFusion
                C.Value = Valeur
            Next

        End If
    'On passe à la cellule suivante
    Next
End Sub

OK merci pour ces précisions, j'y vois déjà plus clair !!!!

Bonne soiré et encore merci d'avoir pris le temps de répondre !!!

James

Bonjour, j'ai utilisé la solution de Math (merci!) mon seul pb est ke ma sélection est de A4:BU20000, ce qui la rend assez longue... Y'aurait-il un autre moyen pour que ce soit plus rapide?

Merci de votre aide

Cordialement

naz4

Bonsoir,

Qu'entends-tu pas "assez longue"?

As-tu un ordre d'idée?

Sinon, ton fichier comporte-t-il des formules? (si oui, dans quelle(s) colonne(s))

A-t-il des cellules vides?

@ te relire

cousinhub a écrit :

Qu'entends-tu pas "assez longue"?

As-tu un ordre d'idée?

un peu moins d'une minute
cousinhub a écrit :

A-t-il des cellules vides?

@ te relire

Oui mon fichier comporte énormément de cellule vides puisqu'en réalité, j'ai pris ces bornes la pour prévoir d'éventuels ajouts de données. Je pense que je pourrais jouer sur ça avec un if vides then... Mais je ne connais pas très bien vba, ce qui me rend la tâche plus difficile. Quelqu'un aurait-il une idée?

Merci pour votre aide!

Re-,

Quelqu'un aurait-il une idée?

Ben, j'y étais, mais tant pis....

Pas répondue, pour l'existence ou non de formules.....

M'enfin....

Bonne chance

Je n'ai pas compris pourquoi tant pis?[ quote="cousinhub"]Re-,

Ben, j'y étais, mais tant pis....

Pas répondue, pour l'existence ou non de formules.....

M'enfin....

Bonne chance[/quote]

Oui en effet, mon fichier comporte des formules (recherchev,...) Mais la feuille en question n'en comporte pas. Aurais-tu une idée?

Merci pour ton aide!

Rechercher des sujets similaires à "macro defusionner gardant contenu deux"