XL 2019 Fonction personnelle

Susuwatari

XLDnaute Nouveau
Bonjour,

Après de nombreuses heures de recherches et de multiples tentatives je me tourne vers vous pour résoudre ce problème.

Dans le premier onglet "Compte", colonne "€ - RAD", frais "Véhicule", je distingue 2 types de véhicules : La mégane et le jumper.
Cette information provient du dernier onglet "Planning", avant dernière colonne "Véhicule".
Dans ce planning nous avons une liste de salariés et chacun d'entre eux utilise soit la mégane soit le jumper (ou aucun des 2).
Pour savoir a quelle véhicule est associé un salarié, il faut se rendre dans l'onglet "Data_Salariés".

Mon objectif est donc d'obtenir, dans mon onglet "Compte", les valeurs de mon onglet "Planning" triées en fonction des données de mon onglet "Data_Salariés".

En ajoutant, dans l'onglet "Planning", une colonne indiquant les véhicules associés j'arrive a obtenir le résultat escompté grâce à la formule suivante : cf "K17" onglet "Compte"
=SOMMEPROD((Tableau_Planning[Colonne1]=[@Frais]))*Tableau_Planning[Véhicule])

Cependant j'aimerais obtenir ce résultat sans avoir à ajouter cette dernière colonne. J'imagine que la solution est de passer par une fonction personnelle. Mes connaissance étant assez limité sur ce sujet, je vous demande de l'aide.

J'espère avoir été assez clair dans mes explications.

En attente de votre retour,

Susuwatari

[Modération: pièce jointe supprimée, contrevenant au RGPD]
 
Dernière modification par un modérateur:

Susuwatari

XLDnaute Nouveau
Bonjour,

J'ai joint le fichier lors de la création de ce message cependant il a été enlevé car il "contient des données contrevenant au RGPD".

Je le renvoi via ce message !

[Modération: pièce jointe supprimée, contrevenant au RGPD]
 
Dernière modification par un modérateur:

Etoto

XLDnaute Barbatruc
Bonjour,

J'ai joint le fichier lors de la création de ce message cependant il a été enlevé car il "contient des données contrevenant au RGPD".

Je le renvoi via ce message !
Bonjour,

Nous pouvons vous aider seulement si le fichier est en règle vu que le RGPD fait partie du point 1.1 de la Charte XLD.

1.1 - Conformité RGPD
Tout message ou fichier déposé sur ce site ne doit pas comporter de données à caractère personnel contrevenant au RGPD (Réglement Général sur la Protection des Données).
Il convient pour cela d’anonymiser toutes les données permettant d’identifier directement ou indirectement une personne physique ou morale.
XLD ne saurait être tenu responsable au cas où un visiteur du site posterait des données non conformes à la législation en vigueur.
Si vous détectez une non conformité, merci d'alerter le webmaster de ce site en utilisant, dans le post concerné, le bouton "signaler" dédié ou en envoyant un courriel à l'adresse webmaster@excel-downloads.com, nous supprimerons les données dans les plus brefs délais.
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour susuwatari, fanch55, etoto, le forum

@Susuwatari , vous ne devez en aucun cas poster de fichier contenant des données permettant d'identifier des personnes physiques ou morales, cela contrevient au RGPD, Réglement général européen sur la protection des données, transcrit en droit français. Vous avez déjà été prévenu et vous recommencez pourtant. Vous devez impérativement anonymiser vos données avant, faites un fichier exemple sur votre problème précis sans aucune donnée contraire à la loi.
Si les données contenues peuvent laisser penser qu'elles sont réelles mais sont en fait fictives, vous devez impérativement le préciser pour lever ce doute. Merci de respecter ce principe à l'avenir, il n'y aura pas d'autre avertissement.

Bien cordialement, @+
 

fanch55

XLDnaute Barbatruc
Bonjour @Susuwatari ,

Je ne suis pas assez pointu dans les formules matricielles ou à base de sommeprod ,Somme.si avec rechercheV.

Par contre la fonction personnelle ci dessous devrait convenir :
1628944058804.png

VB:
Function Get_Table(Table As Object) As String
    With Table
        Get_Table = "[" & .Worksheet.Name & "$" & .ListObject.Range.Address(False, False) & "]"
    End With
End Function

Function SomVehic(Vehic As String)
    Dim Ado_Conn 'As ADODB.Connection
    Dim Ado_Rst 'As ADODB.Recordset
    Sql_Driver = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
                    "DBQ=" & ThisWorkbook.FullName & ";READONLY=FALSE"
 
    Set Ado_Conn = CreateObject("ADODB.Connection")
        Ado_Conn.Open Sql_Driver
        Set Ado_Rst = CreateObject("ADODB.Recordset")
            Ado_Rst.ActiveConnection = Ado_Conn
                Ado_Rst.Open _
                    "Select Sum(Véhicule) as SomVehic from " & Get_Table([Tableau_Planning]) & _
                    " where Salariés in " & _
                    " ( select Salariés from " & Get_Table([Tableau_DataSalariés]) & _
                    "     where véhicule = '" & Vehic & "')"
                    Select Case True
                        Case Err <> 0:      SomVehic = xlErrRef
                        Case Ado_Rst.EOF:   SomVehic = xlErrNA
                        Case Else:          SomVehic = Ado_Rst!SomVehic
                    End Select
                Ado_Rst.Close
        Set Ado_Rst = Nothing
        Ado_Conn.Close
    Set Ado_Conn = Nothing
End Function
 

Discussions similaires

Réponses
2
Affichages
198

Statistiques des forums

Discussions
314 719
Messages
2 112 179
Membres
111 452
dernier inscrit
christine64