Fonction personnalisée

Résolu/Fermé
Hamou220 Messages postés 3 Date d'inscription mercredi 10 février 2021 Statut Membre Dernière intervention 14 février 2021 - 10 févr. 2021 à 11:39
Hamou220 Messages postés 3 Date d'inscription mercredi 10 février 2021 Statut Membre Dernière intervention 14 février 2021 - 14 févr. 2021 à 11:27
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

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié le 10 févr. 2021 à 13:26
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
Hamou220 Messages postés 3 Date d'inscription mercredi 10 février 2021 Statut Membre Dernière intervention 14 février 2021
Modifié le 14 févr. 2021 à 09:32
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
14 févr. 2021 à 10:37
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
Hamou220 Messages postés 3 Date d'inscription mercredi 10 février 2021 Statut Membre Dernière intervention 14 février 2021
14 févr. 2021 à 11:27
oui ça marche très bien bravo merci patrice
0