Fusionner des cellules ayant memes valeurs

Résolu
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015 - 22 janv. 2015 à 20:10
cs_Franck93150 Messages postés 31 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
--

7 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2015 à 20:23
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.
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2015 à 20:56
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.
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 janv. 2015 à 10:49
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).
1
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
22 janv. 2015 à 20:43
Oui, mais comment faire pour que excel détecte les plages de cellules consécutives identiques et les fusionnent .

--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
22 janv. 2015 à 21:07
Merci pour ton aide, je vais m'y mettre et je te tient au courant. Merci encore pour ton aide

--
0
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
23 janv. 2015 à 10:42
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
0
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
23 janv. 2015 à 18:40
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.


--
0
Rejoignez-nous