Problème de condition toujours fausse
Résolu
siamens_duj
Messages postés
212
Statut
Membre
-
eriiic Messages postés 25847 Statut Contributeur -
eriiic Messages postés 25847 Statut Contributeur -
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:
Merci pour votre aide.
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:
- Problème de condition toujours fausse
- Excel cellule couleur si condition texte - Guide
- Fausse alerte mcafee - Accueil - Piratage
- Fausse alerte connexion facebook - Guide
- Fausse alerte virus google - Guide
- Excel condition ou - Guide
2 réponses
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.
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.
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 ?
Pourquoi pas :
tout simplement ?
Et dans les 2 cas c'est res2 qui contient la réponse et qu'il faut tester plus loin.
eric
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
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. .
rep n'est défini du moins dans le programme principal.
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
Essaye le mode pas à pas je m'en sers énormément, faut appuyer sur F8 pour passer de lignes en lignes.