Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jeanphi

XLDnaute Occasionnel
Bonjour

J'utilise le code ci dessous pour calculer un délai entre 2 colonnes
Le problème est que ce code me calcule le délai uniquement sur le dernier n correspond aux critère (n <>"")
Comment faire pour que la macro fasse le calcul sur toutes les lignes correspondant aux critère?
Merci 🙂


Private Sub CheckBox14_Click()

Dim tot As Double
Dim n As Integer
Worksheets("FEB").Select
For n = 10 To 13
If Range("AB" & n) <> "" And Range("E" & n) <> "" Then
tot = Application.WorksheetFunction.Sum(Range("AB" & n)) - Application.WorksheetFunction.Sum(Range("E" & n))
End If
Next n
MsgBox "Le délai moyen de commande est de " & Format((tot), "### ##0.00") & "jours", vbInformation, "Délai moyen de commande"

End Sub
 
Re : Boucle For et sum

J'utilise le code ci dessous pour calculer un délai entre 2 colonnes
Le problème est que ce code me calcule le délai uniquement sur le dernier n correspond aux critère (n <>"")
Comment faire pour que la macro fasse le calcul sur toutes les lignes correspondant aux critère?
Merci 🙂
A priori, si le calcul est bien effectué sur toute les lignes, le message n'est affiché qu'à la fin et donc après le dernier calcul
Modifie comme ceci si tu veux un message à chaque ligne
Code:
Private Sub CheckBox14_Click()
Dim tot As Double
Dim n As Integer
Worksheets("FEB").Select
For n = 10 To 13
  If Range("AB" & n) <> "" And Range("E" & n) <> "" Then
    tot = Application.WorksheetFunction.Sum(Range("AB" & n)) - Application.WorksheetFunction.Sum(Range("E" & n))
MsgBox "Le délai moyen de commande est de " & Format((tot), "### ##0.00") & "jours", vbInformation, "Délai moyen de commande"
  End If
Next n
End Sub
A+
kjin
 
Re : Boucle For et sum

Bonjour JeanPhi,

Sans boucle for

1 - sans variable
Code:
application.WorksheetFunction.SUM(range("D
AB10:AB13"))-applicatiOn.WorksheetFunction.Sum(range("E10:E13"))

2 - avec variable
Code:
application.WorksheetFunction.SUM(range("D
AB"& n & ":AB" & n+3))-applicatiOn.WorksheetFunction.Sum(range("E" & n &":E" &  n+13))

Avec boucle
Dim tot as double
Code:
For n = 10 To 13
 
If val(Range("AB" & n))>0 And val(Range("E" & n))>0 Then
 
    tot = tot+ Range("AB" &n)-Range("E" &  n)
 
End If
 
Next

[Edition] hello kjin
A+
 
Re : Boucle For et sum

bonjour kajin, hasco

et merci
mais en fait ce que je voudrais c est d'avoir automatiquement via le msgbox le délai moyen entre les lignes de la colonne E et celles de la colonne AB si AB<>"" et E<>"" et non pas le délai à chaque changement de n 🙁
 
Re : Boucle For et sum

JeanPhi,

Après le calcul de tot:

Code:
MsgBox "Le délai moyen de commande est de " & Format((tot[SIZE=4][COLOR=red]/4[/COLOR][/SIZE]), "### ##0.00") & "jours", vbInformation, "Délai moyen de commande"

Ou
Code:
dim cpt
For n = 10 To 13
 
If val(Range("AB" & n))>0 And val(Range("E" & n))>0 Then
cpt=cpt+1
tot = tot+ Range("AB" &n)-Range("E" & n)
 
End If
Next 
MsgBox "Le délai moyen de commande est de " & Format((tot[SIZE=3][COLOR=red]/CPT[/COLOR][/SIZE]), "### ##0.00") & "jours", vbInformation, "Délai moyen de commande"
A+
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
926
Réponses
2
Affichages
528
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
5
Affichages
578
Réponses
4
Affichages
742
Retour