XL 2016 Fusion de cellules selon colonnes différente

OLANNURIEN

XLDnaute Nouveau
Bonsoir.

Tout nouveau sur le site je n'ai pas trouver de solution adaptée à mon problème. Je me permets donc de créer un nouveau post. Si la solution existe déjà n'hésitez pas à mettre le lien correspondant.
Je vous expose mon problème :

Nous traitons de grands volumes de données et, après manipulation, ces résultats sont classés sur Excel pour pouvoir les traiter avec une colonne identifiant et plusieurs colonnes de résultats ou observations.
Pour faciliter le traitement de ces informations et nous faire gagner un temps précieux, je souhaiterais fusionner des cellules d’observations et fonction d’un même identifiant.

Par exemple, dans le fichier joint je voudrais fusionner les cellules des colonnes D, E et F lorsqu’elles ont le même identifiant en colonne A (en conservant le même nombre de ligne donc !).

Merci d’avance pour votre aide.

Environnementalement.
 

Pièces jointes

  • Extrait_XML.xlsx
    13 KB · Affichages: 10

patricktoulon

XLDnaute Barbatruc
re

si j'ai ajouté un sheets c'est par ce que dans ton exemple tu l'a fait j'aurais pu faire sans

pour le version d'eric
ajoute la precision du sheets sur le quel tu veux agir c'est mieux
il n'est pas forcé que le sheets soit actif quand la macro est lancée
VB:
Sub fusion()
    Dim datas, lig As Long, nblig As Long, col As Long
   With Sheets(1)
   datas = .[A2].Resize(.Cells(Rows.Count, 1).End(xlUp).Row - 1).Value
    Application.DisplayAlerts = False
    For lig = 1 To UBound(datas)
        nblig = Application.CountIf(.Columns(1), datas(lig, 1))
        If nblig > 1 Then
            For col = 4 To 6
                .Cells(lig + 1, col).Resize(nblig).MergeCells = True
            Next col
        End If
        lig = lig + nblig - 1
    Next lig
End With
End Sub
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Il paraît nécessaire de commencer la macro en défusionnant les cellules et en faisant un tri sur la colonne A :
VB:
Sub Fusion()
Dim deb&, i&
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With [A1].CurrentRegion
    .UnMerge 'défusionne
    .Sort .Cells(1), xlAscending, Header:=xlYes 'tri sur colonne A
    deb = 2
    For i = 3 To .Rows.Count + 1
        If .Cells(i, 1) <> .Cells(i - 1, 1) Then
            With Range(.Cells(deb, 3), .Cells(i - 1, 3))
                .Offset(, 1).Merge
                .Offset(, 2).Merge
                .Offset(, 3).Merge
            End With
            deb = i
        End If
    Next
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Extrait_XML(1).xlsm
    21.7 KB · Affichages: 5

OLANNURIEN

XLDnaute Nouveau
Effectivement eriiiic a raison. Le prétraitement nous permets d'aboutir au classeur TTMT_ITV. Toutes les anomalies sont répertoriées et listées en fonction du tronçon, de la rue, ..... et des renvois permettent d'identifier les grandes familles de problèmes et de travaux à réaliser. nous devons faire le traitement final en définissant, pour chaque tronçon, le type d'intervention qui sera réellement effectué.
 

Discussions similaires

Réponses
4
Affichages
341
Réponses
4
Affichages
402

Statistiques des forums

Discussions
314 021
Messages
2 104 683
Membres
109 104
dernier inscrit
hajaramananatsoa