Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.

 
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 :

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
 

Susuwatari

XLDnaute Nouveau
Wayki,
Merci pour ta solution, c'est exactement ce que je cherchais a faire !

Franch55,
Je te remercie pour la fonction personnelle que tu m'a envoyé. Elle répond à ma demande et me servira surement pour de futurs projets !

Cordialement,

Susuwatari
 

Discussions similaires

Réponses
2
Affichages
198
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…