Cumuls dans une cellule

  • Initiateur de la discussion Initiateur de la discussion delvig
  • 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 !

delvig

XLDnaute Nouveau
Bonjour,

Je voudrais dans une cellule où figure déjà un montant, pouvoir cumuler les montants d'une autre cellule.
Je m'explique : j'ai en A1 "Téléphonie" et en B1 1000 €
Dans un autre tableau, j'ai en C1 "Téléphonie" et en D1 500 € puis en C2 "Téléphonie" et en D2 350 €.
Je voudrais que la cellule B1 du premier classeur aille vérifier que sur C1 et C2 de l'autre classeur, il s'agit bien de "Téléphonie" et puisque c'est le cas dans mon exemple que les montants de 500 € et de 350 € se cumulent avec les 1000 € déjà existants (donc que B1 affiche un total de 1850 €). Et je voudrais que chaque fois que j'ajouterai une ligne "Téléphonie" avec un montant dans mon second tableau, les sommes se cumulent dans la cellule B1 du premier tableau.
J'espère avoir été assez clair ;-)
Merci par avance si vous pouvez m'aider.
Cordialement,
Patrice
 
Re : Cumuls dans une cellule

Bonjour delvig, bienvenue sur XLD,

Appelons "A.xls" le 1er classeur et "Feuil1" sa feuille avec le tableau A:B.

Dans le 2ème classeur, mettre cette macro dans le code de la feuille considérée (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 4 Or Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
Dim ref As Range, lig As Variant
Set ref = Target.Offset(, -1)
If IsEmpty(ref) Then
  MsgBox "Vous devez d'abord renseigner la colonne C !", 48
  ref.Select
  Target = ""
  Exit Sub
End If
If Not IsNumeric(Target) Then
  Target = ""
  Target.Select
  Exit Sub
End If
With Workbooks("A.xls").Sheets("Feuil1") ' noms à adapter
  lig = Application.Match(ref, .Columns("A"), 0)
  If IsNumeric(lig) Then .Cells(lig, "B") = .Cells(lig, "B") + Target
End With
End Sub

Au départ, la colonne D de ce 2ème classeur doit être vide.

Edit 1 : bonsoir Philippe, pas rafraîchi.

Edit 2 : le 1er classeur doit être ouvert, et s'il n'est pas ouvert, la macro peut l'ouvrir.

Vous en trouverez le code sur le forum.

A+
 
Dernière édition:
Re : Cumuls dans une cellule

Re,

La macro précédente souffre d'un grave défaut : si l'on modifie une valeur numérique en colonne D, la nouvelle valeur se rajoute dans le 1er fichier, l'ancienne valeur reste comptabilisée.

Et si on efface la valeur, l'annulation n'est pas prise en compte.

Il faut probablement s'orienter vers une solution par formule comme celle de Philippe.

A+
 
Re : Cumuls dans une cellule

Bonjour delvig, le forum,

Je suis têtu alors j'ai continué sur VBA.

Téléchargez les 2 fichiers joints dans le même dossier (par exemple le bureau).

Ouvrez le fichier Detail(1).xls. Un clic sur le bouton, et la macro :

- ouvre le fichier Recap.xls s'il n'est pas ouvert

- ajoute les valeurs numériques

- déduit les anciennes valeurs numériques si elles ont été mémorisées

- mémorise les nouvelles valeurs.

La macro est dans Module1 du fichier Detail(1).xls (touches Alt+F11).

Voir le nom mem créé dans [Recap.xls]Feuil1.

Edit : on pourrait aussi faire exécuter la macro dans une Worksheet_Change, mais ce serait un peu lourd...

A+
 

Pièces jointes

Dernière édition:
- 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
10
Affichages
207
  • Question Question
Microsoft 365 Catégorisation
Réponses
5
Affichages
573
Retour