Donner une valeur à une cellule
Clem81
-
enark78 Messages postés 491 Statut Membre -
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
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
A voir également:
- Donner une valeur à une cellule
- Aller à la ligne dans une cellule excel - Guide
- Bloquer une cellule excel - Guide
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Diviser une cellule excel en deux horizontalement ✓ - Forum Excel
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
18 réponses
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
-------
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
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
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
une solution parmis tant d'autres
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 ?
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 ?
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
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
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
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
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
ç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.
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.
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.
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
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
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.
[edit] Si en fait j'ai compris.
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
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
Je viens d'éditer ce que j'avais dit, je pensais que c'était le mot ElseIf qui n'était pas obligatoire ...