Macro VBA fusion de plusieurs lignes en une seule cellule selon colonne A

Bonjour à tous,

Première fois sur ce forum pour moi, je ne suis pas un aficionado de VBA, ni de programmation en général et l'évite tant que possible, mais là je n'ai pas le choix de l'utiliser et je me vois bien bloqué.

J'ai cherché sur le forum une solution à mon problème, mais n'ai pas trouvé ce que je cherchais.

Pour essayer d'expliquer simplement mon souhait:

Si dans colonne A: Patrick est une fusion de A3 à A7

alors je souhaite que les cellules B3 à B7 fusionnent en une seule cellule sans perte de contenu.

Pareil pour C3 à C7, D3 à D7 etc jusqu'à disons K.

Ensuite même choses pour les lignes suivantes:

Si dans colonne A: Jean est une fusion de A8 à A10

alors je souhaite que les cellules B8 à B10 fusionnent en une seule cellule sans perte de contenu.

Pareil pour C8 à C10, D8 à D10 etc jusqu'à disons K.

etc etc etc

Pour mieux comprendre un fichier ci-joint qui montre mon extraction de données / le résultat que je souhaiterai

Je fais surement doublon avec un sujet similaire, étant donné que ma question parait "simple", mais je n'ai pas trouvé lors de mes recherches.

Merci par avance à ceux qui prendront le temps de m'aider !

Bonjour,

Voici une proposition avec un code adapté d'un problème plus ou moins similaire, vu récemment...

La macro dédoublonne et surtout défusionne car les cellules fusionnées rendent la pratique d'Excel périlleuse et seraient sans intérêt dans votre cas. Elle se déclenche au double-clic sur la feuille 1. Lorsqu'on redouble-clique, on réimporte les données brutes de la feuille "pourtest" pour faire des essais sereinement. Cette feuille est donc à préserver durant les tests.

Le code porte sur la zone utilisée donc il ne faut rien d'encombrant, que les données (le tableau) à dédoublonner.

Personnellement, je ne pense pas qu'Excel soit pensé pour gérer les données de cette façon. Normalement, il ne faut pas avoir de tableau avec des cellules fusionnées ou des valeurs agrégées. Il est normal justement de se retrouver avec des répétitions sur certains champs. Ce sont ces répétitions qui permettent de faciliter l'utilisation des outils d'Excel et les formules.

Par exemple, avec un facturier, on ne met pas toutes les factures pour un même client sur une même ligne. On a une ligne par facture avec à chaque fois le nom du client. Et bien dans votre cas, il faudrait faire pareil, en créant des colonnes supplémentaires s'il le faut.

Cdlt,

Bonjour,

Pas besoin de fusionner les cellules, au contraire.

Voici une proposition :

101jimn.xlsm (21.51 Ko)

J'ai bien conscience que la fusion de cellules rend la manipulation d'Excel périlleuse, mais je n'ai pas le choix, c'est un export d'un tableau Word.

Pour info: ces données proviennent d'un Forms, les balises (rendre invisible si non rempli par exemple) de ce Forms ne fonctionne pas sur Excel... mais uniquement sur Word ! D'où ce format d'export pas top qui n'est autre qu'un copier/coller d'un tableau Word...

En tout cas, un grand merci pour votre aide, il me reste une dernière question:

Peut-on faire en sorte de garder chacune des lignes sans fusionner celles qui ont le même contenu colonne A?

Export brut: 1 cellule A fusionnée = 1 équipement >> 6 lignes dans les autres colonnes

Votre Macro actuel: 10 cellules A "Patrick" fusionnées >> tous les équipements contenant "Patrick" en A réunis en une seule cellule = 10 équipements dans la même cellule = 60 infos fusionnées dans la même cellule des autres colonnes

Ce que je souhaite: 10 cellules A "Patrick" fusionnées >> 10 lignes différentes = 1 équipement/ligne = 6 infos par cellule = 10 lignes de "Patrick" différentes

Mon fichier Excel du 1er post explique peut-être mieux que moi !

Merci beaucoup Patrice ! C'est parfait exactement ce que je voulais !

Trouver résolution à mon problème en 2 heures, quelle bonheur !

Je me répète: un grand merci !

Re, bonjour Patrice,

D'accord, je comprends mieux.

Oui, désolé, j'ai eu un petit doute mais j'ai pensé que vous aviez répété les prénoms pour l'exemple. Sinon, il aurait fallu que je modifie 2 ou 3 petites choses pour parvenir au résultat espéré.

En tout cas, je suis content que vous ayez une solution fonctionnelle !

Bonne continuation,

Bonjour,

j'ai une demande similaire a celle de l'auteur, malheureusement quand j'applique le code de Patrice33740 j'ai cette erreur :

Impossible de définir la propriété RowHeight de la classe range.

Qui concerne cette partie :

' - hauteur
    hgt = 0
    For Each cel In fus.Cells
      hgt = hgt + cel.RowHeight
    Next cel
    fus.Rows(1).RowHeight = hgt

Que dois je modifier, adapter ? je n'ai changé seulement le nombre de colonne impacter par la macro.

Merci à vous.

Bonjour,

La feuille est-t'elle protégée ?

Y-a-t'il plusieurs tableaux cote à cote ?

Joint un fichier.

16test-qe.xlsm (27.89 Ko)

Bonjour,

Je n'ai pas de protection sur cette feuille, la macro fonctionne parfois avec des extraits de mon tableau. Pour info le tableau original comporte plus de 1300lignes.

Voici un fichier avec un extrait ou la macro qui indique une erreur.

Bonsoir,

Effectivement la hauteur de la ligne dépasse la hauteur maximale autorisée.

Insère une ligne pour passer la hauteur de toutes les lignes en automatique.

Entre ces 2 lignes :

  ' Mise en forme tableau
  Do While drL >= prL

Insère la ligne comme suit :

  ' Mise en forme tableau
  wsh.Rows(prL & ":" & drL).AutoFit
  Do While drL >= prL

Merci pour ton aide Patrice !

Je l'ai adapté pour mon fichier (car encore trop hautes) en réduisant la hauteur au minimum puis en utilisant .Autofit a la fin sur les lignes fusionnées.

Bonne journée.

Rechercher des sujets similaires à "macro vba fusion lignes seule colonne"