XL 2016 [RESOLU] Problème de somme d'une cellule à une autre avec VBA

Papy 100

XLDnaute Occasionnel
Bonjour le forum et merci d'avance pour votre aide
Mon problème :
Chaque jour je travaille sur un fichier avec 24 onglets
En K30, de la feuille choisie, je rentre donc un chiffre ou un nombre qui doit s'additionner en P14 de cette même feuille.
Ma demande :
Est-il possible que le nombre entré en K30 s'additionne automatiquement en P14 puis laisse la cellule libre pour une autre entrée.
J'espère avoir été explicite et je réitère mes remerciements.
Patrick
 

Fichiers joints

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Papy 100,

Avec un peu de VBA. Le code est dans le module de ThisWorkbook. Bien entendu, comme rien n'était précisé dans la question, cette macro agit sur toutes les feuilles du classeur.
code:
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Not Intersect(Target, Sh.Range("k30")) Is Nothing Then
    Application.EnableEvents = False: On Error Resume Next
    If Not IsError(Range("p14") + Target) Then Range("p14") = Range("p14") + Target
     Target.ClearContents
    On Error GoTo 0: Application.EnableEvents = True
  End If
End Sub
 

Fichiers joints

Papy 100

XLDnaute Occasionnel
Bonjour Mapomme et merci pour votre aide.
Effectivement je n'ai pas mentionné que j'avais déjà une VBA pour le choix de la cellule pour chaque feuille. Mais tous les calculs se trouvent sur la même cellule.
Je vais introduire votre VBA dans mon programme dans un module de ThisWorkbook et je vais essayer de le faire fonctionner comme vous le souhaitez.
Encore de grands Mercis Mapomme pour l'aide apporté Patrick
 

Papy 100

XLDnaute Occasionnel
re Mapomme et le forum que j'ai oublié précédemment

Serait-il possible de personnaliser votre VBA par onglet car lorsque je l'intègre dans mon fichier, je n'ai qu'un copier coller sans addition.
A ma première demande, je pensais qu'une formule allait faire mon affaire.
J'espère que ma demande sera possible
En tous les cas, je vous remercie de me consacrer de votre temps Patrick
 

Papy 100

XLDnaute Occasionnel
Bonsoir le forum et d'aqvance merci pour votre aide
Je reviens vers vous du fait que je n'arrive pas à faire fonctionner la VBA que "mapomme" m'a envoyée.
Pour une compréhension meilleure, j'ai transformé le fichier original pour vous le transmettre
J'ai de nombreuses feuilles et à leur ouverture la cellule est sélectionnée par le tableau ci-contre;
exemple Alpha en K30. D'autres onglets comme Delta, Kilo et plus se trouvent dans le fichier original. la sélection est sur une autre cellule (il n'y à pas de calcul)
Mon problème est : Toutes les feuilles s'ouvrant sur "K30" servent pour des calculs.
Je souhaiterai que K30 se libère après après avoir entré "la donnée" et que le cumul de ses chiffres soit additionné en P14. Cette cellule sert pour d'autres formules que je maitrise
J'espère que j'ai été assez explicite. d'avance je vous remercie Patrick
 

Fichiers joints

Dernière édition:

Papy 100

XLDnaute Occasionnel
Re le forum et mapomme
Les feuilles apparaissent à la demande du menu déroulant en G5.
Les onglets ne sont plus dans la barre habituelle suite à une macro donnée sur le forum. Je ne peux en dire plus.
Les deux feuilles : "Données et accueil" ne servent qu'a distribuer les onglets de la colonne B de la feuille d'accueil.
Dans la partie 4 je demandais s'il était possible d'avoir une VAB par feuille de toutes celles présentent dans le projet.

J'espère que cela vous éclairera un peu mieux Grands mercis Patrick
 

Papy 100

XLDnaute Occasionnel
Bonjour le Forum

J'appelle à l'aide pour, je pensais, une formule. Je reçois une VBA qui fonctionne en l'état mais pas lorsqu'elle est insérée dans mon fichier originel.
Si mon problème est insoluble, dites le moi, je vais essayer de changer mon fichier.

Je vous remercie de me consacrer votre temps Patrick
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Papy 100,

