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
Configuration: Windows XP Internet Explorer 6.0

18 réponses

  1. 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
  2. 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
  3. 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
  4. clem81
     
    j'essaye ça , puis je vous redit...merci bien
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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
  8. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    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
  15. 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
  16. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    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
  17. 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
  18. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    ah ben je ne vérifie pas que l'on ai édité avant de poster ^^
    0
  19. 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