XL 2021 Additionner résultats d'une boucle for en vba

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 !

Claudinedu13

XLDnaute Junior
VB:
Sub BoutonAddition()
Dim fh As Worksheet, dico As Object
Dim I&
    Set fh = Sheets("Feuil1")
    Set dico = CreateObject("Scripting.Dictionary")
    For I = 2 To fh.Range("A" & Rows.Count).End(xlUp).Row
        If fh.Range("B" & I) = "D231201" Then
        MsgBox fh.Range("F" & I) 
        ' Additionner fh.Range("F" & I)
        End If
    Next I
End Sub

Bonjour,

J'apprends au fil de mes besoins, j'ai adapté ce code trouvé sur le net pour mon cas, mais

1/ Comment additionner tous les fh.Range("F" & I) obtenus d"une boucle for ?

2/ "Dans For I = 2" à quoi correspond le 2 ?

Merci
 

Pièces jointes

Solution
bonjour
VB:
Sub BoutonAddition()
    Dim fh As Worksheet, dico As Object
    Dim I&
    Dim Somme As Double
    Set fh = Sheets("Feuil1")
    Set dico = CreateObject("Scripting.Dictionary")
    For I = 2 To fh.Range("A" & Rows.Count).End(xlUp).Row
        If fh.Range("B" & I) = "D231201" Then
            Somme = Somme + fh.Range("F" & I)
        End If
    Next I
    MsgBox Somme
End Sub
bonjour
VB:
Sub BoutonAddition()
    Dim fh As Worksheet, dico As Object
    Dim I&
    Dim Somme As Double
    Set fh = Sheets("Feuil1")
    Set dico = CreateObject("Scripting.Dictionary")
    For I = 2 To fh.Range("A" & Rows.Count).End(xlUp).Row
        If fh.Range("B" & I) = "D231201" Then
            Somme = Somme + fh.Range("F" & I)
        End If
    Next I
    MsgBox Somme
End Sub
 
bonjour
VB:
Sub BoutonAddition()
    Dim fh As Worksheet, dico As Object
    Dim I&
    Dim Somme As Double
    Set fh = Sheets("Feuil1")
    Set dico = CreateObject("Scripting.Dictionary")
    For I = 2 To fh.Range("A" & Rows.Count).End(xlUp).Row
        If fh.Range("B" & I) = "D231201" Then
            Somme = Somme + fh.Range("F" & I)
        End If
    Next I
    MsgBox Somme
End Sub

Bonjour @JM27

Merci pour ta réponse pour l'addition.

Peux tu me dire à quoi correspond 2 dans "For I = 2" ?
 
bonjour
2 correspond à la ligne du début de traitement aurait du être 5
fh.Range("A" & Rows.Count).End(xlUp).Row correspond à la ligne de fin de traitement

par contre dans ta procédure il y a des lignes en trop (non utilisé)
VB:
Sub BoutonAddition()
    Dim fh As Worksheet
    Dim I as long
    Dim Somme As Double
    Set fh = Sheets("Feuil1")
    For I = 2 To fh.Range("A" & Rows.Count).End(xlUp).Row
        If fh.Range("B" & I) = "D231201" Then
            Somme = Somme + fh.Range("F" & I)
        End If
    Next I
    MsgBox Somme
End Sub

Comme je vois que tu débutes voici les lignes commentées

VB:
Sub BoutonAddition()
    Dim fh As Worksheet
    Dim I As Long
    Dim Somme As Double
    ' déclaration de la variable feuille
    Set fh = Sheets("Feuil1")
    ' pour la variable I qui commence à la ligne 5 jusqu'a la ligne de fin de donnée  ( ici 12)
    For I = 5 To fh.Range("A" & Rows.Count).End(xlUp).Row
        ' Si la cellule en b et numéo de la ligne en traitement contient "D231201"
        If fh.Range("B" & I) = "D231201" Then
            ' j'ajoute dans la variable somme  la somme déja enregistrée + la valeur de la cellule F et ligne en cours de traitement
            Somme = Somme + fh.Range("F" & I)
        End If
    Next I
    ' j'envoie le message somme
    MsgBox Somme
