OVH Cloud OVH Cloud

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

6 réponses

1 2 3
Avatar
JLuc
Si tu reveux le fichier, le voici :
http://cjoint.com/?fEvkeWXZ6e

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

O-O
Avatar
ALF
bonsoir jluc,

et merci pour la debauche d'energie que tu emploie sur ce problême et ces
nouveautés vont me servir enormément !!!
mais n'aurait tu pas oublier dans ce code,le probleme que j'avais signalé le
28/05,à savoir que le "case else" n'est pas uniquement sur
Union(c.Offset(0, 3), c.Offset(0, 4)).Select ..

rappel du 28/05:
" 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... "

d'autre part,pourrais tu m'expliquer la fin de ton code(ci dessous) car j'ai
du mal a le comprendre..

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

tu pourras remarquer sur le fichier que tu m'as joint, que les cellules
grisées apparaissent parfois sur des valeurs...ce qu'il ne faut absolument
pas car les celules grisées doivent correspondre à des cellules qui n'auront
jamais de valeurs..
on en trouve aussi sur des lignes ou il n'y a pas d'indicateurs à sa gauche
,ce qui ne doit pas aussi arriver non plus car les cellules grisés doivent
correspondrent malgré tout à un indicateur.....

je vais mieux regarder dans le detail de mon coté,...

encore une fois,si cela n'est pas abuser de tes services, peux tu faire de
même stp ???

--
ALF



*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





Avatar
ALF
bonsoir jluc,

et merci pour la debauche d'energie que tu emploie sur ce problême et ces
nouveautés vont me servir enormément !!!
mais n'aurait tu pas oublier dans ce code,le probleme que j'avais signalé le
28/05,à savoir que le "case else" n'est pas uniquement sur
Union(c.Offset(0, 3), c.Offset(0, 4)).Select ..

rappel du 28/05:
" 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... "

d'autre part,pourrais tu m'expliquer la fin de ton code(ci dessous) car j'ai
du mal a le comprendre..

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

tu pourras remarquer sur le fichier que tu m'as joint, que les cellules
grisées apparaissent parfois sur des valeurs...ce qu'il ne faut absolument
pas car les celules grisées doivent correspondre à des cellules qui n'auront
jamais de valeurs..
on en trouve aussi sur des lignes ou il n'y a pas d'indicateurs à sa gauche
,ce qui ne doit pas aussi arriver non plus car les cellules grisés doivent
correspondrent malgré tout à un indicateur.....

je vais mieux regarder dans le detail de mon coté,...

encore une fois,si cela n'est pas abuser de tes services, peux tu faire de
même stp ???

--
ALF



Si tu reveux le fichier, le voici :
http://cjoint.com/?fEvkeWXZ6e

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

O-O





Avatar
JLuc
*Bonjour ALF*,
Je viens de voir en effet, Mais AMHA, le problème vient aussi du fait
que tu as fusionner des cellules, et çà, çà pose souvent des problèmes
de ce type, surtout quand on utilise des Offset
Je regarde de plus près et je te tiens au courrant

tu pourras remarquer sur le fichier que tu m'as joint, que les cellules
grisées apparaissent parfois sur des valeurs...ce qu'il ne faut absolument
pas car les celules grisées doivent correspondre à des cellules qui n'auront
jamais de valeurs..


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

O-O

Avatar
ALF
bonjour jluc,

si cela peut t'aider dans ta reflexion,j'ai remarqué qur la macro s'execute
sur la feuille "Avignon" mais apparemment pas sur la feuille "National"..
est ce que cela ne viendrait pas de la :
For Each s In Sheets("Config").Range("A" &
Sheets("Config").Range("A65536").End(3).Row)-------------->remplacer A par A1
??
Sheets("" & s & "").Select

Si je remplace A par A1?Il y a alors un problême sur " Sheets("" & s &
"").Select "....!!

d'autre part ,je me permet d'insister sur le problême du "case else" queje
citais sur mon message précédent..c'est peut etre aussi,une cause du
problême...

autres remarques: il y a dans ton code un "case is =" au lieu de
"case"...est ce normal ??

Range("A65536").End(3).Row = ???? End(3)=??

Merci encore
--
ALF



*Bonjour ALF*,
Je viens de voir en effet, Mais AMHA, le problème vient aussi du fait
que tu as fusionner des cellules, et çà, çà pose souvent des problèmes
de ce type, surtout quand on utilise des Offset
Je regarde de plus près et je te tiens au courrant

tu pourras remarquer sur le fichier que tu m'as joint, que les cellules
grisées apparaissent parfois sur des valeurs...ce qu'il ne faut absolument
pas car les celules grisées doivent correspondre à des cellules qui n'auront
jamais de valeurs..


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

O-O






Avatar
JLuc
*Bonjour ALF*,


bonjour jluc,

si cela peut t'aider dans ta reflexion,j'ai remarqué qur la macro s'execute
sur la feuille "Avignon" mais apparemment pas sur la feuille "National"..
est ce que cela ne viendrait pas de la :
For Each s In Sheets("Config").Range("A" &
Sheets("Config").Range("A65536").End(3).Row)-------------->remplacer A par A1
??
Exact, petite erreur, en fait c'est :

For Each s In Sheets("Config").Range("A1:A" &
Sheets("Config").Range("A65536").End(3).Row)

Sheets("" & s & "").Select

Si je remplace A par A1?Il y a alors un problême sur " Sheets("" & s &
"").Select "....!!
C'est normale :')



d'autre part ,je me permet d'insister sur le problême du "case else" queje
citais sur mon message précédent..c'est peut etre aussi,une cause du
problême...
Avec le Case Else, je selectionne toutes les colonnes et je reprends

les propriétés de la cellule "c"


autres remarques: il y a dans ton code un "case is =" au lieu de
"case"...est ce normal ??
Si, si, il faut enlever le "Is =" mais çà n'est pas dramatique



Range("A65536").End(3).Row = ???? End(3)=??
End(3) correspond à End(xlup) : trouver la fin en partant de la cellule

et remonter

Revoila la correction :

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("A1:A" &
Sheets("Config").Range("A65536").End(3).Row)
Sheets("" & s & "").Select
Application.EnableEvents = False
[B12] = mois
[B5] = indic
Application.EnableEvents = True

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 "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, 1), c.Offset(0, 2), c.Offset(0, 3),
c.Offset(0, 4), c.Offset(0, 5)).Select
Couleur = c.Interior.ColorIndex
Motif = c.Interior.Pattern
CouleurMotif = c.Interior.PatternColorIndex
Application.CutCopyMode = False
End Select

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


Merci encore
De nadda


--
ALF



*Bonjour ALF*,
Je viens de voir en effet, Mais AMHA, le problème vient aussi du fait
que tu as fusionner des cellules, et çà, çà pose souvent des problèmes
de ce type, surtout quand on utilise des Offset
Je regarde de plus près et je te tiens au courrant

tu pourras remarquer sur le fichier que tu m'as joint, que les cellules
grisées apparaissent parfois sur des valeurs...ce qu'il ne faut absolument
pas car les celules grisées doivent correspondre à des cellules qui
n'auront jamais de valeurs..


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

O-O






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

O-O



1 2 3