XL 2019 Action en fonction du choix sur liste déroulante [Résolu]

Maniolius

XLDnaute Nouveau
Bonjour tout le monde,
Je me permet de poster un message sur ce forum car je n'arrive pas à trouver une solution dans le paramétrage de mon tableau de compta.
Je suppose qu'il y à la solution dans ce forum, mais il est tellement vaste que je n'arrive pas à trouver.
Voici ma question:
Dans mon onglet "Compta" j'ai 2 colonne avec chacune une liste déroulante.
La première est "Objet" qui doit avoir une "influence" sur un tableau de budget
La seconde est "activité" qui doit diriger "l’influence" sus citée vers le bon onglet.

Concrètement ce que je veux:
Quand je remplis ma ligne de comptabilité
Quand j'ai sélectionné mon choix dans "activité", cela "sélectionne" l'onglet correspondant
Quand j'ai sélectionné mon choix dans "objet" le montant de ma ligne compta soit déduite sur la ligne compta correspondante du tableau budget de l'onglet précédemment sélectionner.
Je ne sais pas si c'est bien expliqué
En tout cas je vous mets mon fichier excel pour vous aider.

J'aimerais avant tout savoir comment programmer cela pour apprendre à le faire.

Merci d'avance pour votre aide

Cédric
 

Pièces jointes

  • Budget - Compta 2020.xlsx
    62.7 KB · Affichages: 18

fanfan38

XLDnaute Barbatruc
Bonjour
Si j'ai bien compris quand tu as choisis l'objet on va chercher la ligne correspondante sur la feuille budget
quand tu as choisis l'activité tu choisis la feuille correspondante (attention! les espaces n'était pas les mêmes (Janvier - Février et Janvier-Février)...
Le montant saisie sur la feuille compta doit être déduit sur quel budget APS, AES, CLAS, etc...
exemple: si je choisis Assurance, Été d'un montant de 125.36€
je mets sur le feuille "Été" en D10 125.36€
Y a t'il quelque chose à faire sur la feuille budget?
il y a une liaison avec un autre fichier?
A+ François
 

Pièces jointes

  • Budget - Compta 2020.xlsm
    72.4 KB · Affichages: 29

Maniolius

XLDnaute Nouveau
Bonjour, je vous remercie de votre réponse rapide.
Ce que je veux en fait (je pense avoir mal expliqué), c'est simplement l'onglet compta à remplir
Et quand j'ai remplir une ligne compte en sélectionnant l'objet et l'activité, cela reporte automatiquement le montant dans le bon onglet et sur la bonne ligne
Sachant qu'au préalable, j'aurai rempli manuellement chaque colonne "budget période" de chaque onglet"

exemple:
1) je rempli une 1ere ligne compta: objet= transport / montant =400€ / activité= mars-avril
2) je veux que le dépense de 400€ soit automatiquement reportée dans l'onglet "mars-avril" à la ligne "transport" et dans la colonne "dépensé"
3) je rempli une seconde ligne compta: objet=petite fourniture / montant=150 € / activité = printemps
4) je veux que le dépense de 150€ soit automatiquement reportée dans l'onglet "printemps" à la ligne "petite fourniture" et dans la colonne "dépensé"
5) je rempli une 3eme ligne compta: objet = transport / montant= 200€ / activité=mars-avril
6) je veux que la dépense de 200€ soit ajoutée automatiquement à la dépense 1) dans le bon onglet et la bonne ligne


ps: il n'y a rien à faire sur l'onglet budget

Merci d'avance
 

Maniolius

XLDnaute Nouveau
En parti oui. Et je t'en remercie
J'ai pas tout tester, mais j'aimerai aussi que par exemple, si j'ai 2 dépenses différentes pour le même objet et pour la même période, c'est 2 dépense s'additionnent

Peux-tu m'expliquer comment tu as fait pour arriver à créer ses liaisons?

Merci
Cédric
 

fanfan38

XLDnaute Barbatruc
Tu as une liaison avec un fichier ALSH 2019xlsx....
VB:
'cette macro se lance automatiquement quand il y a une modif sur la feuille

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim c As Range
  If Target.Column = 7 And Len(Target.Value) > 0 Then 'si la modif est dans la colonne 7 (G) et que la cellule n'est pas vide
    If Len(Range("C" & Target.Row).Value) = 0 Then 'si la colonne C est vide=message
      MsgBox ("Veuillez saisir un Objet")
      Target.Value = ""
      Exit Sub 'on sort de la macro
    End If
    If Len(Range("E" & Target.Row).Value) = 0 Then 'si il n'y a pas de montant
      MsgBox ("Veuillez saisir un Montant")
      Target.Value = ""
      Exit Sub                            'on sort de la macro
    End If
    Sheets(Target.Value).Activate 'on active la feuille correspondante à la saisie (colonne G)

'on recherche dans la colonne B l'objet
    Set c = ActiveSheet.Columns(2).Find(Range("C" & Target.Row).Value, LookAt:=xlWhole)
'on met dans la cellule de la colonne D le montant '(c.row est la ligne trouvée)
    ActiveSheet.Range("D" & c.Row).Value = Sheets("COMPTA").Range("E" & Target.Row).Value
  End If
End Sub

Pour additionner plusieurs dépense dans cette cellule tu remplaces la dernière ligne par:
ActiveSheet.Range("D" & c.Row).Value = ActiveSheet.Range("D" & c.Row).Value+Sheets("COMPTA").Range("E" & Target.Row).Value
A+ François
 

Danixdb

XLDnaute Nouveau
Bonjour Maniolius, fanfan38, Le Forum,

Et une solution par formule, est-ce que cela conviendrait aussi ou faut-il une macro ?
Voici ma proposition
Cordialement
DanixDB
 

Pièces jointes

  • Budget - Compta 2020.xlsm
    65.2 KB · Affichages: 16

Danixdb

XLDnaute Nouveau
Bonjour,
Pour moi, une formule est plus simple à comprendre qu'une macro et ce sans être expert (voir aide en ligne pour les formules). Mais là, je vous laisse juge car les deux solutions fonctionnent.
La formule fait la somme des montants en prenant comme les critères suivants :
1 - la désignation de produit
2 - l'activité
sur base du tableau structuré tabCompta (ce tableau va s'auto-étendre dès que vous ferez une nouvelle saisie, et permet une lecture plus facile des formules de calcul).

Comme vous avez pu le voir, j'ai ajouté un en-tête à chaque feuille pour y indiquer l'activité (période) et je m'en sers dans la formule (cf $A$1)
=SOMME.SI.ENS(tabCompta[Montant];tabCompta[Objet];$B3;tabCompta[Activité];$A$1)
Cordialement
DanixDB
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette