Formule personnalisée

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 !
 

Catrice

XLDnaute Barbatruc
Re : Formule personnalisée

Bonjour,

sans cherhcer à comprendre ce que fait la fonction, un bref coup d'oeil permet de dire qu'il y a deja un pb ici :

Sheets("Session_Details").Select

On ne peut pas faire de Select dans une Fonction.
 

FoLKeN

XLDnaute Junior
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 :)
 

FoLKeN

XLDnaute Junior
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

  • ExempleFoLKeN-RecherchePresence.xls
    24 KB · Affichages: 57
  • ExempleFoLKeN-RecherchePresence.xls
    24 KB · Affichages: 56
  • ExempleFoLKeN-RecherchePresence.xls
    24 KB · Affichages: 63
Dernière édition:

chris

XLDnaute Barbatruc
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

  • exemplefolken-recherchepresence.xls
    34.5 KB · Affichages: 57
  • exemplefolken-recherchepresence.xls
    34.5 KB · Affichages: 59
  • exemplefolken-recherchepresence.xls
    34.5 KB · Affichages: 57
Dernière édition:

ninbihan

XLDnaute Impliqué
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.:rolleyes:

@+
 

Pièces jointes

  • ExempleFoLKeN-RecherchePresence (version 2).xls
    46.5 KB · Affichages: 51

FoLKeN

XLDnaute Junior
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
 

Discussions similaires

Statistiques des forums

Discussions
312 240
Messages
2 086 518
Membres
103 241
dernier inscrit
Peyo33