Fonction personnalisée

Résolu
Hamou220 Messages postés 3 Statut Membre -  
Hamou220 Messages postés 3 Statut Membre -
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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  2. Hamou220 Messages postés 3 Statut Membre
     
    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
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  4. Hamou220 Messages postés 3 Statut Membre
     
    oui ça marche très bien bravo merci patrice
    0