Fonction personnalisée

Résolu
Bonjour,
je suis debutant en vba je veut qlq aides svp
je veut cree une fonction persionalisee qui demande nous a selectionner un plage des celulles puis calculer le nobres de jourspayes par mois
je sais pas comment fair pour selectionner plusier celulles et copier dans un tableau, (tableau d'une seul ligne et 30 colonns)

Configuration: Windows / Chrome 88.0.4324.152

4 réponses

  1. Bonjour,

    C'est pas clair ....
    Une fonction personnalisée ne demande rien, on lui transmet les informations nécessaires en argument .
    Si il faut faire une demande, il faut créer une procédure (Sub).

    Un tuto sur les tableaux VBA : https://silkyroad.developpez.com/vba/tableaux/

    Un excellent cours VBA pour débutant : Cours VBA Gratuit

    0
    1. je veux une fonction qui calcule si il ya 3 absences dans une semain
      voila mon code
      Function TroiAbs(t As Range) As Integer
      Dim s, a, b As Integer
      Dim i As Range
      s = 1
      a = 0
      b = 0
      For Each i In t
      If s <= 7 Then
      'Test d'absence AI
      If i.Value = "AI" Then
      a = a + 1
      '3 Absences par Semaine
      If a >= 3 Then
      TroiAbs = b + 1
      a = 0
      End If
      End If
      Else
      s = 0
      End If
      s = s + 1
      Next
      End Function

      mais ce code ça marche pas je sais pas ou est l'erreur
      le resultat : le type de donnees dune valeur utilise dans la formule est incorrect
      0
      1. Bonjour,

        Essaies comme ça :
        Option Explicit
        Function TroiAbs(rng As Range) As Variant
        ' Retourne le nombre de fois qu'il y a 3 absences ("AI") sur une période de 7 jours
        Dim cel As Range, j As Long, a As Long, s As Integer
            If rng.Rows.Count > 1 Then
                ' Retourner l'erreur #NOMBRE!
                TroiAbs = CVErr(XlCVError.xlErrNum)
            Else
                ' Compter les absences
                For Each cel In rng.Cells
                  j = j + 1
                  If cel.Value = "AI" Then
                    ' ajouter une absence dans la semaine
                    a = a + 1
                  End If
                  If j Mod 7 = 0 Then
                    ' semaine terminée
                    If a >= 3 Then s = s + 1
                    a = 0: j = 0
                  End If
                Next cel
                If s > 0 Then TroiAbs = s Else TroiAbs = ""
            End If
        End Function

        0
        1. oui ça marche très bien bravo merci patrice
          0