Macro en Excel
Résolu/Fermé
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
- Si et excel - Guide
- Macro word - Guide
2 réponses
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
13 janv. 2016 à 18:32
13 janv. 2016 à 18:32
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
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
13 janv. 2016 à 19:21
13 janv. 2016 à 19:21
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+
simo
>
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
13 janv. 2016 à 22:29
13 janv. 2016 à 22:29
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.
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
>
simo
13 janv. 2016 à 23:31
13 janv. 2016 à 23:31
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+
simo
>
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
14 janv. 2016 à 10:52
14 janv. 2016 à 10:52
Merci pour votre aide.