Formule personnalisée

  • Initiateur de la discussion Initiateur de la discussion FoLKeN
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

FoLKeN

XLDnaute Junior
Bonjour le forum,

Tout d'abord merci aux admins/modo et membres actifs de faire vivre une telle communauté 🙂 Je débute en excel et particulièrement en VBA, et j'en apprends bcp ici.

Je voudrais créer une formule personalisée. A ce que j'ai compris, pour une fonction de formule, il n'est pas possible de modifier quoique ce soit sur une feuille à part retourner une valeur. Cependant je voudrais juste pouvoir lancer une formule personalisée qui fais des calculs selon des valeurs de cellules présentes dans la feuille ET dans une autre feuille. Je n'arrive pas à la faire fonctionner donc.

Code:
' This function is used in the hidden Matrix to find if the trainee X has been planned for the module Y
Function CheckTraineeInSessions(TraineeName As String, ModuleName As String, VSCheck As String) As String

' Variables declarations
Dim lineModule As Integer ' for the loop to check the module names
Dim colModule As Integer ' changes depending on the sheet
Dim colTrainee As Integer ' changes depending on the sheet

' check the session lenght first, to see if it's a virtual session or not
If VSCheck = "x" Then ' Virtual Session

    CheckTraineeInSessions = "Not Implemented Yet"
    Exit Function

ElseIf VSCheck = "" Then ' Normal Session

    [I]Sheets ("Session_Details").Select 'ICI J'aimerais selectionner une nouvelle feuille et travailler sur ses cellules[/I]
    lineModule = 5
    colModule = 2

    Dim posTraineeList As Integer ' Trainee list col position in the Sessions Details sheet
    posTraineeList = colModule + 15
    Do While Cells(lineModule, colModule).Value <> ""

        If Cells(lineModule, colModule).Value = ModuleName Then

            ' Loop to check if the trainee name belongs to the session trainee list
            For i = 0 To i = 14
            If Cells(lineModule, posTraineeList + i).Value = TraineeName Then
                CheckTraineeInSessions = "X"
                Exit Function
            End If
            Next

        End If
        lineModule = lineModule + 1
    Loop


Else ' Not virtual nor normal = error
    CheckTraineeInSessions = "Error"
    Exit Function
End If

' No session planned, return ""
CheckTraineeInSessions = ""

End Function

Pas la peine d'essayer de comprendre le code, mais simplement de m'expliquer les erreurs de syntaxes ou autres pour pouvoir effectuer mon action SVP.

Merci d'avance !
 
Re : Formule personnalisée

J'avais bien compris que cette fonction ne marchait pas ici (d'où mes commentaires en italique). J'aimerais donc savoir comment pouvoir travailler avec des valeurs provenant d'une autre feuille. En espérant que vous ayiez une réponse pour moi 🙂
 
Re : Formule personnalisée

J'ai essayé de faire un exemple très simplifié par rapport à la source d'origine. J'ai tout expliqué dedans (enfin je crois). Si vous avez besoin d'autres informations, faites le moi savoir.

Edit:
Pour ceux qui lisent le fichier:
Mon souci principal réside dans le fait de faire un parcours de chaque "Module X" apparaissant dans le tab1, je n'arrivais pas à le faire avec des formules de bases d'excel. Mais je pense que c'est quand meme jouable sans customiser une fonction
 

Pièces jointes

Dernière édition:
Re : Formule personnalisée

Bonjour
Dans la cellule C26 :
=SI(SOMMEPROD((Tab1!$B$3:$B$9=Résultat!C$2)*(Tab1!$D$3:$F$9=Résultat!$B4)+SOMMEPROD((Tab2!$B$3:$B$4=Résultat!C$2)*(Tab2!$C$3:$E$4=Résultat!$B4)));"X";"")
Ajuster les matrices Tab1 et Tab2 en fonction du nombre de lignes et de colonnes ou, mieux, créer une formule nommée pour avoir une plage dynamique

PS : pièce jointe
 

Pièces jointes

Dernière édition:
Re : Formule personnalisée

Bonjour le forum,

Voici ma version avec une fonction personnalisée. C'est un peu "capilotracté" mais cela à l'air de répondre à la demande. Le principe étant d'utiliser la fonction autant de fois qu'il y'a de tableaux de recherche et de concatener le résultat.🙄

@+
 

Pièces jointes

Re : Formule personnalisée

Hey guys!

Merci beaucoup pour vos réponses rapides. J'ai implémenté la deuxième version car elle correspond mieux à mes besoins (et c'est ce que j'essayais de faire initialement). De plus, la 1ere version spécifie de ne pas avoir de données en bas ou à droite du tableau ce qui n'est pas le cas. Et je ne la comprends pas car je n'arrive pas à saisir très bien le fonctionnement de SOMMEPROD qui à chaque fois semble magique.

Quoiqu'il en soit, je vous remercie tous !
A bientôt
FoLKeN
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
  • Question Question
Microsoft 365 Excel VBA
Réponses
5
Affichages
339
Réponses
0
Affichages
436
Retour