appel de fonction

rastafouette

XLDnaute Junior
Bonjour à tous en ce matin pluvieux !

J'ai aujourd'hui un pb d'appel de fonction (ou de Sub).
Je m'essaie à une explication synthétique :
J'ai une grosse UserForm où j'ai plusieurs DTPicker.
Lors du CloseUp d'une DTPicker, j'ai deux fonctions
Code:
Private Sub DTPicker_f_0000_CloseUp()
    Nb_Semaines_0000 = [COLOR="Blue"]Calcul_Nb_Semaines[/COLOR](DTPicker_0000, DTPicker_f_0000)
    Label_Sem_0000.Caption = Round((Val(Label95.Caption) * Nb_Semaines_0000 / Nb_Semaines_Projet_Th))
    Label_Pers_0000.Caption = Round((TextBox_0000 / Label_Sem_0000.Caption / 35), 1)
    MsgBox "eeeeeeeeee"
    [COLOR="blue"]Verif_Date_Fin_Correcte[/COLOR] (DTPicker_f_0000)
End Sub

La première foncitonne très bien :
Code:
[SIZE="2"]Private Function Calcul_Nb_Semaines(Debut As Date, Fin As Date) As Integer
   
    Semaine1 = DatePart("ww", Debut, 2, 2)
    Annee1 = DatePart("yyyy", Debut)
    Semaine2 = DatePart("ww", Fin, 2, 2)
    Annee2 = DatePart("yyyy", Fin)

    If Annee1 = Annee2 Then: Nb_Sem = Semaine2 - Semaine1
    If Annee1 > Annee2 Then
        MsgBox "Problème, annee de debut postérieure !!"
        Exit Function
    End If
    If Annee1 = (Annee2 - 1) Then: Nb_Sem = Semaine2 + (52 - Semaine1)
    If Annee1 = (Annee2 - 2) Then: Nb_Sem = Semaine2 + (52 - Semaine1) + 52
    
    ' Nombre de semaines du projet
    Calcul_Nb_Semaines = Nb_Sem
    MsgBox "nb_sem" & Nb_Sem
    
End Function[/SIZE]
Mais pas la seconde :
Code:
Private Sub Verif_Date_Fin_Correcte(Momo As Date)
    MsgBox "Momo" & Momo
    If Momo.Value > DTPicker2.Value Then
        Momo.CalendarTitleBackColor = RGB(255, 0, 0)
        Momo.Font.Bold = True
        Momo.Font.Strikethrough = True
    Else
        Momo.CalendarTitleBackColor = RGB(255, 255, 255)
        Momo.Font.Bold = False
        Momo.Font.Strikethrough = False
    End If
End Sub

J'ai le mesage d'erreur : "Erreur de compilation, Qualificateur incorrect"

En fait, cette Sub a fonctionné une fois au début et quand je l'ai insérée dans mes autres DTPicker (j'en ai 16 qui bvont utiliser cette fonction), ben ça n'a plus fonctionné. Du coup, j'ai essayé avec Public, Private, Function, j'ai changé "Momo" et ben ça marche plus.

Quelqu'un aurait-il une idée ?

Merci d'avance à tous
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : appel de fonction

Bonjour Rastafouette, le forum,

C'est normal que votre macro plante : vous déclarez Momo As Date et ensuite vous l'utilisez comme un objet.

Je ne peux en dire plus, ne connaissant pas le contrôle DTPicker.

A+
 

smotty

XLDnaute Occasionnel
Re : appel de fonction

Bonjour à tous!!

Première chose qui me vient à l'esprit, le "Call" pour appeler une procedure qui attend une variable.

Private Sub DTPicker_f_0000_CloseUp()
Nb_Semaines_0000 = Calcul_Nb_Semaines(DTPicker_0000, DTPicker_f_0000)
Label_Sem_0000.Caption = Round((Val(Label95.Caption) * Nb_Semaines_0000 / Nb_Semaines_Projet_Th))
Label_Pers_0000.Caption = Round((TextBox_0000 / Label_Sem_0000.Caption / 35), 1)
MsgBox "eeeeeeeeee"
:pcall Verif_Date_Fin_Correcte (DTPicker_f_0000)
End Sub


