Groupe lignes de la mme couleur sur excel

Fermé
aminux Messages postés 189 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 31 juillet 2021 - 1 nov. 2010 à 18:35
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 6 nov. 2010 à 09:41
J'ai un fichier excel avec plusieurs lignes en couleur et je souhaiterais grouper les lignes de la même couleur. Existe-t-il un code pour cela svp ?
A voir également:

1 réponse

ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié par ccm81 le 5/11/2010 à 21:32
une macro qui peut faire l'affaire pour copier sur une autre feuille
au prealable
- nommer Tab la plage à copier
- nommer Copie une autre feuille
- depuis la feuille à coiper lancer la macro avec un bouton

Option Explicit   

Private Sub CommandButton1_Click()   

Const nblimax = 100   ' 100 couleurs de lignes maxi   

Dim nbli As Long   
Dim nbco As Long   

Dim li As Long, co As Long, lico As Long, numCoul As Long, nbCoul As Long   
Dim tabCoul(nblimax) As Long   
Dim coul As Long   
Dim coulId As Boolean   

' recuperer les nombres de lignes et de colonnes de tab   
  nbli = Range("Tab").Rows.Count   
  nbco = Range("Tab").Columns.Count   

' recuperer le tableau des couleurs   
  With Range("Tab")   
    nbCoul = 1   
    coul = .Cells(1, 1).Interior.Color   
    tabCoul(nbCoul) = coul   
    For li = 2 To nbli   
      coul = .Cells(li, 1).Interior.Color   
      coulId = False   
      For numCoul = 1 To nbCoul   
        coulId = coulId Or (coul = tabCoul(numCoul))   
      Next numCoul   
      If Not coulId Then   
        nbCoul = nbCoul + 1   
        tabCoul(nbCoul) = coul   
      End If   
    Next li   
  End With   
     
' recopier en regroupant les lignes de même couleur   
  Worksheets("Copie").Cells.ClearContents   
  With Range("Tab")   
    li = 0   
    lico = 0   
    For numCoul = 1 To nbCoul   
      For li = 1 To nbli   
        If .Cells(li, 1).Interior.Color = tabCoul(numCoul) Then   
          lico = lico + 1   
          For co = 1 To nbco   
            Worksheets("Copie").Cells(lico, co).Value = .Cells(li, co).Value   
            Worksheets("Copie").Cells(lico, co).Interior.Color = .Cells(li, co).Interior.Color   
          Next co   
        End If   
      Next li   
    Next numCoul   
  End With   
     
End Sub


voir le fichier joint en exemple avec ce lien
http://www.cijoint.fr/cjlink.php?file=cj201011/cijmto5Qgs.xls
1
Utilisateur anonyme
5 nov. 2010 à 22:29
Excellent code.
Par contre, si les couleurs des lignes sont issues soit d'un choix délibéré sur une valeur soit une mise en forme conditionnelle, alors un simple donnée triée suffira.
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
6 nov. 2010 à 09:41
exact, je ne me suis penché que sur les cas désesperes
0