Problème de condition toujours fausse

Résolu
siamens_duj Messages postés 192 Date d'inscription   Statut Membre Dernière intervention   -  
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   -
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.
A voir également:

2 réponses

Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
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 192 Date d'inscription   Statut Membre Dernière intervention   7
 
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 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
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 192 Date d'inscription   Statut Membre Dernière intervention   7
 
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 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
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 192 Date d'inscription   Statut Membre Dernière intervention   7
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
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