Macro sous Excel 2010

Bonjour,

Voici la programmation en VBA avec Excel 2010. J'ai tapé ceci pour programmer mon macro:

Sub Test()

If Range("A3").Value = Range("C3").Value Then

If Range("B3").Value = "5" Then Range("D3").Value = "+20"
If Range("B3").Value = "4" Then Range("D3").Value = "+19"
If Range("B3").Value = "3" Then Range("D3").Value = "+18"
If Range("B3").Value = "2" Then Range("D3").Value = "+17"
If Range("B3").Value = "1" Then Range("D3").Value = "+16"
If Range("B3").Value = "0" Then Range("D3").Value = "+13"

ElseIf Range("A3").Value <> Range("C3").Value Then

If Range("B3").Value = "5" Then Range("D3").Value = "-20"
If Range("B3").Value = "4" Then Range("D3").Value = "-6"
If Range("B3").Value = "3" Then Range("D3").Value = "+0"
If Range("B3").Value = "2" Then Range("D3").Value = "+2"
If Range("B3").Value = "1" Then Range("D3").Value = "+3"
If Range("B3").Value = "0" Then Range("D3").Value = "+4"

Else: Range("D3").Value = "Pas de réponse"
End If
End Sub

Mon problème est que, pour l'instant, cela ne s'applique qu'à la 3e ligne. J'aurais voulu savoir comment faire pour l'appliquer à toutes les lignes.

Merci beaucoup! :)

5 réponses

  1. Contributeur
    bonjour

    à la bourre
    code commenté en supprimant la série de if
    <code>Option Explicit
    Supprimé
    Excusez moi d'avoir osé proposer une solution peut-^tre + élaborév mais rassure toi, David, je ne te dérangerai plus.
    Michel
    0
    1. for i = TaLigneDeDebutDeDonnees to imax   
          If Range("A"& i).Value = Range("C" & i).Value Then  etc...  
      next i


      Je colle donc ce que j'avais tapé pour la 3e ligne dans le
      If Range
      ?

      Merci bien! :)
      0
      1. A chaque tour de boucle, ton i va prendre le numéro de la ligne donc tu remets simplement ton code :), tu as juste à remplacer tes "A3", "B3" et "C3" par des "A" & i, "B" & i, et "C" & i
        0
      2. Je n'ai qu'une chose à dire: c'est génial !. Et merci beaucoup de m'avoir aidé Heremion! ;-)
        0
    2. une variable en VBA se déclare comme suit :

      dim TaVariable 


      et comme je te l'ai mis plus haut, ton iMax doit prendre la valeur :

      iMax = Range("A65536").End(xlUp).Row


      i va donc être la première ligne de tes données, et imax, va se remplir avec la ligne ci-dessus avec le numéro de la dernière ligne où il trouve des données dans la colonne A

      Il faut toujours penser à accepter un post qui vous sort du pétrin
      1
      1. Comment est-ce que je déclare iMax et i? Oui, je débute en programmation... Comme ceci: iMax = 5 ?

        i correspond à la première ligne et iMax à la dernière?

        Merci bien Heremion! :)
        0
        1. Bonjour David,

          Pour cela, déclare un iMax et un i
          puis

          iMax = Range("A65536").End(xlUp).Row


          Cela va te ramener la dernière ligne remplie.

          Ensuite tu fais un :

          for i = TaLigneDeDebutDeDonnees to imax  
              If Range("A"& i).Value = Range("C" & i).Value Then  etc... 
          next i


          Il faut toujours penser à accepter un post qui vous sort du pétrin
          0