bien vu job75!!


Pour le reste je vais voir...

A+
 
Dernière édition:

rastafouette

XLDnaute Junior
Re : appel de fonction

Hello

Pour le Call, j'avais déjà essayé aussi et ça n'avait rien changé.

Euhhh job75 :c'est à dire objet ?
Les prop citées en dessous sont applicables au DTPicker. Le truc vraiment bizarre je trouve, c'est que j'ai réussi à la faire fonctionner cette fonction et il m'a bien mis mon calendar en rouge et mes Font en rayé gras. Donc ces trucs là fonctionnent ça c'est sur.
Ca n'a plus marché à partir du moment où j'ai mis cet appel de fonction dans ma dizaine de DTPicker_xx_CloseUp().
Est ce parce que je l'appelle de nombreuses fois à la suite ? Peut-être faudrait il que je "vide" mon Momo à la fin ? Mais comment ?
 

smotty

XLDnaute Occasionnel
Re : appel de fonction

Re, salut smotty,

Le Call n'est pas indispensable, même avec une variable envoyée.

A+

Je suis sur le c..!! après autant d'heures à programmer et apprendre ça seulement maintenant:eek:
Merci pour l'info:p

Sinon, je ne sais pas pourquoi ça a marché une fois mais en mettant:

"byref momo as object" (le byref n'est peut-être pas necessaire) aulieu de "Date" tu auras plus de chance que ça fonctionne. (tout est dit par Job75)

Tu traite une date comme un objet hors c'est l'objet que tu envoies en référence...
 

rastafouette

XLDnaute Junior
Re : appel de fonction

Je viens de voir qqch qui me chiffonne :
ma 1ere fonc s'appelle :
Private Function Calcul_Nb_Semaines(Debut As Date, Fin As Date) As IntegerMa 2ème :
Private Sub Verif_Date_Fin_Correcte(Momo As Date)
Et elles sont appellées :
Calcul_Nb_Semaines(DTPicker_0000, DTPicker_f_0000)
Et
Verif_Date_Fin_Correcte (DTPicker_f_0000)

Ce qui me chiffonne, c'est l'espace qui se met automatiquement, ci-dessus en rouge, entre Correcte et la parenthèse.

Pourquoi un espace se met il ?
 

rastafouette

XLDnaute Junior
Re : appel de fonction

Hello

Alros pour ceux que ça interesserait, j'ai feinté mon appel de fonction par un Iif.
En mettant :

Code:
[SIZE="2"]Private Sub DTPicker_f_0000_CloseUp()
    Nb_Semaines_0000 = Calcul_Nb_Semaines(DTPicker_0000, DTPicker_f_0000)
    Label_Sem_0000.Caption = Round((Val(Label95.Caption) * Nb_Semaines_0000 / Nb_Semaines_Projet_Th))
    Label_Pers_0000.Caption = Round((TextBox_0000 / Label_Sem_0000.Caption / 35), 1)
    [COLOR="Red"]DTPicker_f_0000.Font.Bold = [COLOR="Blue"]IIf[/COLOR](DTPicker_f_0000 > DTPicker2, True, False)
    DTPicker_f_0000.Font.Strikethrough = [COLOR="blue"]IIf[/COLOR](DTPicker_f_0000 > DTPicker2, True, False)
    Label116.BackColor = [COLOR="blue"]IIf[/COLOR](DTPicker_f_0000 > DTPicker2, &HFF&, &H8000000F)[/COLOR]
End Sub[/SIZE]

où, suivant si ma date DTPicker_f_0000 est sup à DTPicker2,
je colorie Label116 en rouge, je raye et mets en gras ma date DTPicker_f_0000, et sinon, je mets pas en gras, je raye pas et je colorie pas en rouge.
 

Discussions similaires

Statistiques des forums

Discussions
312 541
Messages
2 089 412
Membres
104 163
dernier inscrit
Lolo37