Alors, je suis face à un petit soucis que je ne parvient pas à résoudre...
Je vous explique, j'ai un document d'historique de conversation sms, j'ai un peu modifier le document sortit du téléphone pour lui créer trois colonnes principales (qui sont les colonnes E, F et G). J'ai mis les messages dans les cases de la colonne F (du texte donc). J'ai un autre colonne (J) dans laquelle j'ai soit la valeur "RCV" (reçu) soit la valeur "SNT". Voilà pour la situation.
Mon soucis est que je voudrais que sur une ligne où j'ai la valeur "SNT" en J, la case en F fusionne avec la case vide en E. Et que sur une ligne où j'ai la valeur "RCV" en J, la case F fusionne avec la case vide en G.
J'ai trouvé un bout de code qui me fait ça ligne par ligne (enfin une des deux conditions à la fois, mais au pire je lancerais deux macros ça ne me dérange pas...) :
(exemple pour la ligne 1)
Code:
Sub test()
Range("E1:F1").UnMerge
If [J1] = "SNT" Then
With Range("E1:F1")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = True
End With
End If
End Sub
Là ça fonctionne sur la ligne 1, pas de soucis, la case J contient "SNT" donc la case F fusionne bien avec la case E.
Par contre je voudrais que la marco se loop toute seule sur toutes les lignes du tableau sinon, elle n'a aucun intérêt pour moi... (j'ai dans les 50 000 lignes au total... >< )
J'ai déjà fait pas mal de tentatives, mais débutant avec les vba, toutes se sont soldées par des échecs...
Bonjour.
Au lieu de fusionner les cellules ne pourriez vous aligner Centré sur plusieurs colonnes E:G ?
Ça vaudrait vraiment le coup si ça convient: plus rien à faire !
En fait non... L'idée étant de décaler sur la verticale les messages envoyés et ceux reçus... Pour obtenir une sorte de quinconce, et avoir une mis en page semblable à celle d'une conversation sur un téléphone.
Il est donc impératif que la règle de fusion ne soit pas la même et soit conditionnelle à J...
Oui mais, de toutes façon si on fusionne seule la cellule du coin haut gauche est gardée. Et dans ce cas je suppose donc que les texte qui doivent être fusionnée en F:G sont déjà renseignés en F et les autres déjà en E. C'est plutôt un alignement standard qui conviendrait, permettant de mordre sur la colonne suivante.
P.S. Pourtant non puisque vous centrez horizontalement. Un centrage sur plusieurs colonne devrait bel et bien convenir.
Et bien je pensais la même chose, mais en ayant tous les textes sur la colonne F, et les colonnes E et G vides, peut importe que je fusionne F avec E ou avec G, le texte se conserve bien.
Je vous mets un exemple en capture d'écran du résultat final :
Et avant cela donnait ça :
(on a ici aussi une mise en forme conditionnelle qui distingue les lignes en "SNT" de celles en "RCV")
Le but est donc que sur les lignes vertes ("RCV" donc) la case F fusionne avec la G et sur les grises, la case F fusionne avec la E.
Ce que la vba mise dans mon premier message fait sans problème, mais elle le fait ligne par ligne...
J'ai fais "trier" et mis au début toutes les lignes "RCV" et après toutes celles avec "SNT"
Du coup il me faudrait "juste" un bout de code pour fusionner et centrer les cellules F avec les cellules G sur une lignes donnée et reproduire sur chaque ligne de la plage définit. Et la même chose pour la colonne F et E...
Bonjour.
Une solution simple serait de déplacer les contenus de cellules de F vers E dans la partie qui doit être centrée sur ces deux colonnes.
Il ne faut jamais fusionner des cellules.
Sauf si on ne peut vraiment pas faire autrement.
Après étude de votre code et du résultat sur mon fichier, en fait ça ne rends pas vraiment comme prévu...
En effet, de mon coté j'ai des pavés de texte, genre 6 à 8 lignes facilement, du coup, on voit à peine l'effet de l’alignement à gauche ou à droite...
Je ne sais plus trop quoi faire...
Mon code de début de discussion ne peut vraiment pas se répliquer de ligne en ligne ?
Je sais que la fusion n'es pas l'idéal, mais là je ne vois pas d'autre solution... Et je pense que je vais devoir le faire à la main si il n'y a pas de solution...
Bien sûr que si puisque ROGER2327 (que je salue) s'est fendu d'un nouveau classeur, ce que personnellement je n'ai jamais envie de faire. Vous n'avez qu'a reprendre une partie de son code.
Après étude de votre code et du résultat sur mon fichier, en fait ça ne rends pas vraiment comme prévu...
En effet, de mon coté j'ai des pavés de texte, genre 6 à 8 lignes facilement, du coup, on voit à peine l'effet de l’alignement à gauche ou à droite...
(...)
Ce n'est pas ce que montrent vos captures d'écran.
Difficile de résoudre un problème quand c'est un autre qui est posé !
Bien que, comme Dranreb que je salue au passage, je considère que la fusion de cellules est une abomination dans la plupart des cas, voici une dernière tentative.