En fait il faut déclencher la macro quand B5 ou B12 changent de valeur. Il
faut alors effectuer les tests sur la plage I5:I78 et N5:N50.
Si c'est d'accord, j'effectue les modifs et je te retourne le classeur.
Daniel
"ALF" a écrit dans le message de news:re,
ci dessous l' adresse demandée avec le fichier joint.
http://cjoint.com/?edsJES3lw8
Merci
--
ALFCe n'est pas très clair pour moi...
Mets la feuille en question sur www.cjoint.com
et poste l'adresse générée.
Daniel
"ALF" a écrit dans le message de news:re,
Et pourtant cela ne marche ni sur la colonne N ni sur la colonne I....
Afin de te donner le max de renseignements je te precise davantage le
but
de
la manoeuvre...
Lorsque je suis sur l'onglet NATIONAL ou se trouve la procedure Private
Sub
Worksheet_Change(ByVal Target As Range ,
lorsque je je choisi une valeur sur la liste deroulante d une cellule
B12
et
B5,ceci fait apparaitre sur la feuille de l onglet le nom des cellules
ainsi
que des valeurs correspondant aux colonnes cités précédemment...
c'est pourquoi si les valeurs B12 ET B5 changent alors le nom et les
valeurs
d un meme cellule change aussi...
c'est pourquoi aussi les formats(% ou STANDARD) doivent changer en
fonction
du type de donnees...
peut etre ,faut il utiliser plutot ,Private Sub Worksheet_Activate()???
J'avoue que je cale la dessus...
Merci
--
ALFOui, ca marche pour la colonne N, pas pour la colonne I parce que si
tu
écris quelque chose en colonne I le test :
If Intersect(Target, Range("N:N")) Is Nothing Then Exit Sub
termine la macro sans aller plus loin.
Modifie ta macro comme suit :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Not Intersect(Target, Range("N:N")) Is Nothing Then
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> "General"
End If
ElseIf Intersect(Target, Range("I:I")) Is Nothing Then
Exit Sub
End If
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> "General"
End If
Application.EnableEvents = True
End Sub
Daniel
"ALF" a écrit dans le message de news:Re,
merci pour le code mais j'avais deja Private Sub Worksheet_Change
occupé
par une procedure..je l'ai donc rajouté a celle ci..
mais cela ne fonctionne pas..
je te laisse ci joint celle ci:(j'ai scindé en 2 Intersect(...) car
en
fait
s'il s'agit de la colonne I les cellules a atteindre sont sur les
colonnes R
à U.
s'il s'agit de la colonne N les cellules a atteindre sont sur les
colonnes
R à V
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat =
"0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> > "General"
End If
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat =
"0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> > "General"
End If
Application.EnableEvents = True
End Sub--
Merci.
ALFBonjour.
Je n'ai pas compris la séquence des colonnes à impliquer. Je n'ai
pris
que
les colonnes B, H, I, N et Q (les points de suspension semblent
indiquer
qu'il y en a d'autres).
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("B:B"), Range("H:H"),
Range("I:I"),
_
Range("N:N"), Range("Q:Q"))) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range(Target, Target.Offset(0, 4)).NumberFormat = "0.00%"
Else
Range(Target, Target.Offset(0, 4)).NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message de
news:bonsoir,
merci daniel ,mais je me suis mal expliqué sur la fin...
en fait j'aimerais que quelquesoit la cellule situé sur les
colonnes
que
j'ai cité,le format s'applique alors sur les 4 cellules à droite
de
cette
cellule cible..
c'est a dire si cellule = H15="Taux de recouvres" alors mettre le
format
pourcentage sur H15:K15..
target ne doit s'appliquer que sur Les colonnes H:H, B:B, N:N,
H:H,
Q:Q,
I:I....
merci encore
--
ALFBonsoir.
Je suppose que par "Range("I59:I59")", tu entends
Range("I59:L59").
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "0.00%"
Else
Range("I59:L59").NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message de
news:Bonjour,
je vous laisse ci joint,ce code...
Private Sub Worksheet_Activate()
If Left(Range("I59").Value, 4) = "Taux" Then
Range("I59:I59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Effi" Then
Range("I59:L59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "General"
End If
End Sub
j'aimerais ameliorer ce code vb de sorte que quelque soit la
cellule,si
celle ci = "Effi" ou "Taux" alors mettre le format pourcentage
avec
2
decim ..
Sinon mettre le format general pour les autres cas..
je precise toutefois que si la cellule est vide alors ne rien
faire..
les cellules en question se trouve sur les colonnes H:H, B:B,
N:N,
H:H,
Q:Q,
I:I..
Merci de votre soutien
--
ALF
En fait il faut déclencher la macro quand B5 ou B12 changent de valeur. Il
faut alors effectuer les tests sur la plage I5:I78 et N5:N50.
Si c'est d'accord, j'effectue les modifs et je te retourne le classeur.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
87D691A8-8C46-45C2-86EA-267CA6109577@microsoft.com...
re,
ci dessous l' adresse demandée avec le fichier joint.
http://cjoint.com/?edsJES3lw8
Merci
--
ALF
Ce n'est pas très clair pour moi...
Mets la feuille en question sur www.cjoint.com
et poste l'adresse générée.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
E0F0C090-685E-4540-9CC8-C32639E346C7@microsoft.com...
re,
Et pourtant cela ne marche ni sur la colonne N ni sur la colonne I....
Afin de te donner le max de renseignements je te precise davantage le
but
de
la manoeuvre...
Lorsque je suis sur l'onglet NATIONAL ou se trouve la procedure Private
Sub
Worksheet_Change(ByVal Target As Range ,
lorsque je je choisi une valeur sur la liste deroulante d une cellule
B12
et
B5,ceci fait apparaitre sur la feuille de l onglet le nom des cellules
ainsi
que des valeurs correspondant aux colonnes cités précédemment...
c'est pourquoi si les valeurs B12 ET B5 changent alors le nom et les
valeurs
d un meme cellule change aussi...
c'est pourquoi aussi les formats(% ou STANDARD) doivent changer en
fonction
du type de donnees...
peut etre ,faut il utiliser plutot ,Private Sub Worksheet_Activate()???
J'avoue que je cale la dessus...
Merci
--
ALF
Oui, ca marche pour la colonne N, pas pour la colonne I parce que si
tu
écris quelque chose en colonne I le test :
If Intersect(Target, Range("N:N")) Is Nothing Then Exit Sub
termine la macro sans aller plus loin.
Modifie ta macro comme suit :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Not Intersect(Target, Range("N:N")) Is Nothing Then
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> "General"
End If
ElseIf Intersect(Target, Range("I:I")) Is Nothing Then
Exit Sub
End If
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> "General"
End If
Application.EnableEvents = True
End Sub
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
A8DBD3B2-41F8-45FB-9D5C-2705E8D6D739@microsoft.com...
Re,
merci pour le code mais j'avais deja Private Sub Worksheet_Change
occupé
par une procedure..je l'ai donc rajouté a celle ci..
mais cela ne fonctionne pas..
je te laisse ci joint celle ci:(j'ai scindé en 2 Intersect(...) car
en
fait
s'il s'agit de la colonne I les cellules a atteindre sont sur les
colonnes R
à U.
s'il s'agit de la colonne N les cellules a atteindre sont sur les
colonnes
R à V
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat =
"0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> > "General"
End If
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat =
"0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> > "General"
End If
Application.EnableEvents = True
End Sub--
Merci.
ALF
Bonjour.
Je n'ai pas compris la séquence des colonnes à impliquer. Je n'ai
pris
que
les colonnes B, H, I, N et Q (les points de suspension semblent
indiquer
qu'il y en a d'autres).
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("B:B"), Range("H:H"),
Range("I:I"),
_
Range("N:N"), Range("Q:Q"))) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range(Target, Target.Offset(0, 4)).NumberFormat = "0.00%"
Else
Range(Target, Target.Offset(0, 4)).NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de
news:
DC7AD140-8018-404B-BB22-1ABDF5144DE4@microsoft.com...
bonsoir,
merci daniel ,mais je me suis mal expliqué sur la fin...
en fait j'aimerais que quelquesoit la cellule situé sur les
colonnes
que
j'ai cité,le format s'applique alors sur les 4 cellules à droite
de
cette
cellule cible..
c'est a dire si cellule = H15="Taux de recouvres" alors mettre le
format
pourcentage sur H15:K15..
target ne doit s'appliquer que sur Les colonnes H:H, B:B, N:N,
H:H,
Q:Q,
I:I....
merci encore
--
ALF
Bonsoir.
Je suppose que par "Range("I59:I59")", tu entends
Range("I59:L59").
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "0.00%"
Else
Range("I59:L59").NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de
news:
4873F8DF-73C9-40C3-9B58-8A2EB572F3CB@microsoft.com...
Bonjour,
je vous laisse ci joint,ce code...
Private Sub Worksheet_Activate()
If Left(Range("I59").Value, 4) = "Taux" Then
Range("I59:I59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Effi" Then
Range("I59:L59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "General"
End If
End Sub
j'aimerais ameliorer ce code vb de sorte que quelque soit la
cellule,si
celle ci = "Effi" ou "Taux" alors mettre le format pourcentage
avec
2
decim ..
Sinon mettre le format general pour les autres cas..
je precise toutefois que si la cellule est vide alors ne rien
faire..
les cellules en question se trouve sur les colonnes H:H, B:B,
N:N,
H:H,
Q:Q,
I:I..
Merci de votre soutien
--
ALF
En fait il faut déclencher la macro quand B5 ou B12 changent de valeur. Il
faut alors effectuer les tests sur la plage I5:I78 et N5:N50.
Si c'est d'accord, j'effectue les modifs et je te retourne le classeur.
Daniel
"ALF" a écrit dans le message de news:re,
ci dessous l' adresse demandée avec le fichier joint.
http://cjoint.com/?edsJES3lw8
Merci
--
ALFCe n'est pas très clair pour moi...
Mets la feuille en question sur www.cjoint.com
et poste l'adresse générée.
Daniel
"ALF" a écrit dans le message de news:re,
Et pourtant cela ne marche ni sur la colonne N ni sur la colonne I....
Afin de te donner le max de renseignements je te precise davantage le
but
de
la manoeuvre...
Lorsque je suis sur l'onglet NATIONAL ou se trouve la procedure Private
Sub
Worksheet_Change(ByVal Target As Range ,
lorsque je je choisi une valeur sur la liste deroulante d une cellule
B12
et
B5,ceci fait apparaitre sur la feuille de l onglet le nom des cellules
ainsi
que des valeurs correspondant aux colonnes cités précédemment...
c'est pourquoi si les valeurs B12 ET B5 changent alors le nom et les
valeurs
d un meme cellule change aussi...
c'est pourquoi aussi les formats(% ou STANDARD) doivent changer en
fonction
du type de donnees...
peut etre ,faut il utiliser plutot ,Private Sub Worksheet_Activate()???
J'avoue que je cale la dessus...
Merci
--
ALFOui, ca marche pour la colonne N, pas pour la colonne I parce que si
tu
écris quelque chose en colonne I le test :
If Intersect(Target, Range("N:N")) Is Nothing Then Exit Sub
termine la macro sans aller plus loin.
Modifie ta macro comme suit :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Not Intersect(Target, Range("N:N")) Is Nothing Then
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> "General"
End If
ElseIf Intersect(Target, Range("I:I")) Is Nothing Then
Exit Sub
End If
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> "General"
End If
Application.EnableEvents = True
End Sub
Daniel
"ALF" a écrit dans le message de news:Re,
merci pour le code mais j'avais deja Private Sub Worksheet_Change
occupé
par une procedure..je l'ai donc rajouté a celle ci..
mais cela ne fonctionne pas..
je te laisse ci joint celle ci:(j'ai scindé en 2 Intersect(...) car
en
fait
s'il s'agit de la colonne I les cellules a atteindre sont sur les
colonnes R
à U.
s'il s'agit de la colonne N les cellules a atteindre sont sur les
colonnes
R à V
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat =
"0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> > "General"
End If
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat =
"0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> > "General"
End If
Application.EnableEvents = True
End Sub--
Merci.
ALFBonjour.
Je n'ai pas compris la séquence des colonnes à impliquer. Je n'ai
pris
que
les colonnes B, H, I, N et Q (les points de suspension semblent
indiquer
qu'il y en a d'autres).
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("B:B"), Range("H:H"),
Range("I:I"),
_
Range("N:N"), Range("Q:Q"))) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range(Target, Target.Offset(0, 4)).NumberFormat = "0.00%"
Else
Range(Target, Target.Offset(0, 4)).NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message de
news:bonsoir,
merci daniel ,mais je me suis mal expliqué sur la fin...
en fait j'aimerais que quelquesoit la cellule situé sur les
colonnes
que
j'ai cité,le format s'applique alors sur les 4 cellules à droite
de
cette
cellule cible..
c'est a dire si cellule = H15="Taux de recouvres" alors mettre le
format
pourcentage sur H15:K15..
target ne doit s'appliquer que sur Les colonnes H:H, B:B, N:N,
H:H,
Q:Q,
I:I....
merci encore
--
ALFBonsoir.
Je suppose que par "Range("I59:I59")", tu entends
Range("I59:L59").
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "0.00%"
Else
Range("I59:L59").NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message de
news:Bonjour,
je vous laisse ci joint,ce code...
Private Sub Worksheet_Activate()
If Left(Range("I59").Value, 4) = "Taux" Then
Range("I59:I59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Effi" Then
Range("I59:L59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "General"
End If
End Sub
j'aimerais ameliorer ce code vb de sorte que quelque soit la
cellule,si
celle ci = "Effi" ou "Taux" alors mettre le format pourcentage
avec
2
decim ..
Sinon mettre le format general pour les autres cas..
je precise toutefois que si la cellule est vide alors ne rien
faire..
les cellules en question se trouve sur les colonnes H:H, B:B,
N:N,
H:H,
Q:Q,
I:I..
Merci de votre soutien
--
ALF
re,
OK feu vert pour les modifs..
tu peux y aller,Daniel..
Merci.
--
ALFEn fait il faut déclencher la macro quand B5 ou B12 changent de valeur.
Il
faut alors effectuer les tests sur la plage I5:I78 et N5:N50.
Si c'est d'accord, j'effectue les modifs et je te retourne le classeur.
Daniel
"ALF" a écrit dans le message de news:re,
ci dessous l' adresse demandée avec le fichier joint.
http://cjoint.com/?edsJES3lw8
Merci
--
ALFCe n'est pas très clair pour moi...
Mets la feuille en question sur www.cjoint.com
et poste l'adresse générée.
Daniel
"ALF" a écrit dans le message de news:re,
Et pourtant cela ne marche ni sur la colonne N ni sur la colonne
I....
Afin de te donner le max de renseignements je te precise davantage
le
but
de
la manoeuvre...
Lorsque je suis sur l'onglet NATIONAL ou se trouve la procedure
Private
Sub
Worksheet_Change(ByVal Target As Range ,
lorsque je je choisi une valeur sur la liste deroulante d une
cellule
B12
et
B5,ceci fait apparaitre sur la feuille de l onglet le nom des
cellules
ainsi
que des valeurs correspondant aux colonnes cités précédemment...
c'est pourquoi si les valeurs B12 ET B5 changent alors le nom et les
valeurs
d un meme cellule change aussi...
c'est pourquoi aussi les formats(% ou STANDARD) doivent changer en
fonction
du type de donnees...
peut etre ,faut il utiliser plutot ,Private Sub
Worksheet_Activate()???
J'avoue que je cale la dessus...
Merci
--
ALFOui, ca marche pour la colonne N, pas pour la colonne I parce que
si
tu
écris quelque chose en colonne I le test :
If Intersect(Target, Range("N:N")) Is Nothing Then Exit Sub
termine la macro sans aller plus loin.
Modifie ta macro comme suit :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Not Intersect(Target, Range("N:N")) Is Nothing Then
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> "General"
End If
ElseIf Intersect(Target, Range("I:I")) Is Nothing Then
Exit Sub
End If
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> "General"
End If
Application.EnableEvents = True
End Sub
Daniel
"ALF" a écrit dans le message de
news:Re,
merci pour le code mais j'avais deja Private Sub Worksheet_Change
occupé
par une procedure..je l'ai donc rajouté a celle ci..
mais cela ne fonctionne pas..
je te laisse ci joint celle ci:(j'ai scindé en 2 Intersect(...)
car
en
fait
s'il s'agit de la colonne I les cellules a atteindre sont sur
les
colonnes R
à U.
s'il s'agit de la colonne N les cellules a atteindre sont sur
les
colonnes
R à V
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> > "General"
End If
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> > "General"
End If
Application.EnableEvents = True
End Sub--
Merci.
ALFBonjour.
Je n'ai pas compris la séquence des colonnes à impliquer. Je
n'ai
pris
que
les colonnes B, H, I, N et Q (les points de suspension semblent
indiquer
qu'il y en a d'autres).
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("B:B"), Range("H:H"),
Range("I:I"),
_
Range("N:N"), Range("Q:Q"))) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range(Target, Target.Offset(0, 4)).NumberFormat =
"0.00%"
Else
Range(Target, Target.Offset(0, 4)).NumberFormat =
"General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message de
news:bonsoir,
merci daniel ,mais je me suis mal expliqué sur la fin...
en fait j'aimerais que quelquesoit la cellule situé sur les
colonnes
que
j'ai cité,le format s'applique alors sur les 4 cellules à
droite
de
cette
cellule cible..
c'est a dire si cellule = H15="Taux de recouvres" alors mettre
le
format
pourcentage sur H15:K15..
target ne doit s'appliquer que sur Les colonnes H:H, B:B,
N:N,
H:H,
Q:Q,
I:I....
merci encore
--
ALFBonsoir.
Je suppose que par "Range("I59:I59")", tu entends
Range("I59:L59").
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi"
Or _
Left(Target, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "0.00%"
Else
Range("I59:L59").NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message
de
news:Bonjour,
je vous laisse ci joint,ce code...
Private Sub Worksheet_Activate()
If Left(Range("I59").Value, 4) = "Taux" Then
Range("I59:I59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Effi" Then
Range("I59:L59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "General"
End If
End Sub
j'aimerais ameliorer ce code vb de sorte que quelque soit
la
cellule,si
celle ci = "Effi" ou "Taux" alors mettre le format
pourcentage
avec
2
decim ..
Sinon mettre le format general pour les autres cas..
je precise toutefois que si la cellule est vide alors ne
rien
faire..
les cellules en question se trouve sur les colonnes H:H,
B:B,
N:N,
H:H,
Q:Q,
I:I..
Merci de votre soutien
--
ALF
re,
OK feu vert pour les modifs..
tu peux y aller,Daniel..
Merci.
--
ALF
En fait il faut déclencher la macro quand B5 ou B12 changent de valeur.
Il
faut alors effectuer les tests sur la plage I5:I78 et N5:N50.
Si c'est d'accord, j'effectue les modifs et je te retourne le classeur.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
87D691A8-8C46-45C2-86EA-267CA6109577@microsoft.com...
re,
ci dessous l' adresse demandée avec le fichier joint.
http://cjoint.com/?edsJES3lw8
Merci
--
ALF
Ce n'est pas très clair pour moi...
Mets la feuille en question sur www.cjoint.com
et poste l'adresse générée.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
E0F0C090-685E-4540-9CC8-C32639E346C7@microsoft.com...
re,
Et pourtant cela ne marche ni sur la colonne N ni sur la colonne
I....
Afin de te donner le max de renseignements je te precise davantage
le
but
de
la manoeuvre...
Lorsque je suis sur l'onglet NATIONAL ou se trouve la procedure
Private
Sub
Worksheet_Change(ByVal Target As Range ,
lorsque je je choisi une valeur sur la liste deroulante d une
cellule
B12
et
B5,ceci fait apparaitre sur la feuille de l onglet le nom des
cellules
ainsi
que des valeurs correspondant aux colonnes cités précédemment...
c'est pourquoi si les valeurs B12 ET B5 changent alors le nom et les
valeurs
d un meme cellule change aussi...
c'est pourquoi aussi les formats(% ou STANDARD) doivent changer en
fonction
du type de donnees...
peut etre ,faut il utiliser plutot ,Private Sub
Worksheet_Activate()???
J'avoue que je cale la dessus...
Merci
--
ALF
Oui, ca marche pour la colonne N, pas pour la colonne I parce que
si
tu
écris quelque chose en colonne I le test :
If Intersect(Target, Range("N:N")) Is Nothing Then Exit Sub
termine la macro sans aller plus loin.
Modifie ta macro comme suit :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Not Intersect(Target, Range("N:N")) Is Nothing Then
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> "General"
End If
ElseIf Intersect(Target, Range("I:I")) Is Nothing Then
Exit Sub
End If
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> "General"
End If
Application.EnableEvents = True
End Sub
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de
news:
A8DBD3B2-41F8-45FB-9D5C-2705E8D6D739@microsoft.com...
Re,
merci pour le code mais j'avais deja Private Sub Worksheet_Change
occupé
par une procedure..je l'ai donc rajouté a celle ci..
mais cela ne fonctionne pas..
je te laisse ci joint celle ci:(j'ai scindé en 2 Intersect(...)
car
en
fait
s'il s'agit de la colonne I les cellules a atteindre sont sur
les
colonnes R
à U.
s'il s'agit de la colonne N les cellules a atteindre sont sur
les
colonnes
R à V
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> > "General"
End If
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> > "General"
End If
Application.EnableEvents = True
End Sub--
Merci.
ALF
Bonjour.
Je n'ai pas compris la séquence des colonnes à impliquer. Je
n'ai
pris
que
les colonnes B, H, I, N et Q (les points de suspension semblent
indiquer
qu'il y en a d'autres).
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("B:B"), Range("H:H"),
Range("I:I"),
_
Range("N:N"), Range("Q:Q"))) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range(Target, Target.Offset(0, 4)).NumberFormat =
"0.00%"
Else
Range(Target, Target.Offset(0, 4)).NumberFormat =
"General"
End If
End Sub
Cordialement.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de
news:
DC7AD140-8018-404B-BB22-1ABDF5144DE4@microsoft.com...
bonsoir,
merci daniel ,mais je me suis mal expliqué sur la fin...
en fait j'aimerais que quelquesoit la cellule situé sur les
colonnes
que
j'ai cité,le format s'applique alors sur les 4 cellules à
droite
de
cette
cellule cible..
c'est a dire si cellule = H15="Taux de recouvres" alors mettre
le
format
pourcentage sur H15:K15..
target ne doit s'appliquer que sur Les colonnes H:H, B:B,
N:N,
H:H,
Q:Q,
I:I....
merci encore
--
ALF
Bonsoir.
Je suppose que par "Range("I59:I59")", tu entends
Range("I59:L59").
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi"
Or _
Left(Target, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "0.00%"
Else
Range("I59:L59").NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message
de
news:
4873F8DF-73C9-40C3-9B58-8A2EB572F3CB@microsoft.com...
Bonjour,
je vous laisse ci joint,ce code...
Private Sub Worksheet_Activate()
If Left(Range("I59").Value, 4) = "Taux" Then
Range("I59:I59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Effi" Then
Range("I59:L59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "General"
End If
End Sub
j'aimerais ameliorer ce code vb de sorte que quelque soit
la
cellule,si
celle ci = "Effi" ou "Taux" alors mettre le format
pourcentage
avec
2
decim ..
Sinon mettre le format general pour les autres cas..
je precise toutefois que si la cellule est vide alors ne
rien
faire..
les cellules en question se trouve sur les colonnes H:H,
B:B,
N:N,
H:H,
Q:Q,
I:I..
Merci de votre soutien
--
ALF
re,
OK feu vert pour les modifs..
tu peux y aller,Daniel..
Merci.
--
ALFEn fait il faut déclencher la macro quand B5 ou B12 changent de valeur.
Il
faut alors effectuer les tests sur la plage I5:I78 et N5:N50.
Si c'est d'accord, j'effectue les modifs et je te retourne le classeur.
Daniel
"ALF" a écrit dans le message de news:re,
ci dessous l' adresse demandée avec le fichier joint.
http://cjoint.com/?edsJES3lw8
Merci
--
ALFCe n'est pas très clair pour moi...
Mets la feuille en question sur www.cjoint.com
et poste l'adresse générée.
Daniel
"ALF" a écrit dans le message de news:re,
Et pourtant cela ne marche ni sur la colonne N ni sur la colonne
I....
Afin de te donner le max de renseignements je te precise davantage
le
but
de
la manoeuvre...
Lorsque je suis sur l'onglet NATIONAL ou se trouve la procedure
Private
Sub
Worksheet_Change(ByVal Target As Range ,
lorsque je je choisi une valeur sur la liste deroulante d une
cellule
B12
et
B5,ceci fait apparaitre sur la feuille de l onglet le nom des
cellules
ainsi
que des valeurs correspondant aux colonnes cités précédemment...
c'est pourquoi si les valeurs B12 ET B5 changent alors le nom et les
valeurs
d un meme cellule change aussi...
c'est pourquoi aussi les formats(% ou STANDARD) doivent changer en
fonction
du type de donnees...
peut etre ,faut il utiliser plutot ,Private Sub
Worksheet_Activate()???
J'avoue que je cale la dessus...
Merci
--
ALFOui, ca marche pour la colonne N, pas pour la colonne I parce que
si
tu
écris quelque chose en colonne I le test :
If Intersect(Target, Range("N:N")) Is Nothing Then Exit Sub
termine la macro sans aller plus loin.
Modifie ta macro comme suit :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Not Intersect(Target, Range("N:N")) Is Nothing Then
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> "General"
End If
ElseIf Intersect(Target, Range("I:I")) Is Nothing Then
Exit Sub
End If
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> "General"
End If
Application.EnableEvents = True
End Sub
Daniel
"ALF" a écrit dans le message de
news:Re,
merci pour le code mais j'avais deja Private Sub Worksheet_Change
occupé
par une procedure..je l'ai donc rajouté a celle ci..
mais cela ne fonctionne pas..
je te laisse ci joint celle ci:(j'ai scindé en 2 Intersect(...)
car
en
fait
s'il s'agit de la colonne I les cellules a atteindre sont sur
les
colonnes R
à U.
s'il s'agit de la colonne N les cellules a atteindre sont sur
les
colonnes
R à V
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat >> >> >> > "General"
End If
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat >> >> >> > "General"
End If
Application.EnableEvents = True
End Sub--
Merci.
ALFBonjour.
Je n'ai pas compris la séquence des colonnes à impliquer. Je
n'ai
pris
que
les colonnes B, H, I, N et Q (les points de suspension semblent
indiquer
qu'il y en a d'autres).
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("B:B"), Range("H:H"),
Range("I:I"),
_
Range("N:N"), Range("Q:Q"))) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range(Target, Target.Offset(0, 4)).NumberFormat =
"0.00%"
Else
Range(Target, Target.Offset(0, 4)).NumberFormat =
"General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message de
news:bonsoir,
merci daniel ,mais je me suis mal expliqué sur la fin...
en fait j'aimerais que quelquesoit la cellule situé sur les
colonnes
que
j'ai cité,le format s'applique alors sur les 4 cellules à
droite
de
cette
cellule cible..
c'est a dire si cellule = H15="Taux de recouvres" alors mettre
le
format
pourcentage sur H15:K15..
target ne doit s'appliquer que sur Les colonnes H:H, B:B,
N:N,
H:H,
Q:Q,
I:I....
merci encore
--
ALFBonsoir.
Je suppose que par "Range("I59:I59")", tu entends
Range("I59:L59").
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi"
Or _
Left(Target, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "0.00%"
Else
Range("I59:L59").NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message
de
news:Bonjour,
je vous laisse ci joint,ce code...
Private Sub Worksheet_Activate()
If Left(Range("I59").Value, 4) = "Taux" Then
Range("I59:I59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Effi" Then
Range("I59:L59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "General"
End If
End Sub
j'aimerais ameliorer ce code vb de sorte que quelque soit
la
cellule,si
celle ci = "Effi" ou "Taux" alors mettre le format
pourcentage
avec
2
decim ..
Sinon mettre le format general pour les autres cas..
je precise toutefois que si la cellule est vide alors ne
rien
faire..
les cellules en question se trouve sur les colonnes H:H,
B:B,
N:N,
H:H,
Q:Q,
I:I..
Merci de votre soutien
--
ALF
http://cjoint.com/?edxb1EbG4n
Daniel
"ALF" a écrit dans le message de news:re,
OK feu vert pour les modifs..
tu peux y aller,Daniel..
Merci.
--
ALFEn fait il faut déclencher la macro quand B5 ou B12 changent de valeur.
Il
faut alors effectuer les tests sur la plage I5:I78 et N5:N50.
Si c'est d'accord, j'effectue les modifs et je te retourne le classeur.
Daniel
"ALF" a écrit dans le message de news:re,
ci dessous l' adresse demandée avec le fichier joint.
http://cjoint.com/?edsJES3lw8
Merci
--
ALFCe n'est pas très clair pour moi...
Mets la feuille en question sur www.cjoint.com
et poste l'adresse générée.
Daniel
"ALF" a écrit dans le message de news:re,
Et pourtant cela ne marche ni sur la colonne N ni sur la colonne
I....
Afin de te donner le max de renseignements je te precise davantage
le
but
de
la manoeuvre...
Lorsque je suis sur l'onglet NATIONAL ou se trouve la procedure
Private
Sub
Worksheet_Change(ByVal Target As Range ,
lorsque je je choisi une valeur sur la liste deroulante d une
cellule
B12
et
B5,ceci fait apparaitre sur la feuille de l onglet le nom des
cellules
ainsi
que des valeurs correspondant aux colonnes cités précédemment...
c'est pourquoi si les valeurs B12 ET B5 changent alors le nom et les
valeurs
d un meme cellule change aussi...
c'est pourquoi aussi les formats(% ou STANDARD) doivent changer en
fonction
du type de donnees...
peut etre ,faut il utiliser plutot ,Private Sub
Worksheet_Activate()???
J'avoue que je cale la dessus...
Merci
--
ALFOui, ca marche pour la colonne N, pas pour la colonne I parce que
si
tu
écris quelque chose en colonne I le test :
If Intersect(Target, Range("N:N")) Is Nothing Then Exit Sub
termine la macro sans aller plus loin.
Modifie ta macro comme suit :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Not Intersect(Target, Range("N:N")) Is Nothing Then
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> "General"
End If
ElseIf Intersect(Target, Range("I:I")) Is Nothing Then
Exit Sub
End If
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> "General"
End If
Application.EnableEvents = True
End Sub
Daniel
"ALF" a écrit dans le message de
news:Re,
merci pour le code mais j'avais deja Private Sub Worksheet_Change
occupé
par une procedure..je l'ai donc rajouté a celle ci..
mais cela ne fonctionne pas..
je te laisse ci joint celle ci:(j'ai scindé en 2 Intersect(...)
car
en
fait
s'il s'agit de la colonne I les cellules a atteindre sont sur
les
colonnes R
à U.
s'il s'agit de la colonne N les cellules a atteindre sont sur
les
colonnes
R à V
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> > "General"
End If
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> > "General"
End If
Application.EnableEvents = True
End Sub--
Merci.
ALFBonjour.
Je n'ai pas compris la séquence des colonnes à impliquer. Je
n'ai
pris
que
les colonnes B, H, I, N et Q (les points de suspension semblent
indiquer
qu'il y en a d'autres).
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("B:B"), Range("H:H"),
Range("I:I"),
_
Range("N:N"), Range("Q:Q"))) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range(Target, Target.Offset(0, 4)).NumberFormat =
"0.00%"
Else
Range(Target, Target.Offset(0, 4)).NumberFormat =
"General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message de
news:bonsoir,
merci daniel ,mais je me suis mal expliqué sur la fin...
en fait j'aimerais que quelquesoit la cellule situé sur les
colonnes
que
j'ai cité,le format s'applique alors sur les 4 cellules à
droite
de
cette
cellule cible..
c'est a dire si cellule = H15="Taux de recouvres" alors mettre
le
format
pourcentage sur H15:K15..
target ne doit s'appliquer que sur Les colonnes H:H, B:B,
N:N,
H:H,
Q:Q,
I:I....
merci encore
--
ALFBonsoir.
Je suppose que par "Range("I59:I59")", tu entends
Range("I59:L59").
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi"
Or _
Left(Target, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "0.00%"
Else
Range("I59:L59").NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message
de
news:Bonjour,
je vous laisse ci joint,ce code...
Private Sub Worksheet_Activate()
If Left(Range("I59").Value, 4) = "Taux" Then
Range("I59:I59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Effi" Then
Range("I59:L59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "General"
End If
End Sub
j'aimerais ameliorer ce code vb de sorte que quelque soit
la
cellule,si
celle ci = "Effi" ou "Taux" alors mettre le format
pourcentage
avec
2
decim ..
Sinon mettre le format general pour les autres cas..
je precise toutefois que si la cellule est vide alors ne
rien
faire..
les cellules en question se trouve sur les colonnes H:H,
B:B,
N:N,
H:H,
Q:Q,
I:I..
Merci de votre soutien
--
http://cjoint.com/?edxb1EbG4n
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
B1492612-48B4-4464-8B2A-5CFA8B1DC862@microsoft.com...
re,
OK feu vert pour les modifs..
tu peux y aller,Daniel..
Merci.
--
ALF
En fait il faut déclencher la macro quand B5 ou B12 changent de valeur.
Il
faut alors effectuer les tests sur la plage I5:I78 et N5:N50.
Si c'est d'accord, j'effectue les modifs et je te retourne le classeur.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
87D691A8-8C46-45C2-86EA-267CA6109577@microsoft.com...
re,
ci dessous l' adresse demandée avec le fichier joint.
http://cjoint.com/?edsJES3lw8
Merci
--
ALF
Ce n'est pas très clair pour moi...
Mets la feuille en question sur www.cjoint.com
et poste l'adresse générée.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
E0F0C090-685E-4540-9CC8-C32639E346C7@microsoft.com...
re,
Et pourtant cela ne marche ni sur la colonne N ni sur la colonne
I....
Afin de te donner le max de renseignements je te precise davantage
le
but
de
la manoeuvre...
Lorsque je suis sur l'onglet NATIONAL ou se trouve la procedure
Private
Sub
Worksheet_Change(ByVal Target As Range ,
lorsque je je choisi une valeur sur la liste deroulante d une
cellule
B12
et
B5,ceci fait apparaitre sur la feuille de l onglet le nom des
cellules
ainsi
que des valeurs correspondant aux colonnes cités précédemment...
c'est pourquoi si les valeurs B12 ET B5 changent alors le nom et les
valeurs
d un meme cellule change aussi...
c'est pourquoi aussi les formats(% ou STANDARD) doivent changer en
fonction
du type de donnees...
peut etre ,faut il utiliser plutot ,Private Sub
Worksheet_Activate()???
J'avoue que je cale la dessus...
Merci
--
ALF
Oui, ca marche pour la colonne N, pas pour la colonne I parce que
si
tu
écris quelque chose en colonne I le test :
If Intersect(Target, Range("N:N")) Is Nothing Then Exit Sub
termine la macro sans aller plus loin.
Modifie ta macro comme suit :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Not Intersect(Target, Range("N:N")) Is Nothing Then
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> "General"
End If
ElseIf Intersect(Target, Range("I:I")) Is Nothing Then
Exit Sub
End If
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> "General"
End If
Application.EnableEvents = True
End Sub
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de
news:
A8DBD3B2-41F8-45FB-9D5C-2705E8D6D739@microsoft.com...
Re,
merci pour le code mais j'avais deja Private Sub Worksheet_Change
occupé
par une procedure..je l'ai donc rajouté a celle ci..
mais cela ne fonctionne pas..
je te laisse ci joint celle ci:(j'ai scindé en 2 Intersect(...)
car
en
fait
s'il s'agit de la colonne I les cellules a atteindre sont sur
les
colonnes R
à U.
s'il s'agit de la colonne N les cellules a atteindre sont sur
les
colonnes
R à V
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> > "General"
End If
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> > "General"
End If
Application.EnableEvents = True
End Sub--
Merci.
ALF
Bonjour.
Je n'ai pas compris la séquence des colonnes à impliquer. Je
n'ai
pris
que
les colonnes B, H, I, N et Q (les points de suspension semblent
indiquer
qu'il y en a d'autres).
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("B:B"), Range("H:H"),
Range("I:I"),
_
Range("N:N"), Range("Q:Q"))) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range(Target, Target.Offset(0, 4)).NumberFormat =
"0.00%"
Else
Range(Target, Target.Offset(0, 4)).NumberFormat =
"General"
End If
End Sub
Cordialement.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de
news:
DC7AD140-8018-404B-BB22-1ABDF5144DE4@microsoft.com...
bonsoir,
merci daniel ,mais je me suis mal expliqué sur la fin...
en fait j'aimerais que quelquesoit la cellule situé sur les
colonnes
que
j'ai cité,le format s'applique alors sur les 4 cellules à
droite
de
cette
cellule cible..
c'est a dire si cellule = H15="Taux de recouvres" alors mettre
le
format
pourcentage sur H15:K15..
target ne doit s'appliquer que sur Les colonnes H:H, B:B,
N:N,
H:H,
Q:Q,
I:I....
merci encore
--
ALF
Bonsoir.
Je suppose que par "Range("I59:I59")", tu entends
Range("I59:L59").
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi"
Or _
Left(Target, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "0.00%"
Else
Range("I59:L59").NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message
de
news:
4873F8DF-73C9-40C3-9B58-8A2EB572F3CB@microsoft.com...
Bonjour,
je vous laisse ci joint,ce code...
Private Sub Worksheet_Activate()
If Left(Range("I59").Value, 4) = "Taux" Then
Range("I59:I59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Effi" Then
Range("I59:L59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "General"
End If
End Sub
j'aimerais ameliorer ce code vb de sorte que quelque soit
la
cellule,si
celle ci = "Effi" ou "Taux" alors mettre le format
pourcentage
avec
2
decim ..
Sinon mettre le format general pour les autres cas..
je precise toutefois que si la cellule est vide alors ne
rien
faire..
les cellules en question se trouve sur les colonnes H:H,
B:B,
N:N,
H:H,
Q:Q,
I:I..
Merci de votre soutien
--
http://cjoint.com/?edxb1EbG4n
Daniel
"ALF" a écrit dans le message de news:re,
OK feu vert pour les modifs..
tu peux y aller,Daniel..
Merci.
--
ALFEn fait il faut déclencher la macro quand B5 ou B12 changent de valeur.
Il
faut alors effectuer les tests sur la plage I5:I78 et N5:N50.
Si c'est d'accord, j'effectue les modifs et je te retourne le classeur.
Daniel
"ALF" a écrit dans le message de news:re,
ci dessous l' adresse demandée avec le fichier joint.
http://cjoint.com/?edsJES3lw8
Merci
--
ALFCe n'est pas très clair pour moi...
Mets la feuille en question sur www.cjoint.com
et poste l'adresse générée.
Daniel
"ALF" a écrit dans le message de news:re,
Et pourtant cela ne marche ni sur la colonne N ni sur la colonne
I....
Afin de te donner le max de renseignements je te precise davantage
le
but
de
la manoeuvre...
Lorsque je suis sur l'onglet NATIONAL ou se trouve la procedure
Private
Sub
Worksheet_Change(ByVal Target As Range ,
lorsque je je choisi une valeur sur la liste deroulante d une
cellule
B12
et
B5,ceci fait apparaitre sur la feuille de l onglet le nom des
cellules
ainsi
que des valeurs correspondant aux colonnes cités précédemment...
c'est pourquoi si les valeurs B12 ET B5 changent alors le nom et les
valeurs
d un meme cellule change aussi...
c'est pourquoi aussi les formats(% ou STANDARD) doivent changer en
fonction
du type de donnees...
peut etre ,faut il utiliser plutot ,Private Sub
Worksheet_Activate()???
J'avoue que je cale la dessus...
Merci
--
ALFOui, ca marche pour la colonne N, pas pour la colonne I parce que
si
tu
écris quelque chose en colonne I le test :
If Intersect(Target, Range("N:N")) Is Nothing Then Exit Sub
termine la macro sans aller plus loin.
Modifie ta macro comme suit :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Not Intersect(Target, Range("N:N")) Is Nothing Then
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> "General"
End If
ElseIf Intersect(Target, Range("I:I")) Is Nothing Then
Exit Sub
End If
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> "General"
End If
Application.EnableEvents = True
End Sub
Daniel
"ALF" a écrit dans le message de
news:Re,
merci pour le code mais j'avais deja Private Sub Worksheet_Change
occupé
par une procedure..je l'ai donc rajouté a celle ci..
mais cela ne fonctionne pas..
je te laisse ci joint celle ci:(j'ai scindé en 2 Intersect(...)
car
en
fait
s'il s'agit de la colonne I les cellules a atteindre sont sur
les
colonnes R
à U.
s'il s'agit de la colonne N les cellules a atteindre sont sur
les
colonnes
R à V
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
mois = [B12]
indic = [B5]
For Each s In Array("National", "Avignon", "Brest", "Limoges",
"Lisieux",
"Paris_E", "IDF", "St-Omer")
Sheets(s).[B12] = mois
Sheets(s).[B5] = indic
Next s
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 4), Target.Offset(0, 8)).NumberFormat > >> >> >> > "General"
End If
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Then
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> > "0.00%"
Else
Range(Target.Offset(0, 6), Target.Offset(0, 9)).NumberFormat > >> >> >> > "General"
End If
Application.EnableEvents = True
End Sub--
Merci.
ALFBonjour.
Je n'ai pas compris la séquence des colonnes à impliquer. Je
n'ai
pris
que
les colonnes B, H, I, N et Q (les points de suspension semblent
indiquer
qu'il y en a d'autres).
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("B:B"), Range("H:H"),
Range("I:I"),
_
Range("N:N"), Range("Q:Q"))) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi" Or _
Left(Target, 4) = "Nomb" Then
Range(Target, Target.Offset(0, 4)).NumberFormat =
"0.00%"
Else
Range(Target, Target.Offset(0, 4)).NumberFormat =
"General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message de
news:bonsoir,
merci daniel ,mais je me suis mal expliqué sur la fin...
en fait j'aimerais que quelquesoit la cellule situé sur les
colonnes
que
j'ai cité,le format s'applique alors sur les 4 cellules à
droite
de
cette
cellule cible..
c'est a dire si cellule = H15="Taux de recouvres" alors mettre
le
format
pourcentage sur H15:K15..
target ne doit s'appliquer que sur Les colonnes H:H, B:B,
N:N,
H:H,
Q:Q,
I:I....
merci encore
--
ALFBonsoir.
Je suppose que par "Range("I59:I59")", tu entends
Range("I59:L59").
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Left(Target, 4) = "Taux" Or Left(Target, 4) = "Effi"
Or _
Left(Target, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "0.00%"
Else
Range("I59:L59").NumberFormat = "General"
End If
End Sub
Cordialement.
Daniel
"ALF" a écrit dans le message
de
news:Bonjour,
je vous laisse ci joint,ce code...
Private Sub Worksheet_Activate()
If Left(Range("I59").Value, 4) = "Taux" Then
Range("I59:I59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Effi" Then
Range("I59:L59").NumberFormat = "0.00%"
End If
If Left(Range("I59").Value, 4) = "Nomb" Then
Range("I59:L59").NumberFormat = "General"
End If
End Sub
j'aimerais ameliorer ce code vb de sorte que quelque soit
la
cellule,si
celle ci = "Effi" ou "Taux" alors mettre le format
pourcentage
avec
2
decim ..
Sinon mettre le format general pour les autres cas..
je precise toutefois que si la cellule est vide alors ne
rien
faire..
les cellules en question se trouve sur les colonnes H:H,
B:B,
N:N,
H:H,
Q:Q,
I:I..
Merci de votre soutien
--