XL 2010 [RESOLU] Rendre Fonction Générique

  • Initiateur de la discussion Initiateur de la discussion cathodique
  • 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 !

cathodique

XLDnaute Barbatruc
Bonjour,

Je ne suis pas très fort en fonction. On m'avait aidé pour la fonction ci-dessous.
Aujourd'hui, mon besoin est de la rendre générique par rapport à un critère que je voudrais rendre variable.
Dans le code, il y a coord(2)="Ad" (pour info coord est un élément d'un collection se trouvant dans la procédure appelante de la fonction). je voudrais pourvoir réutiliser cette fonction pour n'importe quel autre mot ou lettres. En vous remerciant par avance.
VB:
Function Compter_Cd(coord1 As Variant, coord2 As Variant, Optional BonneAnnee As Variant = Null, Optional CritereAnnee As String = "=") As Long
   Dim i As Long, compteur As Long
   compteur = 0

   For i = 1 To UBound(Tbg)
      If Tbg(i, 7) = coord1 And Tbg(i, 5) = coord2 And coord2 = "Cd" Then
         ' Si un critère sur l'année est spécifié, appliquer ce critère
         If Not IsNull(BonneAnnee) Then
            Select Case CritereAnnee
            Case "="
               If year(Tbg(i, 1)) = BonneAnnee Then compteur = compteur + 1
            Case "<"
               If year(Tbg(i, 1)) < BonneAnnee Then compteur = compteur + 1
            Case ">"
               If year(Tbg(i, 1)) > BonneAnnee Then compteur = compteur + 1
            End Select
         Else
            compteur = compteur + 1
         End If
      End If
   Next i
   Compter_Cd = compteur

End Function
 
Solution
Hello
pas bien compris, mais si tu veux pouvoir changer la valeur de Coord2 utilisée dans l'instruction
Code:
If Tbg(i, 7) = coord1 And Tbg(i, 5) = coord2 And coord2 = "Ad" Then

tu peux changer comme ca
VB:
Function Compter_Cd(coord1 As Variant, coord2 As Variant, ValCoord2 as string,Optional BonneAnnee As Variant = Null, Optional CritereAnnee As String = "=") As Long
   Dim i As Long, compteur As Long
   compteur = 0

   For i = 1 To UBound(Tbg)
      If Tbg(i, 7) = coord1 And Tbg(i, 5) = coord2 And coord2 = ValCoord2 Then
         ' Si un critère sur l'année est spécifié, appliquer ce critère
         If Not IsNull(BonneAnnee) Then
            Select Case CritereAnnee
            Case "="
               If year(Tbg(i, 1)) = BonneAnnee...
Hello
pas bien compris, mais si tu veux pouvoir changer la valeur de Coord2 utilisée dans l'instruction
Code:
If Tbg(i, 7) = coord1 And Tbg(i, 5) = coord2 And coord2 = "Ad" Then

tu peux changer comme ca
VB:
Function Compter_Cd(coord1 As Variant, coord2 As Variant, ValCoord2 as string,Optional BonneAnnee As Variant = Null, Optional CritereAnnee As String = "=") As Long
   Dim i As Long, compteur As Long
   compteur = 0

   For i = 1 To UBound(Tbg)
      If Tbg(i, 7) = coord1 And Tbg(i, 5) = coord2 And coord2 = ValCoord2 Then
         ' Si un critère sur l'année est spécifié, appliquer ce critère
         If Not IsNull(BonneAnnee) Then
            Select Case CritereAnnee
            Case "="
               If year(Tbg(i, 1)) = BonneAnnee Then compteur = compteur + 1
            Case "<"
               If year(Tbg(i, 1)) < BonneAnnee Then compteur = compteur + 1
            Case ">"
               If year(Tbg(i, 1)) > BonneAnnee Then compteur = compteur + 1
            End Select
         Else
            compteur = compteur + 1
         End If
      End If
   Next i
   Compter_Cd = compteur

End Function
 
Hello
pas bien compris, mais si tu veux pouvoir changer la valeur de Coord2 utilisée dans l'instruction
Code:
If Tbg(i, 7) = coord1 And Tbg(i, 5) = coord2 And coord2 = "Ad" Then

tu peux changer comme ca
VB:
Function Compter_Cd(coord1 As Variant, coord2 As Variant, ValCoord2 as string,Optional BonneAnnee As Variant = Null, Optional CritereAnnee As String = "=") As Long
   Dim i As Long, compteur As Long
   compteur = 0

   For i = 1 To UBound(Tbg)
      If Tbg(i, 7) = coord1 And Tbg(i, 5) = coord2 And coord2 = ValCoord2 Then
         ' Si un critère sur l'année est spécifié, appliquer ce critère
         If Not IsNull(BonneAnnee) Then
            Select Case CritereAnnee
            Case "="
               If year(Tbg(i, 1)) = BonneAnnee Then compteur = compteur + 1
            Case "<"
               If year(Tbg(i, 1)) < BonneAnnee Then compteur = compteur + 1
            Case ">"
               If year(Tbg(i, 1)) > BonneAnnee Then compteur = compteur + 1
            End Select
         Else
            compteur = compteur + 1
         End If
      End If
   Next i
   Compter_Cd = compteur

End Function
Bonjour,

@vgendron : Tu me retires une grosse épine. Il n'y avait que ça à faire et je me suis noyé dans un dé à coudre.
Je te remercie exactement ce que je voulais. Je me fais trop vieux.

Merci beaucoup.
 
Dernière édition:
- 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
Microsoft 365 Export données
Réponses
4
Affichages
505
Réponses
12
Affichages
327
Réponses
7
Affichages
724
Retour