Additionner des valeurs dans un tableau avec VBA

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

  • Evulations.xlsm
    32.8 KB · Affichages: 41
  • Evulations.xlsm
    32.8 KB · Affichages: 53

Hieu

XLDnaute Impliqué
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
 

M12

XLDnaute Accro
Re : Additionner des valeurs dans un tableau avec VBA

Bonjour,

Pourquoi faire une Macro et appuyez sur un bouton alors que les formules le font en direct
 

Pièces jointes

  • Evulations.xlsm
    30.3 KB · Affichages: 55
  • Evulations.xlsm
    30.3 KB · Affichages: 56

oinegain

XLDnaute Junior
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.
 

oinegain

XLDnaute Junior
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:confused:
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:

Hieu

XLDnaute Impliqué
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:

oinegain

XLDnaute Junior
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
 

oinegain

XLDnaute Junior
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:)
 

Hieu

XLDnaute Impliqué
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 !
 

Hieu

XLDnaute Impliqué
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

  • Evulations_V01.1.xlsm
    73.3 KB · Affichages: 35

oinegain

XLDnaute Junior
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

  • Test-Evulations_V01.xlsm
    83.5 KB · Affichages: 34

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16