Automatiser la fusion de certaines cellules

Résolu/Fermé
KrioxFear Messages postés 23 Date d'inscription vendredi 1 juin 2012 Statut Membre Dernière intervention 1 avril 2017 - Modifié le 29 mars 2017 à 09:37
KrioxFear Messages postés 23 Date d'inscription vendredi 1 juin 2012 Statut Membre Dernière intervention 1 avril 2017 - 31 mars 2017 à 18:00
Bonjour,

Ce sujet a surement déjà été abordé sur le forum mais les réponses que j'ai trouvé ne me convenaient pas car elles incluaient des macros et je n'y connais absolument rien donc je n'arrivais pas à adapter la réponse à ma situation.

Je désire fusionner des cellules en colonne K lorsque en colonne B les lignes sont de valeurs égales.

Je précise, en B j'ai des dates, lorsque plusieurs lignes correspondent à la même date par exemple B2,B3,B4 = 29-03-17 j'aimerais que K2,K3,K4 fusionnent.

Merci d'avance,

A voir également:

4 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
31 mars 2017 à 10:26
Bonjour,

Comme tu es bien décidé à fusionner, je te met cette macro qui devrait le faire (mode d'emploi) et tu peux installer un bouton pour la lancer. Elle te permet de fusionner la journée et si tu rajoutes des lignes sur la journée, elles se fusionneront.
Option Explicit
Public Sub Fusion()
Dim pos As Long, lig As Long
Application.DisplayAlerts = False
With ActiveSheet
    For pos = 1 To .Cells(Rows.Count, "K").End(xlUp).Row
        If InStr(.Cells(pos, "K").MergeArea.Address, ":") = 0 Then
            lig = pos
        Else
            lig = Mid(.Cells(pos, "K").MergeArea.Address, InStrRev(.Cells(pos, "K").MergeArea.Address, "$") + 1) + 1
        End If
        For lig = lig To .Cells(Rows.Count, "K").End(xlUp).Row
            If .Cells(lig, "K").Value <> .Cells(pos, "K").Value Then Exit For
        Next lig
        If .Cells(lig - 1, "K").Value = .Cells(pos, "K").Value And .Cells(pos, "K").Value <> "" Then
            With .Cells(pos, "K").Resize(lig - pos, 1)
                .Merge
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
            End With
        End If
        pos = lig - 1
    Next pos
End With
Application.DisplayAlerts = True
End Sub

Même la macro avec des cellules fusionnées se complique, alors bon courage pour cette gestion.
1
KrioxFear Messages postés 23 Date d'inscription vendredi 1 juin 2012 Statut Membre Dernière intervention 1 avril 2017
31 mars 2017 à 18:00
Bonjour,

Merci ça fonctionne niquel et si je m'en sors pas par la suite ben au moins tu m'auras prévenu :D

En tout cas merci d'avoir pris le temps de m'aider.

Cordialement.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
29 mars 2017 à 10:36
Bonjour,

mais les réponses que j'ai trouvé ne me convenaient pas car elles incluaient des macros
C'est bien sûr car aucune formule ne te permettra de fusionner des cellules : la formule ne peut affecter que sa cellule de sa présence.
0
KrioxFear Messages postés 23 Date d'inscription vendredi 1 juin 2012 Statut Membre Dernière intervention 1 avril 2017
Modifié le 29 mars 2017 à 10:44
Exemple parfait qu'une fois sortie du contexte, une phrase n'a plus du tout le même sens, surtout si on la coupe.

"et je n'y connais absolument rien donc je n'arrivais pas à adapter la réponse à ma situation."

J'ai compris qu'il fallait utiliser une macro et j'explique que je n'arrive pas à adapter les exemples des gens à mon cas. C'est pourquoi je poste ce message ici en expliquant ma situation pour qu'on puisse me dire ce que je dois faire ou du moins tenter de m'expliquer.

Cordialement,
0
KrioxFear Messages postés 23 Date d'inscription vendredi 1 juin 2012 Statut Membre Dernière intervention 1 avril 2017
29 mars 2017 à 13:27
Bonjour,

J'ai pas mal cherché une alternative et je me suis rendu compte que ce que je voulais faire n'allait pas fonctionner parce que les fonctions ne peuvent pas être étirer sur toute la colonne qui les cases n'ont pas la même taille.
Mais finalement ça m'arrange car j'ai fais dans le sens inverse, la fonction est étirée et fonctionne correctement dans la colonne et maintenant j'aimerais fusionner en colonne K les cellules avec le même résultat, ça devrait être plus simple.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
29 mars 2017 à 21:09
Bonjour,

Tu as étiré ta fonction et cela fonctionne mais si tu fusionnes, cela ne va plus fonctionner car les cellules fusionnées créent pas mal de problèmes : copie, recopies de formules, etc.
Si c'est pour un problème de présentation, pourquoi ne masquerais-tu pas la police des cellules identiques aux précédentes par une mise en forme conditionnelle ?


0
KrioxFear Messages postés 23 Date d'inscription vendredi 1 juin 2012 Statut Membre Dernière intervention 1 avril 2017
30 mars 2017 à 16:17
Bonjour,

Mon tableau se rempli progressivement au fil des jours mais dans aucun cas je ne dois modifier les cases d'une date passée donc ce à quoi j'ai pensé était un bouton de fusion. Chaque jour j'ai juste à cliquer et les cellules identiques de ma colonne K se fusionnent et puis je n'y touche plus.
Dans ce cas normalement seulement la case supérieure est conservée et cette colonne n'a pas de dépendants donc je ne pense pas que ça serait un problème.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
30 mars 2017 à 18:40
Bonjour,

ma colonne K se fusionnent et puis je n'y touche plus.
En quoi la fusion va empêcher de modifier la date ?

C'est vraiment très curieux de voir que l'on essaye de détourner les fonctionnalités.
- les fusions permettent de modifier la présentation.
- le verrouillage des cellules permet d'en protéger le contenu très efficacement.

dans aucun cas je ne dois modifier les cases d'une date passée
Si tu veux interdire cette modification, utilises la fonctionnalité prévue pour cela dans excel, tu verrouilles ta cellule.
Ce n'est pas la peine d'essayer d'inventer autre chose qui n'aura pas la même efficacité et te créera d'autres soucis (tri, copier, etc). Un logiciel a un certain nombre de fonctionnalités autant les utiliser plutôt que d'essayer de biaiser, non ?
0
KrioxFear Messages postés 23 Date d'inscription vendredi 1 juin 2012 Statut Membre Dernière intervention 1 avril 2017
31 mars 2017 à 08:47
Bonjour,

Je recommence en expliquant différemment, j'ai un tableau dont la colonne B est la date, ensuite plusieurs colonnes de données diverses et ma colonne K est la somme du profit de la journée. Petite précision, le nombre de ligne par jour varie.

D'un point de vue esthétique, j'aimerais qu'en K les doublons soient fusionnés, ainsi j'aurais une grande cellule avec le profit, c'est plus clair et ça permet de bien s'y retrouvé dans les jours.

Pour l'instant, dans ma colonne K je me suis arrangé pour avoir le profit journalier répété le nombre de fois qu'il y a de ligne du même jour avec cette formule =SI(B1<>"";SOMME.SI(B:B;B1;O:O);"") et ça fonctionne comme je le voulais. Il me semble que pour faire ce que je veux il ne reste plus qu'à fusionner les cellules dont la valeur est la même.

Maintenant, en ce qui concerne les données que je ne dois pas modifié j'ai dis ça pour contré le fait que la fusion pouvait apporter des erreurs mais en réalité ce n'est pas une interdiction, c'est seulement que normalement je ne serai pas amené à le faire. Une fois la cellule fusionnée le résultat ne changera donc normalement jamais mais ce n'est pas pour autant que je veux verrouiller les cellules d'une date passée.

On a eu du mal à se comprendre mais j'espère avoir été clair cette fois. Merci de ton aide en tout cas.


Cordialement,
0