Additionner des valeurs dans un tableau avec VBA

  • Initiateur de la discussion Initiateur de la discussion oinegain
  • Date de début Date de début

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 !

oinegain

XLDnaute Junior
Bonjour

Je souhaite additionner via le bouton enregistrer figurant sur la feuille Evaluation, la valeur de C9, E9 G9 ... sur la feuille recap ebdo en B3 B4 B5...
J'ai réussi à copier la valeur, mais si je change les valeurs sur la feuille Evaluation, je voudrais que ces nouvelles valeurs s’additionnent à celle déjà présentes dans la feuille récap ebdo
Ceci pour chacun des prénoms.
Ci joint mon fichier d'exemple
Merci pour vos lumières
 

Pièces jointes

Re : Additionner des valeurs dans un tableau avec VBA

salut,

Je te propose ceci:

Code:
Private Sub Enregistrer_Click()
Set recap = Sheets("Recap ebdo")
Set eval = Sheets("Evaluations")

lig = 0
For col = 0 To 18 Step 2
    temp = eval.Range("C9").Offset(0, col)
    recap.Range("b3").Offset(lig, 0) = recap.Range("b3").Offset(lig, 0) + _
                                                   eval.Range("C9").Offset(0, col)
    lig = lig + 1
Next col
End Sub

++
Hieu
 
Re : Additionner des valeurs dans un tableau avec VBA

Merci à toi Hieu pour ta formule, elle convient parfaitement. Il ne me reste plus qu'à appliquer cela aux autres cellules. Je ne manquerai pas de te contacter si je rencontre des difficultés pour ajuster les autres cellules.

@M12, la formule est certes bonne, mais je veux additionner le résultat sur la feuille Recap ebdo ce que ne fait pas ta formule.
Merci tout de même d'avoir pris le temps de te pencher sur mon problème.
 
Re : Additionner des valeurs dans un tableau avec VBA

Bonjour Hieu
Je me suis penché sur ton code et j'ai tenté de terminer le tabelau avec pus ou moins de réussite.
lorque je copie les données, le résultat est décalé vers le bas pour la colonne C et D de la feuille "Recap ebdo"
Merci pour tes lumières😕
Code:
Private Sub Enregistrer_Click()
Set recap = Sheets("Recap ebdo")
Set eval = Sheets("Evaluations")

lig = 0
For col = 0 To 18 Step 2
    temp = eval.Range("C9").Offset(0, col)
    recap.Range("b3").Offset(lig, 0) = recap.Range("b3").Offset(lig, 0) + _
                                                   eval.Range("C9").Offset(0, col)
    lig = lig + 1
Next col
For col = 0 To 18 Step 2
    temp = eval.Range("C19").Offset(0, col)
    recap.Range("c3").Offset(lig, 0) = recap.Range("c3").Offset(lig, 0) + _
                                                   eval.Range("C19").Offset(0, col)
    lig = lig + 1
Next col
For col = 0 To 18 Step 2
    temp = eval.Range("C19").Offset(0, col)
    recap.Range("d3").Offset(lig, 0) = recap.Range("d3").Offset(lig, 0) + _
                                                   eval.Range("C24").Offset(0, col)
    lig = lig + 1
Next col
End Sub
 
Dernière édition:
Re : Additionner des valeurs dans un tableau avec VBA

Salut,

Lorsque tu finis ta boucle, la variable lig qui correspond à la ligne, n'est pas réinitiaisé; c'est pour ça, que ça continue de descendre.
En reregardant mon code, j'me rends compte que j'ai créé une variable temporaire "temp" dont je ne me sers pas ; on peut donc virer. Du coup, si j'repars de ce que tu as fait :

Code:
Private Sub Enregistrer_Click()
Set recap = Sheets("Recap ebdo")
Set eval = Sheets("Evaluations")

lig = 0
For col = 0 To 18 Step 2
    recap.Range("b3").Offset(lig, 0) = recap.Range("b3").Offset(lig, 0) + _
                                       eval.Range("C9").Offset(0, col)
    lig = lig + 1
