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