Fusionner des cellules ayant memes valeurs [Résolu]

Messages postés
32
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
17 février 2015
- - Dernière réponse : cs_Franck93150
Messages postés
32
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
17 février 2015
- 23 janv. 2015 à 18:40
Bonjour,

Je suis sur excel 2007, et j'ai un problème avec quelques cellules. dans ma colonne A j'ai des valeurs (par exemple sur la plage a1 à a6 j'ai la valeur 1; dans la plage a7 à a10 j'ai la valeur 2, ....). la plage total sur laquelle j'ai des valeurs va de a6:a36. Je cherche un moyen pour pouvoir fusionner les plages de cellules ayant même valeur.

Pouvez vous m'aider.
Merci par avance
--
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
1
Merci
Bonjour,
ta question est-elle finalement comment déterminer, dans une colonne, des plages de cellules consécutives ayant la même valeur ?
Car une fois cette détermination faite, il suffit d'appliquer la méthode merge à chacune de ces plages.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
1
Merci
Ben ...
Voilà bien là ton VRAI problème (et ta question aurait dû être celle-là,j avant même de parler de fusion) !
Ben ...
En parcourant en boucle, de la ligne 6 à la ligne 36 les cellules de la colonne A concernée ===>>>
si la cellule suivante est égale à la cellule en cours de boucle ===> on utilise Application.Union (à lire dans ton aide VBA) pour déterminer une plage "toto"
si la cellule suivante est différente ===>>> on fusionne (merge) toto (si non nothing) et on met à vide toto (set toto = nothing)
Voilà. A toi de commencer (c'est ici la règle) après avoir ouvert ton aide VBA sur chacun des termes que j'ai mis en gras dans ce message.
Tout cela est fort simple et j'attends donc que tu t'y mettes d'abord.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
1
Merci
Alors regarde :
1) en traitant en utilisant ce que je t'ai dit (Union) :
 Dim toto As Range
Application.DisplayAlerts = False ' pour ne pas avoir de message de confirmation
For i = 36 To 6 Step -1
If Range("B" & i - 1).Value = Range("B" & i).Value Then
If toto Is Nothing Then
Set toto = Application.Union(Range("B" & i - 1), Range("B" & i))
Else
Set toto = Application.Union(toto, Range("B" & i - 1))
End If
Else
If Not toto Is Nothing Then toto.Merge False
Set toto = Nothing
End If
Next
Application.DisplayAlerts = True ' pour rétablir les messages
Range("B6:B36").VerticalAlignment = xlCenter ' pour faire zouli

Je t'ai conduit vers cette méthode pour que tu l'apprennes.

2) sans même utiliser Union, maintenant (juste un peu d'analyse) :
Application.DisplayAlerts = False ' pour ne pas avoir de message de confirmation
For i = 36 To 6 Step -1
If i = 36 Then toto = i
If Range("B" & i - 1).Value = Range("B" & i).Value Then
titi = i - 1
Else
If titi <> "" Then Range("B" & toto & ":B" & titi).Merge False
toto = i - 1: titi = ""
End If
Next
Application.DisplayAlerts = True ' pour rétablir les messages
Range("B6:B36").VerticalAlignment = xlCenter ' pour faire zouli


NB : j'ai encore "dans mon sac" au moins deux autres manières. Elles appellent toutefois un niveau de compréhension beaucoup plus "fin" et/ou "acrobatique. Je m'abstiens donc de les montrer au débutant que tu sembles être (elles ne feraient que l'égarer).

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
32
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
17 février 2015
0
Merci
Oui, mais comment faire pour que excel détecte les plages de cellules consécutives identiques et les fusionnent .

--
Commenter la réponse de cs_Franck93150
Messages postés
32
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
17 février 2015
0
Merci
Merci pour ton aide, je vais m'y mettre et je te tient au courant. Merci encore pour ton aide

--
Commenter la réponse de cs_Franck93150
Messages postés
32
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
17 février 2015
0
Merci
Bonjour,
J'ai écrit ce code, mais il ne fonctionne pas. j'ai du mal avec la syntaxe des instructions. peut tu éclairer ma lanterne s'il te plait.


--Sub Macro1()
Range("a6:a36").Select
Application.Union(Range(Range("a6")), Range(Range("a36"))) = i
i = fusion
For i = i + 1 To Range("a6:a36").Value = Cells(i = i + 1, 2)
Cells(i = i + 1, 2) = Range("a6:a36").Value
Range("a6:a36").Merge

Next: Range("a6:a36") = False

End Sub

Merci par avance
Commenter la réponse de cs_Franck93150
Messages postés
32
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
17 février 2015
0
Merci
Merci pour ton aide, merci beaucoup. Cela fonctionne à merveille. je l'avoue je suis vraiment débutant, mais le VBA m'interresse beaucoup. Ton aide me donne encore plus envie de continuer à apprendre le VBA. Merci encore.


--
Commenter la réponse de cs_Franck93150