attribuer un code à partir d'un chiffre d'une cellule

Le
newoceane2000
Bonjour,

J'ai une feuille Excel avec dans la colonne C, une suite de chiffre
allant de 0 à 100.
Je voudrais pouvoir (si possible grâce à une macro) avoir un chiffre
qui s'affiche automatiquement dans la colonne D en fonction de ce qui
est rempli dans la colonne C.

1 pour un nombre en colonne C de plus de 30 à 100
2 pour un nombre en colonne C de plus de 10 à 30
3 pour un nombre en colonne C de plus de 3 à 10
4 pour un nombre en colonne C de plus de 1 à 3
5 pour un nombre en colonne C de plus de 0.3 à 1
6 pour un nombre en colonne C de plus de 0.1 à 0.3
7 pour un nombre en colonne C inférieur ou égal à 0.1

Par Exemple si dans la colonne C, j'ai :
30
25
1
en colonne D on obtient :
2
2
5

Merci d'avance pour votre aide si précieuse
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #4496391
bonjour,

For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)
Select Case c
Case 31 To 100: Range("D" & c.Row) = 1
Case 11 To 30: Range("D" & c.Row) = 2
Case 4 To 10: Range("D" & c.Row) = 3
Case 2 To 3: Range("D" & c.Row) = 4
Case 0.4 To 1: Range("D" & c.Row) = 5
Case 0.2 To 0.3: Range("D" & c.Row) = 6
Case Is <= 0.1: Range("D" & c.Row) = 7
End Select
Next

isabelle


Bonjour,

J'ai une feuille Excel avec dans la colonne C, une suite de chiffre
allant de 0 à 100.
Je voudrais pouvoir (si possible grâce à une macro) avoir un chiffre
qui s'affiche automatiquement dans la colonne D en fonction de ce qui
est rempli dans la colonne C.

1 pour un nombre en colonne C de plus de 30 à 100
2 pour un nombre en colonne C de plus de 10 à 30
3 pour un nombre en colonne C de plus de 3 à 10
4 pour un nombre en colonne C de plus de 1 à 3
5 pour un nombre en colonne C de plus de 0.3 à 1
6 pour un nombre en colonne C de plus de 0.1 à 0.3
7 pour un nombre en colonne C inférieur ou égal à 0.1

Par Exemple si dans la colonne C, j'ai :
30
25
1
en colonne D on obtient :
2
2
5

Merci d'avance pour votre aide si précieuse...



Daniel
Le #4496361
Bonjour.

Sub test()
Dim c As Range, Tablo
Tablo = Array(9 ^ 9, 100, 30, 10, 3, 1, 0.3, 0.1)
For Each c In Range("C1", Range("C65536").End(xlUp))
Var = Application.Match(c, Tablo, -1) - 1
If Var = 0 Then Var = ""
c.Offset(0, 1) = Var
Next c
End Sub

Cordialement.
Daniel

Bonjour,

J'ai une feuille Excel avec dans la colonne C, une suite de chiffre
allant de 0 à 100.
Je voudrais pouvoir (si possible grâce à une macro) avoir un chiffre
qui s'affiche automatiquement dans la colonne D en fonction de ce qui
est rempli dans la colonne C.

1 pour un nombre en colonne C de plus de 30 à 100
2 pour un nombre en colonne C de plus de 10 à 30
3 pour un nombre en colonne C de plus de 3 à 10
4 pour un nombre en colonne C de plus de 1 à 3
5 pour un nombre en colonne C de plus de 0.3 à 1
6 pour un nombre en colonne C de plus de 0.1 à 0.3
7 pour un nombre en colonne C inférieur ou égal à 0.1

Par Exemple si dans la colonne C, j'ai :
30
25
1
en colonne D on obtient :
2
2
5

Merci d'avance pour votre aide si précieuse...
newoceane2000
Le #4496301
On 5 mai, 18:07, "Daniel"
Bonjour.

Sub test()
Dim c As Range, Tablo
Tablo = Array(9 ^ 9, 100, 30, 10, 3, 1, 0.3, 0.1)
For Each c In Range("C1", Range("C65536").End(xlUp))
Var = Application.Match(c, Tablo, -1) - 1
If Var = 0 Then Var = ""
c.Offset(0, 1) = Var
Next c
End Sub

Cordialement.
Daniel

Bonjour,

J'ai une feuille Excel avec dans la colonne C, une suite de chiffre
allant de 0 à 100.
Je voudrais pouvoir (si possible grâce à une macro) avoir un chiffre
qui s'affiche automatiquement dans la colonne D en fonction de ce qui
est rempli dans la colonne C.

