Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

OLANNURIEN

XLDnaute Nouveau
Bonjour,
Merci de votre réactivité. Je vous joins le nouveau fichier avec, en feuille 2, le résultat souhaité. Les colonnes fusionnées seront modifiées à la main par nos soins. Ce n'est donc pas problématique d'avoir le résultat de la case la plus à gauche.
Environnementalement.
 

Pièces jointes

  • Extrait_XML.xlsx
    16.1 KB · Affichages: 9

OLANNURIEN

XLDnaute Nouveau
Oui je suis bien conscient de ça. la machine ne peut hélas pas encore remplacer l'humain sur certains aspect et je suis donc obligé de traiter les informations compilées. je voudrais juste éviter d'avoir à perdre du temps en fusion de colonne et pouvoir modifier moi-même les informations contenues dans les cellules des colonnes D:F... Ça peut paraitre bizarre mais j'ai d'autres informations d'observations. le tableau que j'ai envoyé n'est qu'un extrait d'un tableur à 50 colonnes et 5120 lignes... ça me paraissait un peu trop imposant comme fichier!
Du coup la formulation de ma problématique est-elle assez claire?
 

OLANNURIEN

XLDnaute Nouveau
re

ben la pour le coup ca l'est encore moins ca va meme a l'encontre de ta demande

Merci pour cette observation mais toutes nos démarches ne sont que des automatismes de pré-traitement. Comme je l'ai souligné dans mon précédent post nous avons beaucoup d'autres colonnes qui nous donnes la gravité globale par tronçon. c'est en fonction de ces éléments que je défini la priorité de travaux, le type d'intervention et la quantité réelle à réaliser. Il me faut donc le tableau complet pour travailler et justifier mes conclusions.
 

patricktoulon

XLDnaute Barbatruc
re
comme ce défaut est pour moi une enigme il m'est donc difficile de te dire pourquoi
j'ai donc opté pour le rows.count et sortie de boucle quand la cellule est vide
gare!! quand meme au eventuelle lignes vides entre deux pleine
VB:
Sub test()
    Dim rng As Range, I&, Mot$
    Sheets("TTMT_ITV").Copy After:=Sheets(Sheets.Count)
    With ActiveSheet
       .Name = "Résultat"
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Mot = ""
        For I = 2 To Rows.Count 'Cells(Rows.Count, "A").End(xlUp).Row
             If Cells(I, "A") <> Mot Then
                If Not rng Is Nothing Then
                    With rng.Offset(, 3):: .MergeCells = True: End With
                    With rng.Offset(, 4):: .MergeCells = True: End With
                    With rng.Offset(, 5):: .MergeCells = True: End With
                End If

                 Set rng = Cells(I, "A")
                Mot = Trim(Cells(I, "A"))
            Else
                Set rng = Union(rng, Cells(I, "a"))
             
              End If
        If Cells(I, "A") = "" Then Exit For 'on sort des que l'on atteint une cellule vide
           Next
    End With
End Sub

ps:
j'ai essayé ca aussi et ca ne marche pas non plus
il y a vraiment quelque chose qui m'échappe avec ces dernières cellules
Code:
 For I = 2 To .UsedRange.Find("*", LookIn:=xlValues, SearchDirection:=xlPrevious).Row
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
une autre idée aussi
tu pourrais faire un jeu de 2 couleurs
Code:
Sub test2()
    Dim rng As Range, I&, couleur(2)
    Sheets("TTMT_ITV").Copy After:=Sheets(Sheets.Count)
    With ActiveSheet
        .Name = "Résultat"
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        couleur(0) = RGB(255, 255, 255)
        couleur(1) = RGB(215, 215, 215)
        For I = 2 To Cells(Rows.Count, "A").End(xlUp).Row
            If Cells(I, "A") <> Cells(I - 1, "A") Then x = IIf(x = 0, 1, 0)
            Cells(I, "A").Resize(, 100).Interior.Color = couleur(x)
        Next
    End With
End Sub
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

autre proposition :
VB:
Sub fusion()
    Dim datas, lig As Long, nblig As Long, col As Long
    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 Sub
eric
 

Discussions similaires

Réponses
4
Affichages
341
Réponses
4
Affichages
402
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…