Macro en Excel
Résolu
simo
-
simo -
simo -
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.
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.
A voir également:
- Macro en Excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
2 réponses
Bonjour,
Essaie comme cela
A+
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+
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
Est ce que je peux te déranger un peu plus, et tu me donnes des explications du code?
Merci
Voici le code commenté
N'hésites pas à relancer si tu as besoin d'exp^lications complémentaires.
A+
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+
Merci 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.
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.
Voici la macro adaptée pour que le résultat ne soit pas noté si la somme est supérieure à 14.
A+
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+