appel de fonction sous vba

Mosar3

XLDnaute Nouveau
Bonjour,
Je crée ma fonction ( sous vba excel 2003), ci dessous :
Code:
Private Sub récapitulatif(Nom As Variant, Colonne As Variant)
'Kloug = MsgBox(Item, 1, "Titre", "", 1)
 [COLOR="Red"]Nom.Caption = Worksheets(Fac).Cells(Ligne - 3, Colonne)[/COLOR]
    If Worksheets(Fac).Cells(Ligne - 3, Colonne) = "" Then
    Nom.Caption = 0
    End If
End Sub

Puis je l'appelle dans le code suivant :
Code:
Private Sub NomDesClients_Change()
     Fac = Worksheets(OngletSemaine).Cells(1, 3)
 Ligne = NomNuméroLigne.Text
 Call récapitulatif(ValeurNbPlats, 4)

  End Sub
Et lorsque j'exécute, il me met l'indice n'appartient pas à la séléction en surlignant le code en rouge.
Me ce qui est étrange, c'est que le code suivant suivant marche :
Code:
Private Sub NomDesClients_Change()
 ValeurNbPlats.Caption = Worksheets(Fac).Cells(Ligne - 3, 4)
    If Worksheets(Fac).Cells(Ligne - 3, 4) = "" Then
    ValeurNbPlats.Caption = 0
    End If
End Sub

Comment se fait-ce??
Merci beaucoup et à bientôt!
 

job75

XLDnaute Barbatruc
Re : appel de fonction sous vba

Bonsoir Mosar,

Votre 1ère macro n'est pas une procédure Function comme vous dites, mais ce n'est pas là le problème.

Par contre elle ne peut pas savoir ce que sont les variables Fac et Ligne. Pour qu'elle le sache, il faut déclarer ces variables Public.

Enfin, pourquoi déclarer vos macros Private ?

Edit : votre 3ème macro marche parce qu'elle n'appelle pas la 1ère.

A+
 
Dernière édition:

Mosar3

XLDnaute Nouveau
Re : appel de fonction sous vba

Bonjour (ou plutôt bonsoir) Job, et le forum.
Merci de ta réponse. Je suis débutant en vba, donc indulgence...Je dis fonction, parce que je l'appelle après et je peux le faire plusieurs fois, mais je ne sait pas le terme exact.
Que dit tu qu'il faut que j'appelle public? Tu veux dire remplacer private sub par public sub?
Si c'est le cas ça ne change rien. Ou bien remplacer variant par public?? Si c'est le cas ça ne marche pas...
Ma troisième macro fait rigoureusement ma même chose que la première mais avec les données de la seconde... Alors pourquoi est-ce que ça marche???

Et puis une autre question svp, comment faire pour que dans d'abord un classeur excel, lorsque je fait ctrl+w, ça déclenche mon userform, et puis dans tout mes classeur excel si c'est possible..

Merci de vos réponses.
A bientôt!
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 971
Membres
101 852
dernier inscrit
dthi16088