Pb sur Fonction qui ne s'initialise pas [Résolu]

Signaler
-
 Utilisateur anonyme -
Bonjour, Apres avoir passe qq heures a essayer de comprendre, je me tourne vers vous. Le pb: Dans une Sub, j'ai un objet qui fait un appel a une fonction (decalageligne_code(vartableau)). Celle ci donne un decalage en nb de lignes selon la valeur d'une variable. Or, la fonction ne s'execute pas; le message d'erreur renvoye lors de l'execution du code est "type mismatch".
ci apres le code de la fonction:
"Public Function decalageligne_code(vartableau)
If vartableau = 2 Then
decalageligne_code = 70
Else
decalageligne_code = 9
End If

End Function"
Et ci apres, la sequence de la Sub qui passe l'appel de la fonction, et qui se solde par un echec


"If (vartableau 1 Or vartableau 2) Then
Sheets("coding").Activate
Set objetreference_code = Cells(Pligne_code + decalageligne_code(vartableau), CODE1_CODING)"

Je vous remercie par avance de votre aide,
Cordialement,

11 réponses

Ok ca y est trouve...
en fait la fonction decalageligne_code est aussi declaree en tant que variable, d'ou conflit...
Apres correction, ca marche

Merci de votre aide
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
1) ta fonction, telle qu'écrite, n'est donc appelée que si vartableau = 1 ou 2
et le fait bien !
2) mais tu devrais quand même être plus rigoureux (tout typer) ! ===>>
Public Function decalageligne_code(vartableau As Byte) As Byte
  If vartableau = 2 Then
    decalageligne_code = 70
  Else
    decalageligne_code = 9
  End If
End Function

preuve qu'elle fonctionne comme attendu ===>>
Public Function decalageligne_code(vartableau As Byte) As Byte
  If vartableau = 2 Then
    decalageligne_code = 70
  Else
    decalageligne_code = 9
  End If
End Function

Ton problème n'est donc pas dans ta fonction, mais ailleurs... Et je ne peux te dire où puisque tu ne nous dit pas comment ont été typées et initialisées les variables Pligne_code et CODE1_CODING !
Un conseil répété à tous : prendre la bonne habitude de travailler en Option Explicit.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Et comment a été déclarée et typée objetreference_code également !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Merci de votre reponse, effectivement je n'ai pas donne tous les details du code. En voici un peu plus:
Tous les noms en majuscule correspondent a des constantes representant des numeros de colonne. Et Pligne_code est initialisee a 1.



"If (objet_minor.Columns(CODE1) 4 Or objet_minor.Columns(CODE1) 5 Or objet_minor.Columns(CODE1) = 6) Then
If (vartableau 1 Or vartableau 2) Then
Sheets("coding").Activate
Set objetreference_code = Cells(Pligne_code + decalageligne_code(vartableau), CODE1_CODING)
Dim Dligne_code
Dligne_code = objetreference_code.End(xlDown).Row 'derniere ligne occupee par le tableau "code"
Dim nblignes_code
nblignes_code = Dligne_code - (Pligne_code + decalageligne_code(vartableau))
Set objet_code = Range(Cells(Pligne_code + decalageligne_code(vartableau), Pcol_code), Cells(Pligne_code + decalageligne_code(vartableau) + nblignes_code, BRSDOM6_CODING))"

Voila, j'espere que vous pourrez mettre sur une piste

Merci de votre aide,
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Ce'la ne nous avance pas !
Non seulement tu n'as pas répondu aux questions déjà posées, mais ce que tu montres maintenant en appelle d'autres (les mêmes) en ce qui concerne objet_minor et CODE1 !!!!


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Libère donc cette discussion (clique sur le tag "Réponse acceptée") là où tu as eu ton "éclairage"
Et rappelle-toi (et applique) :
Un conseil répété à tous : prendre la bonne habitude de travailler en Option Explicit.

Tu aurais "vu" tout seul

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Bonsoir,
Un conseil répété à tous : prendre la bonne habitude de travailler en Option Explicit et Option Strict.

@ucfoutu : Bonsoir et bon retour de vacances
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonsoir, banana32.
Mes vacances ? ===>> Excellentes car mon petit-fils m'a battu à la pêche ..
Et les tiennes ? Pas prises ? === Tu devrais ..
Tu peux me dire ce que serait Option Strict sous :
Forum > Visual Basic 6 > Langages dérivés > VBA

?
Car moi, je l'ignore encore


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Comment ça pas d'option strict sur vb6 ? Mais comment pouviez-vous développer sans cela ? De toute façon vb6 est obsolète depuis belle lurette et bon débarras.

Je suis en vacances le 23 au soir et vais faire un tour en alsace dans la semaine qui suivra
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Hé hé !
Et comment développer sous VBA, donc ? Et tu vois bien que Microsoft n'a rien changé à cela et que cela n'empêche pas de développer, hein. Je me demande d'ailleurs bien comment Microsoft pourrait envisager de faire tourner VBA avec un Visual "Basic.Net" dans l'état actuel des choses sans engager des frais énormes et sans perdre toute sa clientèle.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Je l'ignorais totalement. C'est quand même incroyable!
Bref, si un admin se sent d'humeur à faire un peu de ménage dans mes posts ridicules, je lui en serai très reconnaissant