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

changer le format ..

13 réponses
Avatar
ALF
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

10 réponses

1 2
Avatar
Jacky
Bonsoir,
Pas sur de comprendre ceci
....de sorte que quelque soit la cellule.....
Un peu plus d'explication pour mon neurone stp


--
Salutations
JJ.



"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


Avatar
Daniel
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" 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


Avatar
ALF
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" 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







Avatar
Daniel
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" 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


--
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" 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









Avatar
ALF
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 Intersect(Target, Range("N:N")) Is Nothing Then Exit Sub
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" 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


--
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" 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














Avatar
Daniel
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" 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.
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" 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


--
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" 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
















Avatar
ALF
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" 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.
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" 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


--
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" 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





















Avatar
Daniel
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" 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

--
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" 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.
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" 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


--
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" 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























Avatar
ALF
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" 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

--
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" 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.
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" 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


--
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" 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




























Avatar
Daniel
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
--
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" 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

--
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" 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.
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" 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


--
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" 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






























1 2