Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

erreur sur elaboration d un code

26 réponses
Avatar
ALF
Bonjour,

j'obtiend ce message d'erreur : erreur de compilation:
nombre d'arguments incorrect ou affectation de propriété incorrecte

et sur le code, l' erreur se positionne sur RANGE( au niveau de "Départs
ACT" Et Apparemment,le 1er FOR EACH sur("Taux de siren") a bien passé..

Par contre sur le 2eme FOR EACH sur("Départs ACT") ne passe pas et bloque a
ce niveau la..

For Each c In Range("B2:Q73")
If Left(c, 11) = "Départs ACT" Then

l'erreur se positionne ici-------->RANGE(c.Offset(0, 1), c.Offset(0, 2),
c.Offset(0, 4), c.Offset(0, 5)).Select
pouvez vous resoudre ce probleme..je vous laisse ci joint le code en question.

Merci de votre soutien

Dim FeuilleActive As Worksheet
Application.ScreenUpdating = False
Set FeuilleActive = ActiveSheet
Dim c As Range
For Each c In Range("B2:Q73")
If Left(c, 13) = "Taux de siren" Then
Range(c.Offset(0, 3), c.Offset(0, 4)).Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Else
Range(c.Offset(0, 3), c.Offset(0, 4)).Select
Selection.Interior.ColorIndex = xlNone
End If
Next c
For Each c In Range("B2:Q73")
If Left(c, 11) = "Départs ACT" Then
Range(c.Offset(0, 1), c.Offset(0, 2), c.Offset(0, 4), c.Offset(0,
5)).Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Else
Range(c.Offset(0, 3), c.Offset(0, 4)).Select
Selection.Interior.ColorIndex = xlNone
End If
Next c
For Each c In Range("B2:Q73")
If Left(c, 26) = "Nombre de dossiers par ETP" Or Left(c, 24) = "Nombre
de d'avis par ETP" Then
Range(c.Offset(0, 1), c.Offset(0, 4), c.Offset(0, 5)).Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Else
Range(c.Offset(0, 3), c.Offset(0, 4)).Select
Selection.Interior.ColorIndex = xlNone
End If
Next c
For Each c In Range("B2:Q73")
If Left(c, 16) = "Montant du Stock" Or Left(c, 21) = "Montant Moyen
Créance" Or Left(c, 33) = "Nombre Total de dossiers en stock" Then
Range(c.Offset(0, 4), c.Offset(0, 5)).Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Else
Range(c.Offset(0, 3), c.Offset(0, 4)).Select
Selection.Interior.ColorIndex = xlNone
End If
Next c
For Each c In Range("B2:Q73")
If Left(c, 37) = "Efficacité du recouvrement (sans ACI)" Or Left(c, 13)
= "Nombre d' ACI" Or Left(c, 14) = "Montant d' ACI" Then
Range(c.Offset(0, 5)).Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Else
Range(c.Offset(0, 3), c.Offset(0, 4)).Select
Selection.Interior.ColorIndex = xlNone
End If
Next c
For Each c In Range("B2:Q73")
If Left(c, 22) = "Nombre de prestataires" Then
Range(c.Offset(0, 3), c.Offset(0, 4), c.Offset(0, 5)).Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Else
Range(c.Offset(0, 3), c.Offset(0, 4)).Select
Selection.Interior.ColorIndex = xlNone
End If
Next c
Next s
Range("B2").Select
Application.EnableEvents = True
FeuilleActive.Select
Application.ScreenUpdating = True
--


--
ALF

10 réponses

1 2 3
Avatar
ALF
re,
merci jluc pour ta reponse rapide..
je pense que je vais opter pour ton code avec CASE...

Mais,je viens encore t'ennuyer avec mes histoires....

si je choisi ma selection ("B2:Q73") avec des cellules origines avec motifs
differents,il me faut absolument "Case else" car je travaille sur une feuille
qui change de donnees en fonction de la selection sur le menu..et donc le
format Couleur reste alors qu'il devrait y avoir couleur=aucune couleur ou
vert ou etc..
la grosse difficulté etant probablement de remplacer
case else
union(x) .select
couleur=xlnone par couleur=couleur d'origine car toutes les couleurs
d'origine ne sont pas =xlnone

