Macro sous Excel 2010

David -  
 David -
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. Heremion Messages postés 564 Statut Membre 102
     
    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
  2. Heremion Messages postés 564 Statut Membre 102
     
    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
  3. David
     
    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
  4. David
     
    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. Heremion Messages postés 564 Statut Membre 102
       
      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. David
       
      Je n'ai qu'une chose à dire: c'est génial !. Et merci beaucoup de m'avoir aidé Heremion! ;-)
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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