Parcours et fusion en vba

tijocanard

XLDnaute Nouveau
Bonjour au forum,

Etant novice en vba, je cherche à parcourir une feuille et fusionner les cellules identiques.
Le but étant d'obtenir une certaine arborescence.

Un petit fichier bidon en exemple, en feuile 1 le problème et en feuille 2 le résultat attendu.

A force de recherche j'arrive à fusionner qu'une seule colonne. La macro:

Code:
Private Sub CommandButton3_Click()
Application.DisplayAlerts = False

Dim i As Long, j As Long

For i = 1 To Range("A65536").End(xlUp).Row
     j = 1
     While Cells(i + j, 1) = Cells(i, 1)
             Range(Cells(i, 1), Cells(i + j, 1)).MergeCells = True
             j = j + 1
     Wend
      i = i + j - 1
Next
  
Application.DisplayAlerts = True
    
End Sub

C'est pourtant tout con de parcourir chaque ligne et colonne pour comparer la valeur des cellules mais je débute en vba:p

Merci d'avance pour vos conseils
 

Pièces jointes

  • test.xls
    46.5 KB · Affichages: 70
  • test.xls
    46.5 KB · Affichages: 74
  • test.xls
    46.5 KB · Affichages: 70

Efgé

XLDnaute Barbatruc
Re : Parcours et fusion en vba

Bonjour tijocanard,
Et dire que je milite pour l'interdiction mondiale de la fusion de cellules...
Une proposition quand même, si tu n'ébruite pas l'affaire. Chhut ;)
VB:
Private Sub CommandButton3_Click()
Dim Col&, i&
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Col = 1 To 3 '3 colonnes dans l'exemple
    For i = Cells(Rows.Count, Col).End(xlUp).Row To 2 Step -1
        If Cells(i, Col) = Cells(i - 1, Col) Then Range(Cells(i, Col), Cells(i - 1, Col)).MergeCells = True
    Next i
Next Col
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Cordialement
 

tijocanard

XLDnaute Nouveau
Re : Parcours et fusion en vba

Je serais muet pour cette entorse à ta conviction ;)

Un grand merci à toi car ca marche du 1er coup, trop fort!

Pour aller un peu plus loin, est-il possible de colorier chaque colonne par une couleur différente? Pas la colonne entière mais jusqu'à la dernière cellule qui contient une valeur?

Encore un grand merci à toi Efgé (pas la 1ère fois que tu m'aides) :)
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Parcours et fusion en vba

Re
Une proposition en pièce jointe:
Onglet Fusion : Reprise de la première version
Onglet Fuion+Couleurs : Proposition pour ta dernière question
Onglet Arlequin pour le Fun...
Cordialement
 

Pièces jointes

  • tijocanard(2).zip
    24.9 KB · Affichages: 41

tijocanard

XLDnaute Nouveau
Re : Parcours et fusion en vba

Merci pour ta réponse nocturne!

J'aime bien l'onglet arlequin :cool:

Dernière finitions:
je souhaite insérer une ligne quand la valeur de la colonne A change, j'ai essayé un test du genre
Code:
If Cells(i, 1) <> Cells(i + 1, 1) Then
Range(Cells(i, 1), Cells(i + 1, 1)).EntireRow.Insert
i = i + 1
End If
Mais vu que je suis une bique ca ne marche pas :eek:

Et il peut arriver qu'il n'y ait pas de valeur en colonne3, du coup les cellules vides sont fusionnées, est-il possible de faire un test si cellule fusionnée vide on défusionne :confused:

Ca aurait été plus logique du coup de fusionner que les cellules non vide, mais ca je te l'avais pas dit!

Bref pour meiux comprendre le même fichier avec ce que je souhaiterai

Encore merci pour tout et promis je t'emmbète plus après :)
 

Pièces jointes

  • tijocanard.zip
    16.5 KB · Affichages: 29

Discussions similaires

Réponses
0
Affichages
177
Réponses
7
Affichages
410
Réponses
16
Affichages
1 K
Réponses
2
Affichages
494

Statistiques des forums

Discussions
312 496
Messages
2 088 983
Membres
103 997
dernier inscrit
SET2A