Pouvoir ajouter des colones sans modifier ma macro

Résolu
bourrineur -  
 Maurice -
Bonjour,

J'ai créé une macro (pas optimale je pense bien mais sans aucune connaissance, j'ai fait au mieux) qui marche comme je le souhaite mais qui ne me permet pas de rajouter des colonnes dans mon tableau sans que cela est une influence sur le résultat escompté. Suite à mes recherches, je n'ai pas trouvé de solution que j'ai réussi à comprendre et donc à implémenter à ma macro. Pourriez vous m'apporter vos lumières. Merci.

/

Sub Colorer_cumul_prog()
'
' Colorer_cumul_prog Macro
'
' Touche de raccourci du clavier: Ctrl+O
'
 
Dim l As Long
 Dim f As Integer
 Dim Plage As Range
 Dim Lignes As Long
 For f = 1 To Sheets.Count
 
 Valeur = Sheets(f).Range("M" & Rows.Count).End(xlUp).Row
 
For i = 1 To Valeur
 
  Sheets(f).Range("n" & i).Interior.ColorIndex = 0
  
    If Sheets(f).Range(Rechercheh(Affect) & i).Value = "INS01" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 8
        Sheets(f).Range("K" & i).Interior.ColorIndex = 8
        Sheets(f).Range("L" & i).Interior.ColorIndex = 8
 
    End If
 
    If Sheets(f).Range("M" & i).Value = "INS02" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 6
        Sheets(f).Range("K" & i).Interior.ColorIndex = 6
        Sheets(f).Range("L" & i).Interior.ColorIndex = 6
 
    End If
    
 If Sheets(f).Range("M" & i).Value = "INS03" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 26
        Sheets(f).Range("K" & i).Interior.ColorIndex = 26
        Sheets(f).Range("L" & i).Interior.ColorIndex = 26
 
    End If
 
 If Sheets(f).Range("M" & i).Value = "INS04" Then
 
        Sheets(f).Range("M" & i).Interior.Color = RGB(242, 221, 220)
        Sheets(f).Range("K" & i).Interior.Color = RGB(242, 221, 220)
        Sheets(f).Range("L" & i).Interior.Color = RGB(242, 221, 220)
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS05" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 45
        Sheets(f).Range("K" & i).Interior.ColorIndex = 45
        Sheets(f).Range("L" & i).Interior.ColorIndex = 45
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS06" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 35
        Sheets(f).Range("K" & i).Interior.ColorIndex = 35
        Sheets(f).Range("L" & i).Interior.ColorIndex = 35
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS07" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 6
        Sheets(f).Range("K" & i).Interior.ColorIndex = 6
        Sheets(f).Range("L" & i).Interior.ColorIndex = 6
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS08" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 20
        Sheets(f).Range("K" & i).Interior.ColorIndex = 20
        Sheets(f).Range("L" & i).Interior.ColorIndex = 20
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS09" Then
 
        Sheets(f).Range("M" & i).Interior.Color = RGB(204, 153, 255)
        Sheets(f).Range("K" & i).Interior.Color = RGB(204, 153, 255)
        Sheets(f).Range("L" & i).Interior.Color = RGB(204, 153, 255)
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS10" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 6
        Sheets(f).Range("K" & i).Interior.ColorIndex = 6
        Sheets(f).Range("L" & i).Interior.ColorIndex = 6
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS11" Then
 
        Sheets(f).Range("M" & i).Interior.Color = RGB(146, 208, 80)
        Sheets(f).Range("K" & i).Interior.Color = RGB(146, 208, 80)
        Sheets(f).Range("L" & i).Interior.Color = RGB(146, 208, 80)
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS12" Then
 
        Sheets(f).Range("M" & i).Interior.Color = RGB(242, 221, 220)
        Sheets(f).Range("K" & i).Interior.Color = RGB(242, 221, 220)
        Sheets(f).Range("L" & i).Interior.Color = RGB(242, 221, 220)
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS13" Then
 
        Sheets(f).Range("M" & i).Interior.Color = RGB(215, 228, 188)
        Sheets(f).Range("K" & i).Interior.Color = RGB(215, 228, 188)
        Sheets(f).Range("L" & i).Interior.Color = RGB(215, 228, 188)
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS14" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 6
        Sheets(f).Range("K" & i).Interior.ColorIndex = 6
        Sheets(f).Range("L" & i).Interior.ColorIndex = 6
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS15" Then
 
        Sheets(f).Range("M" & i).Interior.Color = RGB(146, 208, 80)
        Sheets(f).Range("K" & i).Interior.Color = RGB(146, 208, 80)
        Sheets(f).Range("L" & i).Interior.Color = RGB(146, 208, 80)
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS16" Then
 
        Sheets(f).Range("M" & i).Interior.Color = RGB(242, 221, 220)
        Sheets(f).Range("K" & i).Interior.Color = RGB(242, 221, 220)
        Sheets(f).Range("L" & i).Interior.Color = RGB(242, 221, 220)
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS17" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 24
        Sheets(f).Range("K" & i).Interior.ColorIndex = 24
        Sheets(f).Range("L" & i).Interior.ColorIndex = 24
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS18" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 6
        Sheets(f).Range("K" & i).Interior.ColorIndex = 6
        Sheets(f).Range("L" & i).Interior.ColorIndex = 6
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS19" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 35
        Sheets(f).Range("K" & i).Interior.ColorIndex = 35
        Sheets(f).Range("L" & i).Interior.ColorIndex = 35
 
    End If
 If Sheets(f).Range("M" & i).Value = "INS99" Then
 
        Sheets(f).Range("M" & i).Interior.ColorIndex = 15
        Sheets(f).Range("K" & i).Interior.ColorIndex = 15
        Sheets(f).Range("L" & i).Interior.ColorIndex = 15
 
    End If

    If Sheets(f).Range("M" & i).Value <> Sheets(f).Range("N" & i) Then
 
        Sheets(f).Range("N" & i).Interior.ColorIndex = 3
       
 
    End If
 
 If Sheets(f).Range("N" & i).Value = "Déjà fait par" Then
 
        Sheets(f).Range("N" & i).Interior.ColorIndex = 0
       
 
    End If