End Sub
 
Dernière édition:
Bonjour,
Peut être plus simple :
VB:
Sub BoutonAddition()
Dim Total, Code
    Code = "D231201"
    Total = Application.SumIf([Tableau_AvoirsAcomptes[Réf AV AC]], Code, [Tableau_AvoirsAcomptes[Montant AV AC]])
    MsgBox "Total D231201 : " & Total
End Sub
Ce qui correspond en XL à :
Code:
=SOMME.SI(Tableau_AvoirsAcomptes[Réf AV AC];"D231201";Tableau_AvoirsAcomptes[Montant AV AC])
 
bonjour
2 correspond à la ligne du début de traitement aurait du être 5
fh.Range("A" & Rows.Count).End(xlUp).Row correspond à la ligne de fin de traitement

par contre dans ta procédure il y a des lignes en trop (non utilisé)
VB:
Sub BoutonAddition()
    Dim fh As Worksheet
    Dim I as long
    Dim Somme As Double
    Set fh = Sheets("Feuil1")
    For I = 2 To fh.Range("A" & Rows.Count).End(xlUp).Row
        If fh.Range("B" & I) = "D231201" Then
            Somme = Somme + fh.Range("F" & I)
        End If
    Next I
    MsgBox Somme
End Sub

Comme je vois que tu débutes voici les lignes commentées

VB:
Sub BoutonAddition()
    Dim fh As Worksheet
    Dim I As Long
    Dim Somme As Double
    ' déclaration de la variable feuille
    Set fh = Sheets("Feuil1")
    ' pour la variable I qui commence à la ligne 5 jusqu'a la ligne de fin de donnée  ( ici 12)
    For I = 5 To fh.Range("A" & Rows.Count).End(xlUp).Row
        ' Si la cellule en b et numéo de la ligne en traitement contient "D231201"
        If fh.Range("B" & I) = "D231201" Then
            ' j'ajoute dans la variable somme  la somme déja enregistrée + la valeur de la cellule F et ligne en cours de traitement
            Somme = Somme + fh.Range("F" & I)
        End If
    Next I
    ' j'envoie le message somme
    MsgBox Somme
End Sub
Super merci pour ton retour instructif
 
Bonjour,
Peut être plus simple :
VB:
Sub BoutonAddition()
Dim Total, Code
    Code = "D231201"
    Total = Application.SumIf([Tableau_AvoirsAcomptes[Réf AV AC]], Code, [Tableau_AvoirsAcomptes[Montant AV AC]])
    MsgBox "Total D231201 : " & Total
End Sub
Ce qui correspond en XL à :
Code:
=SOMME.SI(Tableau_AvoirsAcomptes[Réf AV AC];"D231201";Tableau_AvoirsAcomptes[Montant AV AC])
Merci 👍
 
Bonjour,
Peut être plus simple :
VB:
Sub BoutonAddition()
Dim Total, Code
    Code = "D231201"
    Total = Application.SumIf([Tableau_AvoirsAcomptes[Réf AV AC]], Code, [Tableau_AvoirsAcomptes[Montant AV AC]])
    MsgBox "Total D231201 : " & Total
End Sub
Ce qui correspond en XL à :
Code:
=SOMME.SI(Tableau_AvoirsAcomptes[Réf AV AC];"D231201";Tableau_AvoirsAcomptes[Montant AV AC])
Bonsoir @sylvanu

Je vais encore abuser, comment obtenir le nombre de fois où on trouve D231201 dans la colonne Réf AV AC ?

Merci d'avance , je dois chercher des heures pour trouver des trucs très simple comme ça...
 
Avec :
VB:
Qté = Application.CountIf([Tableau_AvoirsAcomptes[Réf AV AC]], Code)
1731089955592.png
 

Pièces jointes

- 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
40
Affichages
2 K
Réponses
3
Affichages
569
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
622
Réponses
4
Affichages
332
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
481
Retour