1 pour un nombre en colonne C de plus de 30 à 100
2 pour un nombre en colonne C de plus de 10 à 30
3 pour un nombre en colonne C de plus de 3 à 10
4 pour un nombre en colonne C de plus de 1 à 3
5 pour un nombre en colonne C de plus de 0.3 à 1
6 pour un nombre en colonne C de plus de 0.1 à 0.3
7 pour un nombre en colonne C inférieur ou égal à 0.1

Par Exemple si dans la colonne C, j'ai :
30
25
1
en colonne D on obtient :
2
2
5

Merci d'avance pour votre aide si précieuse...


Merci d'avoir répondu si vite !!
La macro marche très bien, malgré que je ne comprenne pas très bien
comment elle fonctionne.
Ecore merci pour tout

R1
Le #4495991
isabelle wrote:

bonjour,

For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)
Select Case c
Case 31 To 100: Range("D" & c.Row) = 1
Case 11 To 30: Range("D" & c.Row) = 2
Case 4 To 10: Range("D" & c.Row) = 3
Case 2 To 3: Range("D" & c.Row) = 4
Case 0.4 To 1: Range("D" & c.Row) = 5
Case 0.2 To 0.3: Range("D" & c.Row) = 6
Case Is <= 0.1: Range("D" & c.Row) = 7
End Select
Next

isabelle

Attention, la valeur 30.5 (par exemple) risque de ne pas être bien

interprétée.
R1

luc c
Le #4495631
Que veut-dire le fonction end(xlup).row ?


"isabelle" a écrit dans le message de news:

bonjour,

For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)
Select Case c
Case 31 To 100: Range("D" & c.Row) = 1
Case 11 To 30: Range("D" & c.Row) = 2
Case 4 To 10: Range("D" & c.Row) = 3
Case 2 To 3: Range("D" & c.Row) = 4
Case 0.4 To 1: Range("D" & c.Row) = 5
Case 0.2 To 0.3: Range("D" & c.Row) = 6
Case Is <= 0.1: Range("D" & c.Row) = 7
End Select
Next

isabelle


Bonjour,

J'ai une feuille Excel avec dans la colonne C, une suite de chiffre
allant de 0 à 100.
Je voudrais pouvoir (si possible grâce à une macro) avoir un chiffre
qui s'affiche automatiquement dans la colonne D en fonction de ce qui
est rempli dans la colonne C.

1 pour un nombre en colonne C de plus de 30 à 100
2 pour un nombre en colonne C de plus de 10 à 30
3 pour un nombre en colonne C de plus de 3 à 10
4 pour un nombre en colonne C de plus de 1 à 3
5 pour un nombre en colonne C de plus de 0.3 à 1
6 pour un nombre en colonne C de plus de 0.1 à 0.3
7 pour un nombre en colonne C inférieur ou égal à 0.1

Par Exemple si dans la colonne C, j'ai :
30
25
1
en colonne D on obtient :
2
2
5

Merci d'avance pour votre aide si précieuse...





isabelle
Le #4495061
bonjour Luc,

cela correspond aux combinaisons de touches FIN+BAS

isabelle

Que veut-dire le fonction end(xlup).row ?


"isabelle" a écrit dans le message de news:


bonjour,

For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)
Select Case c
Case 31 To 100: Range("D" & c.Row) = 1
Case 11 To 30: Range("D" & c.Row) = 2
Case 4 To 10: Range("D" & c.Row) = 3
Case 2 To 3: Range("D" & c.Row) = 4
Case 0.4 To 1: Range("D" & c.Row) = 5
Case 0.2 To 0.3: Range("D" & c.Row) = 6
Case Is <= 0.1: Range("D" & c.Row) = 7
End Select
Next

isabelle



Bonjour,

J'ai une feuille Excel avec dans la colonne C, une suite de chiffre
allant de 0 à 100.
Je voudrais pouvoir (si possible grâce à une macro) avoir un chiffre
qui s'affiche automatiquement dans la colonne D en fonction de ce qui
est rempli dans la colonne C.

1 pour un nombre en colonne C de plus de 30 à 100
2 pour un nombre en colonne C de plus de 10 à 30
3 pour un nombre en colonne C de plus de 3 à 10
4 pour un nombre en colonne C de plus de 1 à 3
5 pour un nombre en colonne C de plus de 0.3 à 1
6 pour un nombre en colonne C de plus de 0.1 à 0.3
7 pour un nombre en colonne C inférieur ou égal à 0.1

Par Exemple si dans la colonne C, j'ai :
30
25
1
en colonne D on obtient :
2
2
5