Voir le fichier joint. Le code se trouve dans le module de ThisWorkbook. J'avoue que pour moi, la question n'est pas claire :oops:
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim s
If Not Intersect(Target, Sh.Range("k30")) Is Nothing Then
    Application.EnableEvents = False: On Error Resume Next
    s = Application.VLookup(Sh.Name, Sheets("Accueil").Range("b:c"), 2, False)
    If s = "K30" Then
      If IsNumeric(Sh.Range("P14")) And IsNumeric(Target) Then
        Sh.Range("P14") = Sh.Range("P14") + Target
        Target.ClearContents
      Else
        MsgBox "Echec car K30 ou P14 n'est pas numérique"
      End If
    End If
    On Error GoTo 0: Application.EnableEvents = True
  End If
End Sub
 

Fichiers joints

eriiiic

XLDnaute Barbatruc
Bonjour à tous,

Je croyais que mapomme dormais alors je m'y suis mis aussi.
Comme il y a de petites différences je met quand même.
Déjà je met en P15 car P14 est occupée par un texte.
Comme tu n'as rien expliqué du fonctionnement du fichier, un nom de feuille peut être présent plusieurs fois dans la liste au cas où...
Dans ThisWorkbook :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Static noEvents As Boolean
    Dim datas, lig As Long, i As Long
    If noEvents Or Target.Count > 1 Then Exit Sub
    If Target.Address = "$K$30" And IsNumeric([K30]) Then
        With Sheets("Accueil")
            datas = .[B2].Resize(.Cells(Rows.Count, 2).End(xlUp).Row - 1, 2).Value
        End With
        For lig = 1 To UBound(datas)
            On Error GoTo suite
            i = Sheets(datas(lig, 1)).Index
            On Error GoTo 0
            If Sh.Name = datas(lig, 1) And UCase(datas(lig, 2)) = "K30" Then
                noEvents = True
                Sh.[P15] = Sh.[P15] + Target.Value
                Target.ClearContents
                Target.Select
                noEvents = False
                Exit For
            End If
suite:
        On Error GoTo 0
        Next lig
    End If
End Sub
eric
 

Papy 100

XLDnaute Occasionnel
Bonjour le forum mapomme et eriiiic pour votre aide
Ce fichier sert à faire plusieurs sommes de différents calculs pour différentes personnes et pour plusieurs types d'appareils.
A la création de ce "programme" il ne servait que pour des appareils. Maintenant il fonctionne pour les deux.
Donc à l'ouverture, en "Accueil" je choisis la personne ou l'appareil ou les deux (alpha......) selon la feuille, c'est en K 30 (si une personne est incluse) ou
sur une autre cellule pour (kilo ou delta) en l’occurrence.
Pour les personnes je rentre en K30 le chiffre adéquat et je voudrai qu'il s'additionne en P14. Par exemple je rentre le lundi 10 en k30 le mardi 20 il faudrait que la somme soit de 30 en P14 et que k30 soit libre pour chaque entrée.
P14 sert pour le départ d'autres calculs ( par formules) que je gère. Les VBA c'est de l'hébreux pour moi.
J'ai essayé avec vos VBA mais la somme ne se fait pas. Je vous joins ce fichier en l'état.

J'espère avoir été plus clair. Et un grand MERCI pour le temps que vous me donnez. Patrick
 

Fichiers joints

Papy 100

XLDnaute Occasionnel
Re le forum et mapomme
Quand je rentre une donnée en K30, une fenêtre apparaît indiquant :" Echec car K30 et/ouP14 n'est pas numérique"
Je suppose que je dois faire un changement quelque part. Dites moi
Encore merci Patrick
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Papy 100, @eriiiic :),

On prend la valeur saisie en K30, on l'additionne à la valeur de la cellule P14 et on affecte cette somme à la cellule P14.
Je ne sais pas additionner du texte avec un nombre. Le message que tu as vu s’affiche soit parce ce que K30 n'est pas un nombre, soit parce que P14 n'est pas un nombre (comme @eriiiic te l'avait précisé)

Cette somme n'est faite que pour les feuilles dont le nom figure dans le tableau de la feuille "Données" en colonne B et dont la cellule correspondante en colonne C contient K30.
 

Papy 100

XLDnaute Occasionnel
Bonsoir le Forum, mapomme et @eriiiir

Je suis navré de cette erreur de colonne (j'ai confondu la colonne P d'excel et ma colonne P de mon fichier).

Je vous remercie tous les deux de l'aide que vous m'avez donné. C'est sympa. Cordialement Patrick
 

Discussions similaires


Haut Bas