Next col

lig=0
For col = 0 To 18 Step 2
    recap.Range("c3").Offset(lig, 0) = recap.Range("c3").Offset(lig, 0) + _
                                       eval.Range("C19").Offset(0, col)
    lig = lig + 1
Next col

lig=0
For col = 0 To 18 Step 2
    recap.Range("d3").Offset(lig, 0) = recap.Range("d3").Offset(lig, 0) + _
                                       eval.Range("C24").Offset(0, col)
    lig = lig + 1
Next col
End Sub

Mais il est inutile de créer 3 boucles, puisque c'est la même boucle !!

Donc, j'ai fait ça :
Code:
Private Sub Enregistrer_Click()
Set recap = Sheets("Recap ebdo")
Set eval = Sheets("Evaluations")

lig = 0
For col = 0 To 18 Step 2
    recap.Range("b3").Offset(lig, 0) = recap.Range("b3").Offset(lig, 0) + _
                                       eval.Range("C9").Offset(0, col)
    recap.Range("c3").Offset(lig, 0) = recap.Range("c3").Offset(lig, 0) + _
                                       eval.Range("C19").Offset(0, col)
    recap.Range("d3").Offset(lig, 0) = recap.Range("d3").Offset(lig, 0) + _
                                       eval.Range("C24").Offset(0, col)
    lig = lig + 1
Next col
End Sub


N'hésite pas à revenir vers moi, si t'as des questions, sur le code

++
Hieu
 
Dernière modification par un modérateur:
Re : Additionner des valeurs dans un tableau avec VBA

Merci à toi Hieu 🙂
J'ai opté pour le deuxième code plus léger.
Je suis débutant en VBA, j'essaye de réaliser mes fichiers avec mes faibles connaissances.
Encore merci à toi
 
Re : Additionner des valeurs dans un tableau avec VBA

Merci Hieu,
mais il se trouve que j'ai rajouté des lignes supplémentaires dans mon tableau, et du coup, la macro ne fonctionne plus.
N'y a t'il pas moyen de faire ne sorte que si Excel dans une plage donnée trouve une valeur, qu'il la supprime??
Merci pour tes lumières🙂
 
Re : Additionner des valeurs dans un tableau avec VBA

Dans ton bouton Reinitialiser,

tu as cette macro :
Code:
Sub Réinitialiser()
    Range("c6:u8,c10:u18,c20:u23") .ClearContents
End Sub

(que j'ai légèrement modifié pour virer l'inutile...) Te suffit d'alimenter ton range, en fonction de ce que tu veux effacer !
 
Re : Additionner des valeurs dans un tableau avec VBA

Moi, ça marche ^^

LE code est dans la feuille "Evaluations"

Code:
Private Sub Reinitialiser_Click()
Application.ScreenUpdating = False
Range("C6:U9,C11:U19,C21:U24,C26:U27").ClearContents
End Sub

++
 

Pièces jointes

Re : Additionner des valeurs dans un tableau avec VBA

Re bonjour,
Dans mon tableau (voir PJ) lorsque je clique sur le bouton enregistrer, les valeurs figurant sur les lignes "Moyenne" sont enregistrées sur la feuille "Recap ebdo".
(Bon!! j'ai fait une faute dans Hebdo et je ne sais pas comment modifier sans chambouler tous les codes mais ça à la rigueur c'est pas grave, je marquerais l'onglet par la suite).

Par contre si je rajoute un nouvel agent, dans l'onglet "Agents, les valeurs saisies pour ce dernier ne sont pas prise en compte dans la feuille "Recap ebdo" lors de l'enregistrement.
Je ne comprend pas pourquoi, qu'est ce qui manque dans mon code???
Bien entendu je souhaiterai pouvoir ajouter autant d'agents que nécessaire et que les valeurs soient prises en compte.

Merci pour vos lumières:🙂
 

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

D
Réponses
4
Affichages
696
G
Réponses
3
Affichages
959
V
Réponses
0
Affichages
2 K
V
Retour