Macro en Excel

Résolu
Bonjour,
Bonjour,
Je veux créer un tableau sous Excel qui continent plusieurs lignes et ajouter un bouton lie à une Macro qui fait plusieurs taches :
1) Faire la somme de deux colonnes (C et D) pour chaque ligne.
2) Afficher le résultat en colonne E.
3) Remplacer la valeur précédente dans C par la valeur de E et mettre la colonne D à zéro.
4) En cas ou la valeur de la colonne E >= 14 afficher un message.
Alors, j’ai arrivé à faire la somme pour une seule ligne par les commandes suivantes :
Sub test()
Range("E2").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-2],RC[-1])"
End Sub
Mais, lorsque je veux l’appliquée sur les autres ligne ça marche pas et je n’arrive pas à faire les autres taches, et est ce que vous pouvez m’aider à réaliser ce simple projet ?
Merci en avance.

2 réponses

  1. Merci beaucoup pour votre aide.
    Est ce que je peux te déranger un peu plus, et tu me donnes des explications du code?

    Merci
    0
    1. Voici le code commenté
      Sub test()
      Dim DerLig As Long
      Dim Cel As Range
      'On détermine le numéro de la dernière ligne renseignée dans la colonne C
      DerLig = Range("C" & Rows.Count).End(xlUp).Row
      'On balaye chaque cellule renseignée de la colonne C
      For Each Cel In Range("C2:C" & DerLig)
      'On effectue la somme des cellules des colonnes C et D et on affecte le résultat à la colonne E
      Cel.Offset(, 2) = Cel.Value + Cel.Offset(, 1).Value
      'Le résultat est reporté dans la colonne C
      Cel = Cel.Offset(, 2)
      'On affecte 0 à la colonne D
      Cel.Offset(, 1) = 0
      'On emet un message si la valeur est supérieure à 14
      If Cel.Offset(, 2) > 14 Then
      MsgBox "Valeur supérieure à 14 en " & Cel.Offset(, 2).Address
      End If
      Next Cel
      End Sub

      N'hésites pas à relancer si tu as besoin d'exp^lications complémentaires.

      A+
      0
    2. @GyrusMerci beaucoup pour votre aide, vous m'avez vraiment aider ce qui me permet poser plus de questions.
      Alors, puisque j'ai plusieurs données le message d'erreur me pose un problème. Car même si je ne touche pas à la case ou la valeur >14) et je fais enregistrer la condition de teste s’exécute toujours. Est ce qu'il y a une méthode pour afficher le message (Valeur supérieure à 14) une seule fois pour chaque cellule et désactiver par exemple les cases ou la somme à dépasser 14.
      Si vous avez 'autres propositions n’hésiter pas à les ajouter.
      Cordialement.
      0
    3. @simoVoici la macro adaptée pour que le résultat ne soit pas noté si la somme est supérieure à 14.
      Sub test()
      Dim DerLig As Long
      Dim Cel As Range
      Dim Resultat As Double
      'On détermine le numéro de la dernière ligne renseignée dans la colonne C
      DerLig = Range("C" & Rows.Count).End(xlUp).Row
      'On balaye chaque cellule renseignée de la colonne C
      For Each Cel In Range("C2:C" & DerLig)
      'On calcule la somme des cellules des colonnes C et D
      Resultat = Cel.Value + Cel.Offset(, 1).Value
      'Si le résultat est <=14,
      If Resultat <= 14 Then
      'le résultat est affecté à la colonne E
      Cel.Offset(, 2) = Resultat
      'Le résultat est reporté dans la colonne C
      Cel = Resultat
      'On affecte 0 à la colonne D
      Cel.Offset(, 1) = 0
      'Sinon,
      Else
      'On emet un message si la valeur est supérieure à 14
      MsgBox "Valeur supérieure à 14 en ligne " & Cel.Row
      End If
      Next Cel
      End Sub

      A+
      0
    4. @GyrusMerci pour votre aide.
      0
  2. Bonjour,

    Essaie comme cela
    Sub test()
    Dim DerLig As Long
    Dim Cel As Range
    DerLig = Range("C" & Rows.Count).End(xlUp).Row
    For Each Cel In Range("C2:C" & DerLig)
    Cel.Offset(, 2) = Cel.Value + Cel.Offset(, 1).Value
    Cel = Cel.Offset(, 2)
    Cel.Offset(, 1) = 0
    If Cel.Offset(, 2) > 14 Then
    MsgBox "Valeur supérieure à 14 en " & Cel.Offset(, 2).Address
    End If
    Next Cel
    End Sub

    A+
    0