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

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

9 réponses
Avatar
newoceane2000
Bonjour,

J'ai une feuille Excel avec dans la colonne C, une suite de chiffre
allant de 0 =E0 100.
Je voudrais pouvoir (si possible gr=E2ce =E0 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 =E0 100
2 pour un nombre en colonne C de plus de 10 =E0 30
3 pour un nombre en colonne C de plus de 3 =E0 10
4 pour un nombre en colonne C de plus de 1 =E0 3
5 pour un nombre en colonne C de plus de 0.3 =E0 1
6 pour un nombre en colonne C de plus de 0.1 =E0 0.3
7 pour un nombre en colonne C inf=E9rieur ou =E9gal =E0 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=E9cieuse...

9 réponses

Avatar
isabelle
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...



Avatar
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
a écrit dans le message de news:

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...
Avatar
newoceane2000
On 5 mai, 18:07, "Daniel" wrote:
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
a écrit dans le message de news:

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

Avatar
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

Avatar
luc c
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...





Avatar
isabelle
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...










Avatar
newoceane2000
On 6 mai, 13:50, R1 wrote:
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?


Avatar
Gilles MOUGNOZ
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
...


Avatar
newoceane2000
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% !!!