Next i
Next f

End Sub

15 réponses

  1. Zoul67 Messages postés 2001 Statut Membre 149
     
    Bonjour,

    Tu portes bien ton pseudo au vu de la macro...
    Une mise en forme conditionnelle sur les colonnes K, L et M n'est pas possible (si tu as un Excel récent, tu peux avoir un nombre de conditions illimité) ? Parce que la macro se moque du contenu de ces colonnes, elle coloriera toujours celles-ci et pas d'autres si tu insères ou supprimes des colonnes.

    A+
    0
  2. bourrineur
     
    Les valeurs en K,L et M ne sont pas les mêmes donc je ne sais pas gérer les mises en forme conditionnelles dans ces cas là. De plus j'ai incorporé un comparatif entre les colonnes M et N (coloration de N si différent de M) et c'est un fichier que je recréé entièrement (via une macro que l'on m'a fourni) et il serait bien plus fastidieux il me semble de régler les mises en forme conditionnelles chaque mois et ce pour 20 affectations différentes. Là un simple CTRL O me fait le taf et je peut éventuellement donner ma macro à mes collègues si elle les intéresse.

    PS. voici la bonne macro. Sur celle que j'ai fourni, il y a des traces de mes expérimentations

    Sub Colorer_cumul_prog()
    '
    ' Colorer_cumul_prog Macro
    '
    ' Touche de raccourci du clavier: Ctrl+O
    '
     
    Dim l As Long
     Dim f As Integer
     Dim Plage As Range
     Dim Lignes As Long
     For f = 1 To Sheets.Count
     
     Valeur = Sheets(f).Range("M" & Rows.Count).End(xlUp).Row
     
    For i = 1 To Valeur
     
      Sheets(f).Range("n" & i).Interior.ColorIndex = 0
      
        If Sheets(f).Range("M" & i).Value = "INS01" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 8
            Sheets(f).Range("K" & i).Interior.ColorIndex = 8
            Sheets(f).Range("L" & i).Interior.ColorIndex = 8
     
        End If
     
        If Sheets(f).Range("M" & i).Value = "INS02" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 6
            Sheets(f).Range("K" & i).Interior.ColorIndex = 6
            Sheets(f).Range("L" & i).Interior.ColorIndex = 6
     
        End If
        
     If Sheets(f).Range("M" & i).Value = "INS03" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 26
            Sheets(f).Range("K" & i).Interior.ColorIndex = 26
            Sheets(f).Range("L" & i).Interior.ColorIndex = 26
     
        End If
     
     If Sheets(f).Range("M" & i).Value = "INS04" Then
     
            Sheets(f).Range("M" & i).Interior.Color = RGB(242, 221, 220)
            Sheets(f).Range("K" & i).Interior.Color = RGB(242, 221, 220)
            Sheets(f).Range("L" & i).Interior.Color = RGB(242, 221, 220)
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS05" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 45
            Sheets(f).Range("K" & i).Interior.ColorIndex = 45
            Sheets(f).Range("L" & i).Interior.ColorIndex = 45
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS06" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 35
            Sheets(f).Range("K" & i).Interior.ColorIndex = 35
            Sheets(f).Range("L" & i).Interior.ColorIndex = 35
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS07" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 6
            Sheets(f).Range("K" & i).Interior.ColorIndex = 6
            Sheets(f).Range("L" & i).Interior.ColorIndex = 6
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS08" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 20
            Sheets(f).Range("K" & i).Interior.ColorIndex = 20
            Sheets(f).Range("L" & i).Interior.ColorIndex = 20
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS09" Then
     
            Sheets(f).Range("M" & i).Interior.Color = RGB(204, 153, 255)
            Sheets(f).Range("K" & i).Interior.Color = RGB(204, 153, 255)
            Sheets(f).Range("L" & i).Interior.Color = RGB(204, 153, 255)
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS10" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 6
            Sheets(f).Range("K" & i).Interior.ColorIndex = 6
            Sheets(f).Range("L" & i).Interior.ColorIndex = 6
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS11" Then
     
            Sheets(f).Range("M" & i).Interior.Color = RGB(146, 208, 80)
            Sheets(f).Range("K" & i).Interior.Color = RGB(146, 208, 80)
            Sheets(f).Range("L" & i).Interior.Color = RGB(146, 208, 80)
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS12" Then
     
            Sheets(f).Range("M" & i).Interior.Color = RGB(242, 221, 220)
            Sheets(f).Range("K" & i).Interior.Color = RGB(242, 221, 220)
            Sheets(f).Range("L" & i).Interior.Color = RGB(242, 221, 220)
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS13" Then
     
            Sheets(f).Range("M" & i).Interior.Color = RGB(215, 228, 188)
            Sheets(f).Range("K" & i).Interior.Color = RGB(215, 228, 188)
            Sheets(f).Range("L" & i).Interior.Color = RGB(215, 228, 188)
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS14" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 6
            Sheets(f).Range("K" & i).Interior.ColorIndex = 6
            Sheets(f).Range("L" & i).Interior.ColorIndex = 6
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS15" Then
     
            Sheets(f).Range("M" & i).Interior.Color = RGB(146, 208, 80)
            Sheets(f).Range("K" & i).Interior.Color = RGB(146, 208, 80)
            Sheets(f).Range("L" & i).Interior.Color = RGB(146, 208, 80)
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS16" Then
     
            Sheets(f).Range("M" & i).Interior.Color = RGB(242, 221, 220)
            Sheets(f).Range("K" & i).Interior.Color = RGB(242, 221, 220)
            Sheets(f).Range("L" & i).Interior.Color = RGB(242, 221, 220)
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS17" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 24
            Sheets(f).Range("K" & i).Interior.ColorIndex = 24
            Sheets(f).Range("L" & i).Interior.ColorIndex = 24
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS18" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 6
            Sheets(f).Range("K" & i).Interior.ColorIndex = 6
            Sheets(f).Range("L" & i).Interior.ColorIndex = 6
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS19" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 35
            Sheets(f).Range("K" & i).Interior.ColorIndex = 35
            Sheets(f).Range("L" & i).Interior.ColorIndex = 35
     
        End If
     If Sheets(f).Range("M" & i).Value = "INS99" Then
     
            Sheets(f).Range("M" & i).Interior.ColorIndex = 15
            Sheets(f).Range("K" & i).Interior.ColorIndex = 15
            Sheets(f).Range("L" & i).Interior.ColorIndex = 15
     
        End If
    
        If Sheets(f).Range("M" & i).Value <> Sheets(f).Range("N" & i) Then
     
            Sheets(f).Range("N" & i).Interior.ColorIndex = 3
           
     
        End If
     
     If Sheets(f).Range("N" & i).Value = "Déjà fait par" Then
     
            Sheets(f).Range("N" & i).Interior.ColorIndex = 0
           
     
        End If
    Next i
    Next f
    
    End Sub
    0
    1. Zoul67 Messages postés 2001 Statut Membre 149
       
      Les valeurs en K,L et M ne sont pas les mêmes donc je ne sais pas gérer les mises en forme conditionnelles dans ces cas là.
      --> Il est faisable de faire une MFC par rapport à la valeur d'une autre cellule que celle qu'on veut mettre en forme.

      il serait bien plus fastidieux
      OK

      Là un simple CTRL O
      Faut faire attention à l'utilisation d'un raccourci utilisé pour d'autres choses (ici, l'ouverture d'un fichier). Un jour j'ai voulu aider un collègue et ai voulu annuler une saisie ; mon Ctrl-Z a supprimé les saisies qu'il avait mis une heure à faire.

      J'en reviens du coup au problème initial : qu'est-ce qui ne fonctionne pas à l'ajout d'une colonne ? Et quand ajoutes-tu cette colonne ? Ou quel est le résultat escompté et en quoi le résultat obtenu actuellement est-il différent ?
      0
    2. Bourrineur Messages postés 5 Statut Membre
       
      Bonjour,

      Désolé de ne pas t'avoir répondu mais je n'avais pas vu ce post coincé entre le mien et celui de Maurice. Pour le raccourci, étant donné que je ne me sert pas de CTRL O, je n'ai pas vu de problème. Maintenant vu ce que tu me dit, je vais voir pour une autre option (créer un bouton sur la feuille par ex.). Merci pour l'info.
      0
  3. Maurice
     
    Bonjour
    je pense quil faut refaire ta macro

    Voila un ex:


    Sub Colorer()
    Dim L As Long
    Dim F As Integer
    Dim Plage As Range
    Dim Lignes As Long
    For F = 1 To Sheets.Count
    With Sheets(F)
    .Select
    Valeur = .Range("M" & Rows.Count).End(xlUp).Row
    For L = 1 To Valeur
    Coul = -4142
    .Range("N" & L).Interior.ColorIndex = Coul
    Select Case .Range("M" & L).Value
    Case "INS01"
    Coul = 8
    Case "INS02"
    Coul = 6
    Case "INS03"
    Coul = 26
    End Select
    .Range("M" & L).Interior.ColorIndex = Coul
    .Range("K" & L).Interior.ColorIndex = Coul
    .Range("L" & L).Interior.ColorIndex = Coul
    If .Range("M" & L).Value <> .Range("N" & L) Then
    .Range("N" & L).Interior.ColorIndex = 3
    End If
    Next
    End With
    Next
    End Sub



    A+
    Maurice
    0
  4. bourrineur
     
    Bon, j'ai refait la macro en suivant la méthode de Maurice. Par contre ej ne peut toujours pas ajouter de colonnes sans que cela ne pose de problèmes (j'ajoute des colonnes tous les 6 mois sur mes fichiers).

    Voici la nouvelle version

    Sub Colorer2()
    Dim L As Long
    Dim F As Integer
    Dim Plage As Range
    Dim Lignes As Long
    For F = 1 To Sheets.Count
    With Sheets(F)
    .Select
    Valeur = .Range("M" & Rows.Count).End(xlUp).Row
    For L = 1 To Valeur
    Coul = -4142
    .Range("N" & L).Interior.ColorIndex = Coul
    Select Case .Range("M" & L).Value
    Case "INS01"
    Coul = 8
    Case "INS02"
    Coul = 6
    Case "INS03"
    Coul = 26
    Case "INS04"
    Coul = 38
    Case "INS05"
    Coul = 45
    Case "INS06"
    Coul = 35
    Case "INS07"
    Coul = 6
    Case "INS08"
    Coul = 20
    Case "INS09"
    Coul = 39
    Case "INS10"
    Coul = 6
    Case "INS11"
    Coul = 43
    Case "INS12"
    Coul = 38
    Case "INS13"
    Coul = 35
    Case "INS14"
    Coul = 6
    Case "INS15"
    Coul = 43
    Case "INS16"
    Coul = 38
    Case "INS17"
    Coul = 24
    Case "INS18"
    Coul = 6
    Case "INS19"
    Coul = 35
    Case "INS99"
    Coul = 15
    End Select
    .Range("M" & L).Interior.ColorIndex = Coul
    .Range("K" & L).Interior.ColorIndex = Coul
    .Range("L" & L).Interior.ColorIndex = Coul
    If .Range("M" & L).Value <> .Range("N" & L) Then
    .Range("N" & L).Interior.ColorIndex = 3
    End If
    If Sheets(F).Range("N" & L).Value = "Déjà fait par" Then

    Sheets(F).Range("N" & L).Interior.ColorIndex = 0

    End If
    Next
    End With
    Next
    End Sub

    PS : les colonnes ciblées ont pour titre "Date" K, "Prec" L, "Affect" M et "Déjà fait par" N.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Maurice
     
    Re
    corrige deja macro

    If .Range("N" & L).Value = "Déjà fait par" Then
       .Range("N" & L).Interior.ColorIndex = -4142
    End If
    

    si ti rajoute une colonne je voie pas comment faire en automatique

    A+
    Maurice
    0
  7. bourrineur
     
    Voilà, c'est corrigé.
    En fait ce qu'il faut c'est que la macro soit définie pour agir en fonction des titres des colonnes et non pas de leurs lettres d'origine.
    0
  8. Maurice
     
    re
    si tu ajoute une colonne sa change quoi dans ta macro

    la source ou les cibles

    car la sans modele dur a voir

    A+
    Maurice
    0
  9. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    nomme ta cellule M1 Affect par exemple et :
    Range("Affect").Offset(L - 1).Interior.ColorIndex = 3

    Le nom suivra les insertions/suppressions de lignes et colonnes.
    En plus ton code sera plus lisible.

    Et tu pourrais définir tes chaines et couleurs affectées sur une feuille de paramétrage à part où tu cherches la chaine et récupères la couleur.
    Plus simple à modifier (liste et couleurs) et code plus court.
    Exemple : https://www.cjoint.com/c/DLlt4g76DDZ

    eric
    0
  10. bourrineur
     
    Voici le fichier
    http://www.cjoint.com/data/0LlusKarvYb.htm


    Le but est de colorer sur la feuille "cumul. tout les 6 mois je rajoute une colonne Horo.
    0
  11. Maurice
     
    Re
    attention la macro fait toute les feuilles

    il faut la modifier pour la feuille cumul

    A+

    Maurice
    0
    1. bourrineur
       
      oui, j'ai vu et fait la correction
      0
  12. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    0
    1. bourrineur
       
      Non, je l'ai vu, mais ce n'est pas un menu déroulant par cellule que je veux. A moins que je n'ai rien compris à ton exemple (ce qui est fort possible étant donné que comme je l'ai dit, je n'y connais rien en macro. Je prend des bouts par ci par là et j'adapte à mes besoins et en fonction de ce que j'ai pu en comprendre).
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Ca c'est la 2ème partie. Pour faire autrement que 20 Case "xxx" dans ton code.
      C'est un plus, avec un exemple pour te montrer... A toi d'adapter si ça t'intéresse
      Il faut lire le début aussi !
      Et même si la réponse ne te convient pas il est de bon ton de faire un retour à ceux qui prennent du temps pour toi.
      eric
      0
      1. bourrineur > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Pour le retour, désolé mais je ne faisais qu'un passage rapide sur le Pc à ce moment là.
        En ce qui concerne le début, je pensait que ça avais un lien avec l'exemple (mais du coup je comprend mieux pourquoi je n'arrivais pas a trouver le rapport entre les 2)
        .
        Par contre
        "Range("Affect").Offset(L - 1).Interior.ColorIndex = 3"

        Je ne comprend pas ce que ça dit ni où je doit le mettre.

        "nomme ta cellule M1 Affect" et alors là, je nage complet.

        Après, ne pas se méprendre, j'apprécie grandement le temps qui m'est accordé par vous et le mesure à sa juste valeur. J'ai repris le code de Maurice car j'ai pu comprendre ce que ce code voulais dire et adapter des éléments qui me manquait. Mais j'ai d'énormes lacunes. je ne comprend pas tout ce qui se passe autour ( DIM, NEXT, END IF ...)
        0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      J'ai pris la colonne M en exemple (nomme ta cellule M1 Affect), cette ligne remplace donc :
      .Range("K" & L).Interior.ColorIndex = Coul

      par :
      Range("Affect").Offset(L - 1).Interior.ColorIndex = Coul
      0
      1. bourrineur > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Ok. Donc en suivant ta méthode (j'ai trouvé via Google ce que tu voulais dire par "nomme ta cellule M1 Affect"), J'obtiens ceci :

        Sub Colorer2()
        Dim L As Long
        Dim F As Integer
        Dim Plage As Range
        Dim Lignes As Long
        With Sheets("Cumul")
        .Select
        Valeur = .Range("M" & Rows.Count).End(xlUp).Row
        For L = 1 To Valeur
        Coul = -4142
        .Range("Déjà_fait_par").Offset(L - 1).Interior.ColorIndex = Coul
        Select Case .Range("Affect").Offset(L - 1).Value
        Case "INS01"
        Coul = 8
        Case "INS02"
        Coul = 6
        Case "INS03"
        Coul = 26
        Case "INS04"
        Coul = 38
        Case "INS05"
        Coul = 45
        Case "INS06"
        Coul = 35
        Case "INS07"
        Coul = 6
        Case "INS08"
        Coul = 20
        Case "INS09"
        Coul = 39
        Case "INS10"
        Coul = 6
        Case "INS11"
        Coul = 43
        Case "INS12"
        Coul = 38
        Case "INS13"
        Coul = 35
        Case "INS14"
        Coul = 6
        Case "INS15"
        Coul = 43
        Case "INS16"
        Coul = 38
        Case "INS17"
        Coul = 24
        Case "INS18"
        Coul = 6
        Case "INS19"
        Coul = 35
        Case "INS99"
        Coul = 15
        End Select
        .Range("Affect").Offset(L - 1).Interior.ColorIndex = Coul
        .Range("Date").Offset(L - 1).Interior.ColorIndex = Coul
        .Range("Prec").Offset(L - 1).Interior.ColorIndex = Coul

        If .Range("Affect").Offset(L - 1).Value <> .Range("Déjà_fait_par").Offset(L - 1) Then
        .Range("Déjà_fait_par").Offset(L - 1).Interior.ColorIndex = 3
        End If
        If Sheets("Cumul").Range("Déjà_fait_par").Offset(L - 1).Value = "Déjà fait par" Then

        Sheets("Cumul").Range("Déjà_fait_par").Offset(L - 1).Interior.ColorIndex = -4142


        End If
        Next
        End With
        End Sub


        Ça marche bien. Par contre si j'ai bien suivi, je suis obligé de renommer les colonnes pour chaque fichier que je créé. Il n'y a pas un moyen d'intégrer à la macro une commande qui renomme les colonnes en fonction de l'intitulé de la 1ère ligne ?


        Edit : Par contre je n'ai pas modifié la ligne
        Valeur = .Range("M" & Rows.Count).End(xlUp).Row
        ça marche malgré tout mais du coup je ne comprend pas à quoi elle sert
        0
  13. Maurice
     
    Bonjour

    Voila un model

    http://cjoint.com/?3LmlNyNYMkF

    tu rajout ta colonne dans Cumul1
    et modifier la macro Cumul1 pour voir la diference et apres on voie si on peux fair une seule macro

    A+

    Maurice
    0
  14. bourrineur
     
    Bonjour,

    Voilà

    http://cjoint.com/?0Lmt4wDPgbu

    En cumul je n'ai rien touché et en cumul1 j'ai ajouté ma colonne et modifié la macro
    0
  15. Maurice
     
    Bonjour

    test avec la colonne "Affect" a ne pas changer le nom de la colonne

    Sub Colorer()
    Dim L As Long
    Dim F As Integer
    Dim Plage As Range
    Dim Lignes As Long
    Dim Col As Long
    Application.ScreenUpdating = False
       Sheets(Feuil6.Name).Select
          Col = Cells.Find(What:="Affect").Column
             Lignes = Cells(Rows.Count, Col).End(xlUp).Row
             For L = 1 To Lignes
                Coul = -4142
                Cells(L, Col + 1).Interior.ColorIndex = Coul
                   Select Case Cells(L, Col).Value
                      Case "INS01"
                         Coul = 8
                      Case "INS02"
                         Coul = 6
                      Case "INS03"
                         Coul = 26
                   End Select
                Range(Cells(L, Col - 2), Cells(L, Col)).Interior.ColorIndex = Coul
                   If Cells(L, Col).Value <> Cells(L, Col + 1) Then
                      Cells(L, Col + 1).Interior.ColorIndex = 3
                   End If
                If Cells(L, Col + 1).Value = "Déjà fait par" Then
                   Cells(L, Col + 1).Interior.ColorIndex = -4142
                End If
             Next
    Application.ScreenUpdating = True
    End Sub
    

    a tester bien sur
    A+
    Maurice
    0
    1. Bourrineur
       
      Exactement ce que je voulais. En plus j'ai compris les modifs que tu as apporté. J'ai juste du modifier " Sheets(Feuil6.Name).Select" en "Sheets("Cumul").Select".

      Un Grand merci à vous deux pour le temps que vous m'avez consacré et pour votre tolérance envers mes grosse lacunes.
      0
      1. Maurice > Bourrineur
         
        Bonjour
        ne jamais mettre le nom de l'onglet
        car si tu change le nom de l'onglet ta macro ne fonctionne plus

        A+
        Maurice
        0
    2. Bourrineur Messages postés 5 Statut Membre
       
      Edit : Merci à vous trois...
      0
  16. Bourrineur Messages postés 5 Statut Membre
     
    Par contre je ne voit pas comment modifier le titre pour mettre "Résolu"

    Edit : ben si, finalement j'ai trouvé...
    0