Erreur 91 en vb

Fermé
Ced - 11 mai 2010 à 17:31
 ced - 12 mai 2010 à 11:32
bonjour a tous,
je n'arrive pas a résoudre mon erreur et j'esppere que vous pourrez m'aider
j'ai mis en evidence la ligne surlignée en jaune pas le debogage.
il me met erreur 91 : variable objet ou variable de block with non definie.
voila le code :

Do While i <= Subscript
d = Ref.Cells(i, DATE_EVENEMENT)
E = UCase(Ref.Cells(i, EVENEMENT))

If E = "SORTIE" Then
'Le collaborateur a quitté l'entreprise
IgnorerTaux = True
End If

If EstDansPériode(d) = APRES Then
If i = IDeb Then
'le collaborateur est entré après la fin de période
Ignorer = True
End If

Exit Do
End If

If EstDansPériode(d) = AVANT Then
If E = "SORTIE" Then
'le collaborateur est sorti avant le début de période
Ignorer = True
Exit Do
End If

'Le collaborateur était déjà présent avant le début de période
AncienSalaire = Ref.Cells(i, SALAIRE)
DernierSalaire = Ref.Cells(i, SALAIRE)
Ancien = True
End If

If EstDansPériode(d) = DEDANS Then
If i = IDeb Then
'le collaborateur est entré pendant la période
Entré = True
SalaireEntrée = Ref.Cells(i, SALAIRE)
End If

DernierSalaire = Ref.Cells(i, SALAIRE)

If E = "SORTIE" Then
'le collaborateur est sorti pendant la période
Sorti = True
Exit Do
End If
End If

i = i + 1
Loop


en esperant que vous pourez m'aider !!!
merci d'avance a tous ceux qui se pencheront sur le sujet !
A voir également:

2 réponses

Bonjour,
Qu'est ce que 'E' ?
0
c'est une variable qui dis en gros ou en est l'employé, si il est dans l'entreprise ou pas.
je l'ai déclaré en integer, je me suis trompé?
0
j'ai un peu chercher le probleme et je pense que mon erreur est sur la déclaration de me tableux UCase, un nouveau message d'erreur me dis que je l'ai mal dimensionné, pourtant il me semble que c'est les bonnes dimensions.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
11 mai 2010 à 18:13
Bonjour,

UCase n'est pas un tableau mais une fonction qui retourne une chaîne de caractères en majuscule. Donc il y a un bémol si E est de type Interger !!!

Il faudrait savoir comment les variables ont été déclarées ainsi que l'instanciation des objets avant de pouvoir dire quoique se soit sur ce code.
0
Bonjour Polux,
alors voila mes déclarations (en sachant que je suis novice et que j'ai donc surement fait des erreurs) :
i: Integer
E : String
Ucase : ????
EVENEMENT : Const EVENEMENT = 2
d : DATE
IDeb : Integer
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
12 mai 2010 à 10:50
Bonjour,

L'erreur se produit ici "E = UCase(Ref.Cells(i, EVENEMENT))" dis-tu.
Peux-tu me dire ce qu'est "Ref" ?

;o)
0
Ref pointe sur le tableau liste des salariés
sa c'est la premiere ligne de ma fonction :
"Function TraiterStatSalarié(Ref As Range, Subscript, NbLig)"
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
12 mai 2010 à 11:01
Dans la déclaration de ta fonction, "Ref" est un objet Range. C'est à dire qu'il représente une cellule ou une plage de cellules.

Ici "E = UCase(Ref.Cells(i, EVENEMENT))", "Ref" est employé comme un objet Worksheet. C'est à dire qu'il représente une feuille de ton classeur.

Ne sachant pas exactement ce que tu veux faire, peux-tu faire passer ton fichier en utilisant le site www.cjoint.com. Tu postes ici le lien que le site te donnera.

Tu peux enlever ou modifier les données personnelles ou confidentielles avant de déposer ton fichier.

;o)
0
https://www.cjoint.com/?fmlqBJqYEN

en revenche je t'ai envoyé tout mon dossier, j'ai plusieurs problèmes, mais si arrive a m'aider sur le problème dont je te parle je pense pouvoir résoudre les autres.

j'ai un autre probleme que je ne comprends pas non plus, j'ai fait pas mal de déclaration sur ce projet et si j'enregistre le tout, alors quand je veux réouvrir le document il plante.
je t'envoi donc le dossier initial qu'on m'a donné, et je t'envoi a coté le code des macros que j'ai modifié (comme sa tu supprime le module1 et tu fait un copier/coller de celui que je t'envoi en créant un nouveau module1)

pour te guider : le bout de code dont je te parle ce trouve dans la Function TraiterStatSalarié(Ref As Range, Subscript, NbLig) du module1 des macros.

j'espere que tu m'as compris ;)
0
Polux31, tu n'es plus obligé de regarder mon code, j'ai trouvé l'erreur !!
en réalité il n'y en avait pas : il suffisait de faire un réglage dans :
vbe /outils/ Références
Ces 5 éléments doivent être cochés
visual basic for application
microsoft excel 12.0 object library
OLE automation
microsoft ofice 12.0 object library
microsoft forms 2.0 object library

alors que moi "manquant" était coché et pas "microsoft ofice 12.0 object library "
je l'ai décoché et tout marche.

mais merci quand meme pour aide !!!
0