Fusion de cellules sous conditions

Julien Lefèvre -  
melanie1324 Messages postés 1561 Statut Membre -
Bonjour,

J'ai un tableau qui a cette aspect :

Produit1 A D
Produit1 A D
Produit1 A D
Produit2 A E
Produit2 B E
Produit2 C E

Ma Macro devra me permettre de fusionner sous condition.
Dans l'exemple du haut, pour le produit1, les 3A vont fusionner ensemble, tout comme les 3D. Pour le produit2, pas de fusion pour A, B, C qui sont différents, fusion pour E qui est commin au produit2.

1 réponse

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

    Question bête mais pourquoi ne pas utiliser les filtres avancés qui permettent de retirer les doublons.
    Ou de faire un tableau croisé dynamique ?
    0
    1. Julllef
       
      Hélas, ça n'ira pas car mon agence de communication a besoin de ce fichier avec des cellules fusionnées. Seule une macro peut me permettre de le faire.
      0
    2. melanie1324 Messages postés 1561 Statut Membre 156
       
      hello,
      si tu veux une macro : ssaie celle là

      sub macro_fusion ()

      feuilledepart = sheets("nomfeuille");Name ' modifie le nomfeuille avec ton tableau
      feuillearrivee = sheets("nomfeuille2").Name 'la feuille ou tu veux que ce soit fusionné


      'je pars du principe que te slibellés sont enl ligne 1 et que ton tableau commence en ligne 2 et que tes produits sont en colonne A et les 2 autres en B et C

      'définition des variables
      lignedépart=2
      lignearrivée = 2
      colonnedépart = 2
      sheets(feuilledepart).select 'modifie le nom feuilledepart
      rows(1).copy
      sheets(feuillearrivee).select 'modifie le nom feuillearrivée
      cells(1,1).select
      Activesheet.paste

      sheets(feuilledepart).select
      lignedépart=2

      '1ère boucle qui va balayer toutes les colonnes de ton tableau
      do while cells(lignedépart,colonnedépart) <> ""

      sheets(feuilledepart).select

      '2ème boucle qui va balayer toutes les lignes de ton tableau
      do while cells(lignedepart,1) <> ""


      sheets(feuilledepart).select
      produit= cells(lignedepart,1)
      valeur = cells(lignedépart,2)
      sheets(feuillearrivee).select
      trouve = ""

      sheets(feuillearrivee).select
      'la suite va chercher dans la feuille d'arrivée si les données de la feuille de départ sont déjà présents
      do while cells(lignearrivée,1) <> ""

      if cells(lignearrivée,1) = produit then
      if cells(lignearrivée,2) = valeur then
      cells(lignearrivée,20) = X
      trouve = 1
      end if
      end if
      lignearrivée = ""
      loop

      'si les données n'ont pas été trouvées, on les rajoute
      if trouve = ""
      cells(lignearrivée,1) = produit
      cells(lignearrivée,2) = valeur
      end if

      lignedepart = lignedepart+1
      loop
      colonnedépart = colonnedépart+1
      lignedépart=2
      loop

      'Cette boucle permet de supprimer toutes les lignes pour lesquelles les données n'ont pas été trovuées depuis la feuille de départ
      sheets(feuillearrivee).select
      lignearrivée = 1
      do while cells(lignearrivée,1) <> ""
      if cells(lignearrivée,20) = X then
      cells(lignearrivée,20) =""
      else
      rows(lignearrivée).Delete Shift
      lignearrivée=lignearrivée-1
      end if
      lignearrivée=lignearrivée+1
      loop

      end sub
      0