Merci d'avance pour votre aide si précieuse...










newoceane2000
Le #4494941
On 6 mai, 13:50, R1
isabelle wrote:
bonjour,

For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)
Select Case c
Case 31 To 100: Range("D" & c.Row) = 1
Case 11 To 30: Range("D" & c.Row) = 2
Case 4 To 10: Range("D" & c.Row) = 3
Case 2 To 3: Range("D" & c.Row) = 4
Case 0.4 To 1: Range("D" & c.Row) = 5
Case 0.2 To 0.3: Range("D" & c.Row) = 6
Case Is <= 0.1: Range("D" & c.Row) = 7
End Select
Next

isabelle


Attention, la valeur 30.5 (par exemple) risque de ne pas être bien
interprétée.
R1- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bonjour,

Effectivement R1 vient de me faire réaliser que la macro ne marchais
pas à tout les coups !
J'ai oublié de vous précicer que dans ma colonne C, les chiffres ont
jusqu'à 6 chiffres après la virgule ce qui me pose donc un problème.

En reprenant la macro d'Isabelle (que j'arrive un peu mieux à
comprendre que celle de daniel, vu mon niveau médiocre en vba)
j'obtiens :

Sub test()
For Each c In Range("C1:C" & Range("C65536").End(xlUp).Row)
Select Case c
Case 30, 000001 To 100: Range("D" & c.Row) = 1
Case 10, 000001 To 30: Range("D" & c.Row) = 2
Case 3, 000001 To 10: Range("D" & c.Row) = 3
Case 1, 000001 To 3: Range("D" & c.Row) = 4
Case 0.300001 To 1: Range("D" & c.Row) = 5
Case 0.100001 To 0.3: Range("D" & c.Row) = 6
Case Is <= 0.1: Range("D" & c.Row) = 7
End Select
Next
End Sub

Seulement les 4 premières lignes se transforment automatiquement en :

Sub test()
Case 30, 1 To 100: Range("D" & c.Row) = 1
Case 10, 1 To 30: Range("D" & c.Row) = 2
Case 3, 1 To 10: Range("D" & c.Row) = 3
Case 1, 1 To 3: Range("D" & c.Row) = 4

et en plus la macro ne marche plus !!
Pouvez vous de nouveau m'aider?


Gilles MOUGNOZ
Le #4494841
Bonjour, New Oceane

En VBA, la virgule (,) est le séparateur de liste, le point (.) est le
séparateur décimal, il faut donc écrire les conditions de tes Case de cette
manière:

Case 30.000001 To 100: Range("D" & c.Row) = 1
Case 10.000001 To 30: Range("D" & c.Row) = 2
Case 3.000001 To 10: Range("D" & c.Row) = 3
Case 1.000001 To 3: Range("D" & c.Row) = 4
Case 0.300001 To 1: Range("D" & c.Row) = 5
Case 0.100001 To 0.3: Range("D" & c.Row) = 6
Case Is <= 0.1: Range("D" & c.Row) = 7

C'est mieux ?
--
Bonne continuation

...
J'ai oublié de vous précicer que dans ma colonne C, les chiffres ont
jusqu'à 6 chiffres après la virgule ce qui me pose donc un problème.
...
Seulement les 4 premières lignes se transforment automatiquement en :
...
Case 30, 1 To 100: Range("D" & c.Row) = 1
...


newoceane2000
Le #4493721
On 7 mai, 16:21, "Gilles MOUGNOZ" wrote:
Bonjour, New Oceane

En VBA, la virgule (,) est le séparateur de liste, le point (.) est le
séparateur décimal, il faut donc écrire les conditions de tes Case de cette
manière:

Case 30.000001 To 100: Range("D" & c.Row) = 1
Case 10.000001 To 30: Range("D" & c.Row) = 2
Case 3.000001 To 10: Range("D" & c.Row) = 3
Case 1.000001 To 3: Range("D" & c.Row) = 4
Case 0.300001 To 1: Range("D" & c.Row) = 5
Case 0.100001 To 0.3: Range("D" & c.Row) = 6
Case Is <= 0.1: Range("D" & c.Row) = 7

C'est mieux ?
--
Bonne continuation



...
J'ai oublié de vous précicer que dans ma colonne C, les chiffres ont
jusqu'à 6 chiffres après la virgule ce qui me pose donc un problè me.
...
Seulement les 4 premières lignes se transforment automatiquement en :
...
Case 30, 1 To 100: Range("D" & c.Row) = 1
...- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents


Bonjour,

Merci à tous pour votre aide car grâce à vous ça marche enfin à
100% !!!


Publicité
Poster une réponse
Anonyme