Problème de condition toujours fausse

Résolu/Fermé
siamens_duj Messages postés 191 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 - Modifié par NHenry le 18/02/2016 à 13:34
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 20 févr. 2016 à 17:24
Bonjour,

je suis face à un problème.
J'avais un programme qui fonctionnait très bien jusqu'à ce que j'essaie de l'optimiser.

Dans mon programme il y a 2 inputbox.
Si la première est vide le programme s'arrête, mais si elle ne l'est pas je dois aller chercher dans mon autre classeur "Game" si ce qui est entré dans l'inputbox existe et si ce qui est entré existe, la 2eme inputbox se lance.

Mon code s'execute bien lorsque l'inputbox est vide mais après c est la cata. Si ce que j'ai rentré dans la première inputbox est faux alors une msgbox s'affiche mais le problème est que même lorsque ce que j'ai entré est vrai mon programme ne fonctionne pas  (la msgbox s'affiche et la 2eme inputbox ne se lance pas).

Je vous met un extrait de mon code:

Dim res1 as String
Dim res2 as String
Dim Q as long
Dim NomClasseur as String

Res1 = scan (rep) 'appel de la fonction, lance la première inputbox

NomClasseur = "Game.xlsm"

Application.ScreenUpdating = False 

If rep = "" Then
Exit sub 
Elseif rep <> "" Then
For Q = 2 to 5000 


Workbooks.open ("D:\users\moi\Documents\" & NomClasseur)

Do While Workbooks("Game").Sheets("jeu").Cells (Q, 1).Value <> ""

If rep = Workbooks("Game").Sheets("jeu").Cells (Q, 1).Value Then

res2 = scan(conf) 'Appel de la fonction, lance la deuxième inputbox 
Else
MsgBox "Incorrecte"
Workbooks("Game.xlsm").Close
End if 

Loop
Next Q

End if


Merci pour votre aide.

2 réponses

Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
18 févr. 2016 à 13:41
Salut,

Rep n'est déclaré nul part mais tu l'envois quand même à ton sous programme, ça peut expliquer tes bugs.
Tu peux le déclarer en public si tu veux, ça t'évitera de l’injecter dans ta fonction.
0
siamens_duj Messages postés 191 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 7
18 févr. 2016 à 14:01
Bonjour et merci pour votre réponse.
Rep est défini au dessus :
res1 = scan (rep)

Le problème se trouve dans la condition if après le While mais je ne comprends pas pourquoi. .
0
Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
18 févr. 2016 à 14:03
res1 = scan(rep) signifie que res1 va prendre comme valeur le resultat de la fonction scan qui a comme entrée rep.
rep n'est défini du moins dans le programme principal.
0
siamens_duj Messages postés 191 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 7
18 févr. 2016 à 14:28
Ah yes apparemment c était un des problèmes merci :)
Mais quand la condition est vrai il poursuit le code sans me lancer la deuxième inputbox que j'appelle comme ceci :

res2 = Scan (conf)

Cette fonction est comme ceci :

Function Scan (confirm)

Repscan = inputbox ("entrez le nom")

confirm = Repscan
0
Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
18 févr. 2016 à 14:47
Toujours le même problème, conf n'est déclaré nul part.
Essaye le mode pas à pas je m'en sers énormément, faut appuyer sur F8 pour passer de lignes en lignes.
0
siamens_duj Messages postés 191 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 7
18 févr. 2016 à 14:56
Oui mais C est étrange. Mon programme fonctionne très bien sans le code que je vous ai joint. Et il prend bien conf en compte ..
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
20 févr. 2016 à 17:24
Bonjour,

question qui n'a rien à voir avec ton pb...
A quoi ça sert de faire une fonction qui ne contient qu'une seule fonction ?
res2 = Scan (conf) 
Function Scan (confirm)
Repscan = inputbox ("entrez le nom")
confirm = Repscan

Pourquoi pas :
res2 =  inputbox ("entrez le nom") 

tout simplement ?
Et dans les 2 cas c'est res2 qui contient la réponse et qu'il faut tester plus loin.
eric
0