le code que j'ai donné n'est q'une partie du code total..et ne comprends pas
ce menu!!...
je te donne donc la totalité du code pour que tu comprennes mieux..

d'autre part,je me suis trompé sur mon case else d'origine..
ce n'est pas uniquement: Case Else
Union(c.Offset(0, 3), c.Offset(0, 4)).Select pour tous les case
mais
Case Else
Union répété de chaque Case.Select
exemple: Union(c.Offset(0, 1), c.Offset(0, 2), c.Offset(0, 4), c.Offset(0,
5)).Select pour "Départs ACT"
ou
Union(c.Offset(0, 3), c.Offset(0, 4), c.Offset(0, 5)).Select pour Case
"Efficacité du recouvrement (sans ACI)", "Nombre d' ACI"
etc...

voici mon code (avec menu) adapté avec ton code:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dim FeuilleActive As Worksheet
Dim Couleur As Variant
Dim Motif As Long
Dim CouleurMotif As Long
Application.ScreenUpdating = False
Set FeuilleActive = ActiveSheet
Dim c As Range

If Target.Address <> "$B$12" And Target.Address <> "$B$5" Then Exit Sub
Application.EnableEvents = False
mois = [B12]
indic = [B5]

For Each c In Range("B2:B73")
Select Case c
Case "Taux de siren"
Union(c.Offset(0, 3), c.Offset(0, 4)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case Is = "Départs ACT"
Union(c.Offset(0, 1), c.Offset(0, 2), c.Offset(0, 4), c.Offset(0,
5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Nombre de dossiers par ETP", "Nombre de d 'avis par ETP"
Union(c.Offset(0, 1), c.Offset(0, 4), c.Offset(0, 5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Montant du Stock", "Montant Moyen Créance", "Nombre Total de
dossiers en stock"
Union(c.Offset(0, 4), c.Offset(0, 5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Efficacité du recouvrement (sans ACI)", "Nombre d' ACI",
"Montant d' ACI"
c.Offset(0, 5).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Union(c.Offset(0, 3), c.Offset(0, 4), c.Offset(0, 5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case Else
Union(c.Offset(0, 3), c.Offset(0, 4)).Select
Couleur = xlNone
End Select
With Range(c.AddressLocal & ":" & c.Offset(0,
5).AddressLocal).Interior
.ColorIndex = xlAutomatic
.Pattern = xlPatternNone
.PatternColorIndex = xlColorIndexNone
End With
With Selection.Interior
.ColorIndex = Couleur
.Pattern = Motif
.PatternColorIndex = CouleurMotif
End With

Next c
Range("B2").Select
Application.EnableEvents = True
FeuilleActive.Select
Application.ScreenUpdating = True

End Sub

Merci encore..
--
ALF



*Bonjour ALF*,

bonsoir jean luc,

et merci pour ton info..en effet cela semble interressant..
par contre,je comprends pas trop pourquoi utiliser seulement la colonne
B,etant donné que des cellules peuvent se trouver ailleurs que sur la colonne
B???
J'ai (lamentablement) supposé que ton tableau était structuré avec ces

infos en colonne B. Mais tu peux remettre la même plage qu'au début, à
savoir B2:Q73. De toute façon tu fais quand même 5 ou 6 boucles de
moins ;-)

d'autre part,j'ai un probleme pour Case Else Couleur=xlNone car certaines
cellules ont des motifs d'origine avec couleur...
J'ai mis un Case Else car dans ton code d'origine, si tu trouvais

l'info cherchée tu mettais une couleur, sinon tu mettais :
Range(c.Offset(0, 3), c.Offset(0, 4)).Select
Selection.Interior.ColorIndex = xlNone
et ceci à chaque fois
J'en ai conclu que ... :-)

existe t il dans ce cas Couleur = si Case est different de ceux declarés
alors laisser le motif d'origine...
Il suffit d'enlever le Case Else


et enfin,dans le code que m'avais propose jp25 ,la macro bloque sur
MaSelectionMultiple.select..avec le message :OBJET requis manquant...
Attention, si tu a copier une partie du code et réécrit une autre

partie, MaSelectionMultiple prend un accent : MaS*é*lectionMultiple

merci pour ton soutien
Ce fut un plaisir

--
ALF



Voici le code obtenu :-) : plus simple à maintenir et on voit mieux ce
que l'on fait, moins long car moins de boucles

Dim FeuilleActive As Worksheet
Dim Couleur As Variant
Dim Motif As Long
Dim CouleurMotif As Long
Application.ScreenUpdating = False
Set FeuilleActive = ActiveSheet
Dim c As Range
For Each c In Range("B2:B73")
Select Case c
Case "Taux de siren"
Union(c.Offset(0, 3), c.Offset(0, 4)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case Is = "Départs ACT"
Union(c.Offset(0, 1), c.Offset(0, 2), c.Offset(0, 4), c.Offset(0,
5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Nombre de dossiers par ETP", "Nombre de d 'avis par ETP"
Union(c.Offset(0, 1), c.Offset(0, 4), c.Offset(0, 5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Montant du Stock", "Montant Moyen Créance", "Nombre Total de
dossiers en stock"
Union(c.Offset(0, 4), c.Offset(0, 5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Efficacité du recouvrement (sans ACI)", "Nombre d' ACI",
"Montant d' ACI"
c.Offset(0, 5).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Nombre de prestataires"
Union(c.Offset(0, 3), c.Offset(0, 4), c.Offset(0, 5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case Else
Union(c.Offset(0, 3), c.Offset(0, 4)).Select
Couleur = xlNone
End Select
With Range(c.AddressLocal & ":" & c.Offset(0,
5).AddressLocal).Interior
.ColorIndex = xlAutomatic
.Pattern = xlPatternNone
.PatternColorIndex = xlColorIndexNone
End With
With Selection.Interior
.ColorIndex = Couleur
.Pattern = Motif
.PatternColorIndex = CouleurMotif
End With

Next c
Range("B2").Select
Application.EnableEvents = True
FeuilleActive.Select
Application.ScreenUpdating = True


Dis nous ce que tu en pense
;-)
*Bonjour ALF*,
Pour tes boucles, tu gagnerais en temps si tu faisais ta boucle seulement
sur la colonne B :
For Each c In Range("B2:B73")
En complement, je ferais plutot un select case pour tout faire dans la même
boucle au lieu d'en faire 6. 6 boucles= 6 fois plus long :/

For Each c In Range("B2:Q73")



--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O






--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O









Avatar
JLuc
*Bonjour ALF*,
Première chose :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dim FeuilleActive As Worksheet
Dim Couleur As Variant
Dim Motif As Long
Dim CouleurMotif As Long
Application.ScreenUpdating = False
Set FeuilleActive = ActiveSheet
Dim c As Range

If Target.Address <> "$B$12" And Target.Address <> "$B$5" Then Exit Sub


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
JLuc
*Bonjour ALF*,
Plusieurs remarques :

si je choisi ma selection ("B2:Q73") avec des cellules origines avec motifs
differents,il me faut absolument "Case else" car je travaille sur une feuille
qui change de donnees en fonction de la selection sur le menu..et donc le
format Couleur reste alors qu'il devrait y avoir couleur=aucune couleur ou
vert ou etc..
1/ Comment sont définies tes couleurs au départ ?


la grosse difficulté etant probablement de remplacer
case else
union(x) .select
couleur=xlnone par couleur=couleur d'origine car toutes les couleurs
d'origine ne sont pas =xlnone
Si la couleur d'origine est la bonne en colonne A, par exemple :

Couleur = Range("A" & c.Row).Interior.ColorIndex

le code que j'ai donné n'est q'une partie du code total..et ne comprends pas
ce menu!!...
! Quel menu ??


je te donne donc la totalité du code pour que tu comprennes mieux..

d'autre part,je me suis trompé sur mon case else d'origine..
ce n'est pas uniquement: Case Else
Union(c.Offset(0, 3), c.Offset(0, 4)).Select pour tous les case
mais
Case Else
Union répété de chaque Case.Select
exemple: Union(c.Offset(0, 1), c.Offset(0, 2), c.Offset(0, 4), c.Offset(0,
5)).Select pour "Départs ACT"
ou
Union(c.Offset(0, 3), c.Offset(0, 4), c.Offset(0, 5)).Select pour Case
"Efficacité du recouvrement (sans ACI)", "Nombre d' ACI"
etc...
2/ Des explications un peut plus poussées me semblent nécéssaire :-?



voici mon code (avec menu) adapté avec ton code:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
3/ Si tu mets ton code dans cette procédure évenementielle, elle sera

lancée pour toutes les feuilles du classeur !
Préfere lui la procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
à mettre dans le code de la feuille en question


Dim FeuilleActive As Worksheet
Dim Couleur As Variant
Dim Motif As Long
Dim CouleurMotif As Long
Application.ScreenUpdating = False
Set FeuilleActive = ActiveSheet
Dim c As Range

If Target.Address <> "$B$12" And Target.Address <> "$B$5" Then Exit Sub


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
ALF
re,

1/ Comment sont définies tes couleurs au départ ?
au depart,les cellules ont un fond de cellule qui peut etre blanc,rouge
,vert etc...et il faut absolument garder ce fond de cellule..
le but est d'isoler les "cases" afin de griser certraines cellules à droite
de "case" sinon garder la couleur d'origine..

Quel menu ??
j'entends par menu :
If Target.Address <> "$B$12" And Target.Address <> "$B$5" Then Exit Sub
Application.EnableEvents = False
mois = [B12]
indic = [B5
c'est en fait sur une feuille "entite1" ou apparait 2 cellules b12 et b5 et
sur ces 2 cellules il y a une liste deroulante ..en b5,on choisit le type de
processus et en b12 ,on choisit le mois..c 'est a partir de ces 2 selections
que les donnees choisis vont arriver et remplir la feuille "entité1"..
l'astuce de la macro etant de synchroniser ce choix avec d'autres feuilles
similaires..c'est à dire que le choix sur la feuille "entité 1" va se
reporter instantanement sur les autres feuilles
"entité2","entité3"..jusqu'a"entité7"...c'est pourquoi il faut absolument
garder workbook plutot que worksheet afin aussi d'eviter des modifications
multiples...

2/ Des explications un peut plus poussées me semblent nécéssaire :-?
je voulais simplement dire que pour chaque "case"" que tu as defini il faut

un "case else" dont l'union(x).select correspondent à celle du "case"..
si pour case "Efficacité du recouvrement (sans ACI)", "Nombre d' ACI" on a
Union(c.Offset(0, 3), c.Offset(0, 4), c.Offset(0, 5)).Select
=Union(x).select alors pour "case else" il faudra Union(x) et ainsi desuite
pour tous les "case"

3/ Si tu mets ton code dans cette procédure évenementielle, elle sera
lancée pour toutes les feuilles du classeur !
Préfere lui la procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
à mettre dans le code de la feuille en question


justement ,il me faut la lancer pour toutes les feuilles du classeur...(voir
Quel menu ??)
donc avec
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

désolé, pour l'explication simpliste du probleme et merci pour ta patience....

--
ALF



*Bonjour ALF*,
Plusieurs remarques :

si je choisi ma selection ("B2:Q73") avec des cellules origines avec motifs
differents,il me faut absolument "Case else" car je travaille sur une feuille
qui change de donnees en fonction de la selection sur le menu..et donc le
format Couleur reste alors qu'il devrait y avoir couleur=aucune couleur ou
vert ou etc..
1/ Comment sont définies tes couleurs au départ ?


la grosse difficulté etant probablement de remplacer
case else
union(x) .select
couleur=xlnone par couleur=couleur d'origine car toutes les couleurs
d'origine ne sont pas =xlnone
Si la couleur d'origine est la bonne en colonne A, par exemple :

Couleur = Range("A" & c.Row).Interior.ColorIndex

le code que j'ai donné n'est q'une partie du code total..et ne comprends pas
ce menu!!...
! Quel menu ??


je te donne donc la totalité du code pour que tu comprennes mieux..

d'autre part,je me suis trompé sur mon case else d'origine..
ce n'est pas uniquement: Case Else
Union(c.Offset(0, 3), c.Offset(0, 4)).Select pour tous les case
mais
Case Else
Union répété de chaque Case.Select
exemple: Union(c.Offset(0, 1), c.Offset(0, 2), c.Offset(0, 4), c.Offset(0,
5)).Select pour "Départs ACT"
ou
Union(c.Offset(0, 3), c.Offset(0, 4), c.Offset(0, 5)).Select pour Case
"Efficacité du recouvrement (sans ACI)", "Nombre d' ACI"
etc...
2/ Des explications un peut plus poussées me semblent nécéssaire :-?



voici mon code (avec menu) adapté avec ton code:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
3/ Si tu mets ton code dans cette procédure évenementielle, elle sera

lancée pour toutes les feuilles du classeur !
Préfere lui la procédure :
Private Sub Worksheet_Change(ByVal Target As Range)
à mettre dans le code de la feuille en question


Dim FeuilleActive As Worksheet
Dim Couleur As Variant
Dim Motif As Long
Dim CouleurMotif As Long
Application.ScreenUpdating = False
Set FeuilleActive = ActiveSheet
Dim c As Range

If Target.Address <> "$B$12" And Target.Address <> "$B$5" Then Exit Sub


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O






Avatar
JLuc
*Bonjour ALF*,
Je t'avouerais humblement que je ne suis pas trop ton raisonnement. Tu
parle de plusieurs feuilles et, dans ta macro, tu ne travaille que sur
la feuille active ??
Si tes données ne sont pas confidentielles, pourrais tu mettre ton
classeur sur www.cjoint.com et revenir nous donner le lien ? Sinon, un
classeur avec la même structure reprenant quelques données ferait
l'affaire.

c'est en fait sur une feuille "entite1" ou apparait 2 cellules b12 et b5 et
sur ces 2 cellules il y a une liste deroulante ..en b5,on choisit le type de
processus et en b12 ,on choisit le mois..c 'est a partir de ces 2 selections
que les donnees choisis vont arriver et remplir la feuille "entité1"..
l'astuce de la macro etant de synchroniser ce choix avec d'autres feuilles
similaires..c'est à dire que le choix sur la feuille "entité 1" va se
reporter instantanement sur les autres feuilles
"entité2","entité3"..jusqu'a"entité7"...c'est pourquoi il faut absolument
garder workbook plutot que worksheet afin aussi d'eviter des modifications
multiples...


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
ALF
bonsoir jluc,
je te laisse comme convenu mon classeur qui a ete reduit pour la
circonstance car le fichier ne doit pas faire plus de 500ko...
ton code n'a pas encore ete introduit dans ma macro car il est en cours de
construction...

http://cjoint.com/?fDapbJxzCs

Merci
--
ALF



*Bonjour ALF*,
Je t'avouerais humblement que je ne suis pas trop ton raisonnement. Tu
parle de plusieurs feuilles et, dans ta macro, tu ne travaille que sur
la feuille active ??
Si tes données ne sont pas confidentielles, pourrais tu mettre ton
classeur sur www.cjoint.com et revenir nous donner le lien ? Sinon, un
classeur avec la même structure reprenant quelques données ferait
l'affaire.

c'est en fait sur une feuille "entite1" ou apparait 2 cellules b12 et b5 et
sur ces 2 cellules il y a une liste deroulante ..en b5,on choisit le type de
processus et en b12 ,on choisit le mois..c 'est a partir de ces 2 selections
que les donnees choisis vont arriver et remplir la feuille "entité1"..
l'astuce de la macro etant de synchroniser ce choix avec d'autres feuilles
similaires..c'est à dire que le choix sur la feuille "entité 1" va se
reporter instantanement sur les autres feuilles
"entité2","entité3"..jusqu'a"entité7"...c'est pourquoi il faut absolument
garder workbook plutot que worksheet afin aussi d'eviter des modifications
multiples...


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O






Avatar
JLuc
*Bonjour ALF*,
Tu as deux structures de feuilles différentes, tu veux changer les
couleurs sur les deux types ou seulement sur un ? Et sur quelle
structure ? Je suppose que c'est sur les deux premières feuilles, vu
que, dans le tableau de ces deux feuilles, il y a les changements que
ta macro effectue !

bonsoir jluc,
je te laisse comme convenu mon classeur qui a ete reduit pour la
circonstance car le fichier ne doit pas faire plus de 500ko...
ton code n'a pas encore ete introduit dans ma macro car il est en cours de
construction...

http://cjoint.com/?fDapbJxzCs

Merci
--
ALF



*Bonjour ALF*,
Je t'avouerais humblement que je ne suis pas trop ton raisonnement. Tu
parle de plusieurs feuilles et, dans ta macro, tu ne travaille que sur
la feuille active ??
Si tes données ne sont pas confidentielles, pourrais tu mettre ton
classeur sur www.cjoint.com et revenir nous donner le lien ? Sinon, un
classeur avec la même structure reprenant quelques données ferait
l'affaire.

c'est en fait sur une feuille "entite1" ou apparait 2 cellules b12 et b5
et sur ces 2 cellules il y a une liste deroulante ..en b5,on choisit le
type de processus et en b12 ,on choisit le mois..c 'est a partir de ces 2
selections que les donnees choisis vont arriver et remplir la feuille
"entité1".. l'astuce de la macro etant de synchroniser ce choix avec
d'autres feuilles similaires..c'est à dire que le choix sur la feuille
"entité 1" va se reporter instantanement sur les autres feuilles
"entité2","entité3"..jusqu'a"entité7"...c'est pourquoi il faut absolument
garder workbook plutot que worksheet afin aussi d'eviter des modifications
multiples...


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O






--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
JLuc
*ReBonjour ALF*,
En fait, tu veux que ta macro traivaille sur les feuilles :
"National", "Avignon", "Brest", "Limoges", "Lisieux", "Paris_E", "IDF",
"St-Omer"

et sur les tableaux :
- Ressources et moyens (Run)
- Indicateurs d'activité
- Indicateurs de résultats
- Efficience du processus

C'est tout ? Dis nous si c'est çà ;o)

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O
Avatar
ALF
bonjour jluc,

désolé de n'avoir pas pu repondre plus tot...
pour repondre a ta question :
" En fait, tu veux que ta macro traivaille sur les feuilles :
"National", "Avignon", "Brest", "Limoges", "Lisieux", "Paris_E", "IDF",
"St-Omer"

et sur les tableaux :
- Ressources et moyens (Run)
- Indicateurs d'activité
- Indicateurs de résultats
- Efficience du processus "


c'est exactement cela,tu as bien compris le mécanisme...

et pour repondre a ton message precedent,il y a bien 2 structures
differentes..
la 1ere structure correspond aux feuilles "National", "Avignon", "Brest",
"Limoges", "Lisieux", "Paris_E", "IDF",
"St-Omer"(il n'y a ici,que "National", "Avignon" suite au fichier restreint volontairement car limité à 500ko)
et la 2eme,aux feuilles du type "impayés impayés_GP_du_fixe", "impayés

internet","impayés_total",etc...

la 2eme structure de fichiers,correspond en fait à des fichiers "source" de
données..
ces données vont alimenter automatiquement les fichiers 1ere structure en
fonction du choix effectué sur le "menu" (cellule b5 et b12) issu d'une de
ces feuilles type 1ere structure ,par le biais de formules integres dans les
cellules,comme par
exemple:"=SI(INDIRECT($B$5&"!C7")="";"";INDIRECT($B$5&"!C7"))",etc...

je te reconfirme donc,que ces fichiers 2eme structures ne doivent pas etre
concerné par la macro que nous allons modifier..

Merci jluc
--
ALF



*ReBonjour ALF*,
En fait, tu veux que ta macro traivaille sur les feuilles :
"National", "Avignon", "Brest", "Limoges", "Lisieux", "Paris_E", "IDF",
"St-Omer"

et sur les tableaux :
- Ressources et moyens (Run)
- Indicateurs d'activité
- Indicateurs de résultats
- Efficience du processus

C'est tout ? Dis nous si c'est çà ;o)

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O





Avatar
JLuc
*Bonjour ALF*,
Cà y est, je crois que je suis arrivé à quelquechose de pas trop mal
:')

Pour commencer, j'ai rajouter une feuille "Config", que tu peux
masquer, dans laquelle je reprends les noms de toutes les feuilles qui
seront traitées par la macro
Losque tu ajoute une nouvelle feuille, il faudra inserer son nom dans
cette liste si tu veux qu'elle soit traitée.
Et la procédure :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
Dim c As Range
Dim s As Object
Set Existance = Worksheets("Config").Columns(1).Find(Sh.Name,
LookIn:=xlValues, LookAt:=xlWhole)

If Existance Is Nothing Then Exit Sub
If Target.Address <> "$B$12" And Target.Address <> "$B$5" Then Exit
Sub

Application.ScreenUpdating = False
Application.EnableEvents = False

mois = [B12]
indic = [B5]

For Each s In Sheets("Config").Range("A" &
Sheets("Config").Range("A65536").End(3).Row)
Sheets("" & s & "").Select
[B12] = mois
[B5] = indic

For Each c In Range("I54:I73")
If Left(c, 4) = "Taux" Or Left(c, 4) = "Effi" Or Left(c, 4) =
"Qual" Or Left(c, 1) = "%" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.00%"
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0"
End If
If Left(c, 33) = "Efficience processus Grand Public" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).Font.Bold = True
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).Font.Bold = False
End If
Next c

For Each c In Range("N24:N50")
If Left(c, 4) = "Taux" Or Left(c, 4) = "Effi" Or Left(c, 4) =
"Qual" Or Left(c, 1) = "%" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.00%"
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.00"
End If
If Left(c, 23) = "Taux de recouvrement GP" Or Left(c, 13) = "Taux
de siren" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).Font.Bold = True
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).Font.Bold = False
End If
Next c

For Each c In Range("B26:B44")
If Left(c, 4) = "Nomb" Then
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0"
Else
Range(c.Offset(0, 1), c.Offset(0, 5)).NumberFormat = "0.0"
End If
Next c

For Each c In Range("H5:H18")
If Left(c, 4) = "EFFC" Or Left(c, 11) = "Départs ACT" Then
Range(c.Offset(0, 1), c.Offset(0, 6)).NumberFormat = "0"
Else
Range(c.Offset(0, 1), c.Offset(0, 6)).NumberFormat = "0.0"
End If
If Left(c, 12) = "EFFCDI Total" Then
Range(c.Offset(0, 1), c.Offset(0, 6)).Font.Bold = True
Else
Range(c.Offset(0, 1), c.Offset(0, 6)).Font.Bold = False
End If
If Left(c, 11) = "Départs ACT" Then
Range(c.Offset(0, 3), c.Offset(0, 3)).Font.Bold = True
Else
Range(c.Offset(0, 3), c.Offset(0, 3)).Font.Bold = False
End If
Next c

Set plage = Union(Range("B26:B44"), Range("H5:H18"),
Range("I54:I73"), Range("N24:N50"))

For Each c In plage
Select Case c
Case "Taux de siren"
Union(c.Offset(0, 3), c.Offset(0, 4)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case Is = "Départs ACT"
Union(c.Offset(0, 1), c.Offset(0, 2), c.Offset(0, 4),
c.Offset(0, 5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Nombre de dossiers par ETP", "Nombre de d 'avis par ETP"
Union(c.Offset(0, 1), c.Offset(0, 4), c.Offset(0, 5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Montant du Stock", "Montant Moyen Créance", "Nombre Total
de dossiers en stock"
Union(c.Offset(0, 4), c.Offset(0, 5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Efficacité du recouvrement (sans ACI)", "Nombre d' ACI",
"Montant d' ACI"
c.Offset(0, 5).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case "Nombre de prestataires"
Union(c.Offset(0, 3), c.Offset(0, 4), c.Offset(0, 5)).Select
Couleur = 15
Motif = xlSolid
CouleurMotif = xlAutomatic
Case Else
Union(c.Offset(0, 3), c.Offset(0, 4)).Select
Couleur = c.Interior.ColorIndex
Motif = c.Interior.Pattern
CouleurMotif = c.Interior.PatternColorIndex
End Select

With Range(c.AddressLocal & ":" & c.Offset(0,
5).AddressLocal).Interior
.ColorIndex = c.Interior.ColorIndex
.Pattern = c.Interior.Pattern
.PatternColorIndex = c.Interior.PatternColorIndex
End With

With Selection.Interior
.ColorIndex = Couleur
.Pattern = Motif
.PatternColorIndex = CouleurMotif
End With
Next c
Next s
Sh.Select
Range("B2").Select
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

PS : Attention aux retours à la ligne intempestif :')

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O
1 2 3