Groupe lignes de la mme couleur sur excel

aminux Messages postés 189 Date d'inscription   Statut Membre Dernière intervention   -  
ccm81 Messages postés 11033 Statut Membre -
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 ?

1 réponse

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. Utilisateur anonyme
       
      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
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      exact, je ne me suis penché que sur les cas désesperes
      0