Cumuls dans une cellule

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
 

job75

XLDnaute Barbatruc
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:

job75

XLDnaute Barbatruc
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+
 

job75

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

  • Detail(1).xls
    37.5 KB · Affichages: 48
  • Recap.xls
    13.5 KB · Affichages: 39
  • Recap.xls
    13.5 KB · Affichages: 44
  • Recap.xls
    13.5 KB · Affichages: 45
Dernière édition:

Discussions similaires

Réponses
5
Affichages
296