Créer un tableau de facturation automatisé à partir d'un tableau d'inscrits

Y compris Power BI, Power Query et toute autre question en lien avec Excel
P
PtiteOph
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 8 décembre 2017
Version d'Excel : 2016

Message par PtiteOph » 8 décembre 2017, 16:12

Bonjour à tous !

Je travaille dans un accueil de loisirs pour ados. Je cherche à concevoir un tableau automatisant la facturation des jeunes à partir de leurs inscriptions...j'ai commencé à réfléchir à un tableau en ce sens, mais certaines de mes formules ne sont pas suffisantes et je ne parviens pas à débloquer mon problème...

L'objectif serait que lorsque je remplis les inscriptions des jeunes dans l'onglet "présences", les noms des jeunes apparaissent automatiquement dans l'onglet "facturation" (mais n'apparaissent qu'une fois, pas en doublon) et qu'en fonction des activités sur lesquelles je les ai noté dans le 1er onglet, leur tarif s'affiche automatiquement... Je m'étais dit que j'indiquerai manuellement le QF dans l'onglet facturation, cela m'évitait de créer une autre base de données.

Donc les formules que je n'arrive pas à créer :
  • formule à écrire en A7 de facturation (et à copier ensuite dans toute la colonne) = Si tu vois ce qu'il d'y a d'écrit en A7 dans la plage B6 à G29, alors tu écris le nom et tu supprimes les doublons de ce nom dans la colonne A
  • formule à écrire en C7 = Si tu vois le prénom écrit en A7 dans la plage B6-B29, alors tu appliques la formule qui est déjà écrite dans la cellule C7
Je réalise que c'est drôle d'écrire en français ce qu'on voudrait dire à excel... mais j'espère que cela vous aura aidé à bien comprendre mon problème !!!

Merci d'avance,
Réservation -facturation.xlsx
(22.61 Kio) Téléchargé 48 fois
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'986
Appréciations reçues : 359
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 8 décembre 2017, 17:29

Bonjour,

solution avec une macro qui se déclenche à l'ajout d'une présence.

il existe également une solution via formule, mais je laisse ce plaisir aux spécialistes des formules matricielles

j'ai également adapté quelques formules dans ton tableau facturation
Réservation -facturation.xlsm
(30.21 Kio) Téléchargé 58 fois
P
PtiteOph
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 8 décembre 2017
Version d'Excel : 2016

Message par PtiteOph » 9 décembre 2017, 13:31

Alors déjà : Merci pour le "NB.SI.ENS", c'était la double condition qui me manquait ! J'ai été étonnée toutefois de la manière dont tu l'as insérée : en fin de formule et avec un * (pas un ;)

Par contre pour la macro... c'est une chose que je ne maitrise pas DU TOUT !!! Tu saurais me dire comment faire ?... :bof:
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'986
Appréciations reçues : 359
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 9 décembre 2017, 14:09

PtiteOph a écrit :
9 décembre 2017, 13:31
Alors déjà : Merci pour le "NB.SI.ENS", c'était la double condition qui me manquait ! J'ai été étonnée toutefois de la manière dont tu l'as insérée : en fin de formule et avec un * (pas un ;)
je multiplie le tarif par le nombre de présences de la personne à l'activité (nombre qui peut être 0 ou 1) suivant la logique de ta feuille inscription
Par contre pour la macro... c'est une chose que je ne maitrise pas DU TOUT !!! Tu saurais me dire comment faire ?... :bof:
si c'est , Comment la faire fonctionner ? introduire une présence dans une activité payante (si nouveau nom, le nom sera ajouté)
si c'est, comment faire pour la mettre dans un autre classeur ?

selectionner le code ci-dessous
le copier
aller dans le classeur excel
choisir l'onglet correspondant à présences
faire clic droit sur le nom de l'onglet (cela ouvre une nouvelle fenêtre, Visual basic for application)
coller le code
fermer la fenêtre VBA
la macro est prête à l'emploi

la macro est adaptée à la structure du classeur et des feuilles que tu nous as mis comme référence. Si la structure est différente, il faudra adapter la macro.
Private Sub Worksheet_Change(ByVal Target As Range)
'macro qui se déclenche si on a fait une modification dans la feuille
'on vérifie si on a cliqué dans la zone d'introduction des présences
    If Not Intersect(Target, Range("B6:G29")) Is Nothing Then
        Set wsf = Sheets("facturation")
        For Each col In Array(2, 5, 6, 7) 'on prend une à une chaque activité payante
            dl = Cells(4, col).End(xlDown).Row 'on détermine le nombre de personnes présentes à cette activité
            For lig = 6 To dl ' on prend chaque nom présent
            'on vérifie s'il est déja présent sur la feuille facturation
                Set re = wsf.Range("A7:A20").Find(Cells(lig, col), lookat:=xlWhole)
                If re Is Nothing Then 'si non
                    dlf = wsf.Cells(Rows.Count, 1).End(xlUp).Row + 1 'première ligne libre sur facturation
                    wsf.Cells(dlf, 1) = Cells(lig, col) 'on ajoute le nom
                End If
            Next lig 'nom suivant
        Next col 'activité suivante
    End If
End Sub
Modifié en dernier par h2so4 le 9 décembre 2017, 20:10, modifié 1 fois.
P
PtiteOph
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 8 décembre 2017
Version d'Excel : 2016

Message par PtiteOph » 9 décembre 2017, 18:53

Whaou. ::D

J'avais déjà vu des lignes de code, mais jamais pratiqué moi même.

Je vais avoir besoin de me pencher à tête reposée sur ceci, dans tous les cas, merci du temps que tu me consacres !! Si jamais je n'ai pas compris / réussi quelque chose, je reviendrai t'embêter !!
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message