Donner une valeur à une cellule

Clem81 -  
enark78 Messages postés 491 Statut Membre -
Bonjour,
je suis débutant en Macro sous excel (language VBA). J'ai une question à poser, simple pour un programmeur VBA je pense. Voyons voir si certains d'entre vous trouvent des réponses.
------
PANORAMA:
Je dispose d'une feuille excel.
Dans la colonne A , des valeurs allant de 0 à 300
Dans la colonne B, je souhaite afficher en face de chaque cellule de A une valeur.
cette valeur est
1 si A est compris entre 0 et 50
2 si A ent compris entre 50 et 300
-------
si quelqu'un à une réponse, je pense bien que j'arriverai à résoudre mon problème qui est un peu plus complexe en fait que le panorama edicté ci-dessus...^^

Merci à tous

18 réponses

enark78 Messages postés 491 Statut Membre 17
 
A priori il faut que tu fasses une boule qui test chaque ligne de A et tu mets le 1 ou le 0 avec un if
0
enark78 Messages postés 491 Statut Membre 17
 
Ca devrait ressembler a ca si j'ai bien compris et si je ne me suis pas trompé.

For i = 1 To 65536 'nombre de ligne à contrôler
If Range("a" & i) > 0 And Range("a" & i) <= 50 Then
'tu écris ce que tu veux donc 1 dans la cellule ("b" & i)
Else
'tu écris ton 0 comme avant
End If
Next i
0
clem81
 
Je pensais aussi à une boucle If Then else.
Ou quelque chose du genre mais je ne sais pas l'écrire...
Quelqu'un pourrait m'écrire les lignes pour l'exemple. Puis moi je me débrouillerai pour adapter l'exemple à mon problème...
Merci beaucoup pour vos réponses.
^^
Clément
0
clem81
 
j'essaye ça , puis je vous redit...merci bien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
clem81
 
Ma macro ressemble à ça...

-------
Sub boucle()
For i = 5 To 254
If Range("a" & i) > 0 And Range("a" & i) <= 50 Then
("b" & i) = 0
Else
End If
Next i
End sub
--------
Mais cela ne fonctionne pas.
Il doit falloir écrire correctement l'écriture dans la colonne b, ou je ne sait pas trop.
Merci a tous de votre dérangement.
Clem
0
enark78 Messages postés 491 Statut Membre 17
 
essaie ca

Sub boucle()
dim i as integer
For i = 5 To 254
If Range("a" & i) > 0 And Range("a" & i) <= 50 Then
Range("b"&i).FormulaR1C1 = "1"
Else
Range("b"&i).FormulaR1C1 = "2"
End If
Next i
End sub
0
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   407
 
une solution parmis tant d'autres
sub truc()
dim i as integer
 i=5
while range("A" & i).value<>""
if range("A" & i).value<=50 then 
range("B" & i).value="1"
else 
range("B" & i).value="2"
wend
end sub


clem81: dans ton code le else n'as rien a faire là si tu ne met aucune valeur dedans
de plus tu as dis de marquer 1 si entre 0 et 50 et marquer 2 si supérieur a 50, hors personnes ici (y compris toi) n'avez utilisé cette notation
la norme de lecture est donc passé de 1=0 et 2=1 ?
0
clem81
 
Mise en appliscation de la solution de ENARK...

voilà ma macro
-------------
Sub boucle()

'Ici, le premier intervalle de valeurs
Dim i As Integer
For i = 14 To 107
If Range("m" & i) > 0 And Range("m" & i) <= 0.5 Then
Range("n" & i).FormulaR1C1 = "1"
Else
End If
Next i

'ici je vais donner mon second intervalle de valeurs
Dim j As Integer
For j = 14 To 107
If Range("m" & j) > 0.5 And Range("m" & j) <= 1 Then
Range("n" & j).FormulaR1C1 = "2"
Else
Range("n" & j).FormulaR1C1 = "3"
End If
Next j
End Sub



'[0;0,5] premier intervalle de valeurs à affilier à ma seconde colonne
'[0,5;1] second
'[1;3] etc...


'Résultat de ma macro: j'obtient seulement des 2 (meme pour des valuers inférieures à 0.5) et des 3...!!!

On doit pas etre bien loin du but...
Je vais aussi essayer l'autre solution proposée dernièrement....
Encore une fois, merci beaucoup à vous qui prenez du temps pour m'aider, c'est vraiment sympa.
Clem
0
enark78 Messages postés 491 Statut Membre 17
 
si tu as plus de 2 intervalles, c'est effectivement normale que ca ne marche pas
petu etre ca mais j'ai peur de m'etre emmeler les pinceaux
Sub boucle()

'Ici, le premier intervalle de valeurs
Dim i As Integer
For i = 14 To 107
If Range("m" & i) > 0 And Range("m" & i) <= 0.5 Then
Range("n" & i).FormulaR1C1 = "1"
Else If Range("m" & j) > 0.5 And Range("m" & j) <= 1 Then
Range("n" & j).FormulaR1C1 = "2"
Elseif Range("n" & j).FormulaR1C1 = "3"
End If
Next i
End Sub
0
enark78 Messages postés 491 Statut Membre 17
 
j'ai juste oublié un Then a la fin de la ligne du deuxieme ElseIf et pendant que j'ai écrit je me suis rendu que j'ai mal écrit le premier. Else et if doivent etre collé: ElseIf
0
clem81
 
ça y est !! youpi ^^

Alors voilà le programme VBA qui est une réponse possible à mon problème, si jamais certains ont le même soucis...

----
Dim i As Integer
For i = 14 To 107
If Range("m" & i) > 0 And Range("m" & i) <= 0.5 Then
Range("n" & i).FormulaR1C1 = "1"
ElseIf Range("m" & i) > 0.5 And Range("m" & i) <= 1 Then
Range("n" & i).FormulaR1C1 = "2"
ElseIf Range("m" & i) > 1 And Range("m" & i) <= 3 Then
Range("n" & i).FormulaR1C1 = "3"
ElseIf Range("m" & i) > 3 And Range("m" & i) <= 8 Then
Range("n" & i).FormulaR1C1 = "4"
ElseIf Range("m" & i) > 8 And Range("m" & i) <= 15 Then
Range("n" & i).FormulaR1C1 = "5"
End If
Next i
End Sub

------

Merci beaucoup à ceux qui se sont penché sur la question.
Merci surtout à enark qui a eu la patience de m'aider. Je te suis redevable si jamais tu venais à avoir une question en chimie ou procédés industriels..je ferai de mon mieux pour taider ! ! !
Problème Résolu.

Bon Week end à tous.
0
enark78 Messages postés 491 Statut Membre 17
 
Merci, an chimie je pourrai eventuellement me débrouiller par contre en procédés industriels, j'y penserai. A priori ca n'arrivera aps mais bon, on sait jamais. Dans ton code, tu peux aussi remplacer formulaR1C1 par value, qui est mieux et plus clair.
0
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   407
 
généralement a la place du multiple else if on utilise un select case
et a partir du else if ce n'est pas utile de dire que la valeur doit etre supérieur a 0.5 puisque si elle n'est pas passé dans le premier test ca veu dire qu'elle est obligatoirement supérieur
0
enark78 Messages postés 491 Statut Membre 17
 
pour le select case ca c'est vrai que c'est mieux mais pour la deuxieme partie de ton message, je ne vois pas trop ce qeu tu veux dire.


[edit] Si en fait j'ai compris.
0
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   407
 
pour une variable a:
si a est strictement inférieur (<) a une valeur alors elle ne peu pas etre égal ou supérieur a cette même valeur
du coup dans le test, si on ne passe pas dans le test disant que a<3 alors on passera dans le test a>=3
0
enark78 Messages postés 491 Statut Membre 17
 
Je viens d'éditer ce que j'avais dit, je pensais que c'était le mot ElseIf qui n'était pas obligatoire ...
0
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   407
 
ah ben je ne vérifie pas que l'on ai édité avant de poster ^^
0
enark78 Messages postés 491 Statut Membre 17
 
de toute facon je l'ai pendant que tu ecrivais ta reponse, donc tu n'aurais pas pu la voir
0