Fusion de cellules sous conditions

Fermé
Julien Lefèvre - 8 juin 2016 à 16:07
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 9 juin 2016 à 06:39
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.
A voir également:

1 réponse

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
8 juin 2016 à 19:28
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
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
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
9 juin 2016 à 06:39
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