Pouvoir ajouter des colones sans modifier ma macro

Résolu/Fermé
bourrineur - Modifié par pijaku le 11/12/2014 à 13:15
 Maurice - 13 déc. 2014 à 10:16
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
A voir également:

15 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
11 déc. 2014 à 11:50
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
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
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
11 déc. 2014 à 13:36
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
Bourrineur Messages postés 3 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 13 décembre 2014
13 déc. 2014 à 09:37
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
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
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

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

Posez votre question
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
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
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
11 déc. 2014 à 19:49
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
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
Re
attention la macro fait toute les feuilles

il faut la modifier pour la feuille cumul

A+

Maurice
0
oui, j'ai vu et fait la correction
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
11 déc. 2014 à 22:16
0
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 11/12/2014 à 23:27
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
bourrineur > eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024
11 déc. 2014 à 23:40
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
12 déc. 2014 à 00:12
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
bourrineur > eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024
Modifié par bourrineur le 12/12/2014 à 01:17
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
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
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
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
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
Maurice > Bourrineur
13 déc. 2014 à 10:16
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
Bourrineur Messages postés 3 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 13 décembre 2014
13 déc. 2014 à 09:39
Edit : Merci à vous trois...
0
Bourrineur Messages postés 3 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 13 décembre 2014
Modifié par Bourrineur le 12/12/2014 à 22:08
Par contre je ne voit pas comment modifier le titre pour mettre "Résolu"

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