Fusion automatique de cellule VBA

Bonjour à tous,

J'explique mon problème

J'ai une ligne avec du texte qui ce répète

|A|B|B|B|C|C|

Et j'aimerais obtenir

|A| B | C |

Voila merci à tous.

-- 08 Nov 2010, 13:54 --

Je ne sais pas si mon exemple est parlant mais les 3 cellules contenant B ce sont fusionnées et les 2 contenant C aussi

Bonjour,

Ci-joint un fichier avec une formule matricielle à valider avec CTRL+MAJ+ENTREE qui affiche les valeurs trouvées dans l'ordre sans doublon. Le tout sans VBA donc pas de macro à activer.

{=SI(A2="";"";INDEX(B1:$S1;MIN(SI(NB.SI($A2:A2;B1:$R1);COLONNE($S1)-COLONNE()+1;COLONNE(B1:$R1)-COLONNE()+1))))}

A+

273doublons.xls (19.50 Ko)

Merci de ta réponse

Le but n'est pas d'afficher les valeurs a la suite sans doublon mais bien de faire fusionner les cellules identique

Si B est présent en A1,B1 et C1 il faut fusionné A1,B1 et C1

Re,

Ok, alors avec ce code à mettre dans un module ça doit fonctionner :

Sub Fusionner()
    Dim ColFin, Début, Fin

    Application.DisplayAlerts = False 'Pour éviter d'avoir le message "La sélection... La fusion...

    ColFin = Range("A1").End(xlToRight).Column 'Numéro de la dernière colonne remplie en ligne 1
    Fin = 2

    For C = 1 To ColFin
        Début = C

        Do While Cells(1, Début).Value = Cells(1, Fin).Value 'Tant que A1=B1 on passe à la colonne suivante
            Fin = Fin + 1
            If Fin > ColFin Then Exit Do 'Pour ne pas chercher après la fin du tableau, pratique si la dernière cellule est unique
        Loop

        Range(Cells(1, Début), Cells(1, Fin - 1)).Merge 'Fusionne
        Range(Cells(1, Début), Cells(1, Fin - 1)).HorizontalAlignment = xlCenter
        C = Fin - 1 'Pour repartir à la prochaine valeur après la fusion et pas faire 1, 2, 3, etc. mais si fusion de 1 à 3 alors ensuite on passe à 4
        'Je mets -1 car le Next fait ensuite +1 on se retrouve bien en Fin donc 1ère colonne de la nouvelle valeur à fusionner
    Next
End Sub

A+

Je n'ai jamais fait de VBA, tu aurait le temps de me faire un petit tuto ?

Ok je croyais que tu savais comment faire vu que tu veux obligatoirement du VBA.

Alors d'abord avec Excel 2007 il faut afficher l'onglet Développeur.

Vas dans le bouton Office - Options Excel et cocher la case Afficher l'onglet Développeur.

Ensuite dans Développeur cliquer sur Visual Basic puis Insertion - Module et coller le code dans ce module.

Pour utiliser la macro se placer dans le bon onglet puis Développeur - Macros, cliquer sur Fusionner et Exécuter.

A l'ouverture du fichier il faut activer les macros (question de sécurité) en cliquant sur Activer... situé sous le ruban puis Activer ce contenu.

Le fichier doit être enregistré en XLS ou XSLM pour prendre en charge les macros, pas de XLSX.

A+

bonjour a tous , je suis novice sur ce fofo et encore plus novice en VBA

en cherchant , je suis tombé sur ce sujet qui date un peu mais qui correspond exactement a ce que je cherche a faire

le code proposé par dachevid est nickel mais je souhaiterais qu il fonctionne sur la ligne 3 et non pas la ligne 1. j ai essayé mais vu mais faible connaissance c est un echec

merci de ce que vous pourrez faire pour moi

je remets le code de dachevid a adapter , encore merci d avance

  Sub Fusionner()
        Dim ColFin, Début, Fin

        Application.DisplayAlerts = False 'Pour éviter d'avoir le message "La sélection... La fusion...

        ColFin = Range("A1").End(xlToRight).Column 'Numéro de la dernière colonne remplie en ligne 1
       Fin = 2

        For C = 1 To ColFin
            Début = C

            Do While Cells(1, Début).Value = Cells(1, Fin).Value 'Tant que A1=B1 on passe à la colonne suivante
               Fin = Fin + 1
                If Fin > ColFin Then Exit Do 'Pour ne pas chercher après la fin du tableau, pratique si la dernière cellule est unique
           Loop

            Range(Cells(1, Début), Cells(1, Fin - 1)).Merge 'Fusionne
           Range(Cells(1, Début), Cells(1, Fin - 1)).HorizontalAlignment = xlCenter
            C = Fin - 1 'Pour repartir à la prochaine valeur après la fusion et pas faire 1, 2, 3, etc. mais si fusion de 1 à 3 alors ensuite on passe à 4
           'Je mets -1 car le Next fait ensuite +1 on se retrouve bien en Fin donc 1ère colonne de la nouvelle valeur à fusionner
       Next
    End Sub

Quelqu'un a répondu à cette question ?

Comment l'appliquer à une autre ligne ? Ou à plusieurs lignes séparément ?

Merci d'avance,

roomus a écrit :

Bonjour à tous,

J'explique mon problème

J'ai une ligne avec du texte qui ce répète

|A|B|B|B|C|C|

Et j'aimerais obtenir

|A| B | C |

Voila merci à tous.

-- 08 Nov 2010, 13:54 --

Je ne sais pas si mon exemple est parlant mais les 3 cellules contenant B ce sont fusionnées et les 2 contenant C aussi

Bonjour,

juste une remarque: les fusions de cellules n'apportent bien souvent que des soucis

P.

Rechercher des sujets similaires à "fusion automatique vba"