• Initiateur de la discussion Initiateur de la discussion mirages
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

mirages

Guest
Bonjour,

J'essaye de creer un jeu sur excel...j'ai donc creer des textbox sur userform1 et le corrigé est sur userform2...
j'ai envie de creer un bouton aide..pour que à chaque clique un reponse dans une textbox s'affiche or j'ai un souci :

si j'ecris

for i=11 to 99
if not userform1.controls("textbox" & i).value=userform2.controls("textbox" & i).value then
userform1.controls("textbox" & i).value=userform2.controls("textbox" & i).value
endif


alors toutes les reponses s'affichent en meme temps...

si je fais une bouclie while excel se bloque a chaque fois...

et j'aimerais donc faire une boucle for each or je n'arrive pas à comprendre ce que je dois ecrire :

Dim i as integer
for each i in "..."?
if ....

end if
next..


que dois je ecrire apres le in?

y'a t il d'autre moyen de faire ?
Merci d'avance...
 
Re : for each in...

bonsoir ton problème est un "Mirage",
bon alors si tu veux faire une boucle c’est pour quoi faire pour afficher 1 réponse? et les réponses sont au nombre de 99?
donc quand tu réponds tu veux 1 seule réponse?
bref sans fichier expliques toi clairement autrement tu n'obtiendras pas de réponse exacte
a+
papou🙂

EDIT Bonjour Gorfaël
 
Dernière édition:
Re : for each in...

Salut mirages et le forum
Petit rappel : il n'y a ni télépathe, ni devin sur ce forum, et comme le seul qui sache de quoi tu parles, c'est toi...
Une boucle, quelle qu'elle soit se fera toujours en intégralité, sauf si tu l’interromps par une instruction Exit. que tu remplace le for par Each ne changera rien

Si tu veux qu'on aide, le minimum, c'est l'intégralité de la macro, qu'on sache de quoi on parle
A+
 
Re : for each in...

Désolée si je nai pas été très clait je suis encore une débutante en vba...

en fait il s'agit d'un sudoku...
g 81 textbox nommée textbox1,textbox2...qui sont placés dans un userform nommé frsudoku

j'ai 81 autres textbox dans un autre userform nommé frcorrection qui ont chacune une valeur donnée (cad la correction du sudoku en fait)

sur le userform Sudoku j'aimerais creer un bouton "Aide" tel que si l'utimisateur clique une fois alors une textbox prend la valeur de la correction, un autre clique donne une autre reponse dans le textbox d'apres et ainsi de suite.

or quand je fais une boucle if ecrite ainsi

Private Sub cdmaide_Click()
Dim i as integer
for i =1 to 81
if not frsuduku.controls("textbox"& i).value=frcorrection.controls("textbox"& i).value then
frsuduku.controls("textbox"& i).value=frcorrection.controls("textbox"& i).value
endif
next
end sub

alors toutes les reponses apparaissent dans les textbox...or je veux seulement qu'une seule textbox se remplisse a la fois...suis je assez claire?

et du coup j'ai cru comprendre qu'une boucle for each était adequate mais apparement non ...
y a t il d'autre moyen de faire?

J'espere etre claire cette fois ci...
 
Re : for each in...

Bonjour le fil 🙂,
Peut-être une solution via un module de classe en PJ 😛...
Il suffit de double-cliquer dans la TextBox pour la remplir avec son N° ou la vider.
Il suffit d'utiliser ce N° pour faire référence au 2ème USF et ça devrait le faire 🙄...
Bonne soirée 😎
 

Pièces jointes

Re : for each in...

oulalalah..merci pour la réponse...mais c très compliqué...en fait je n'ai jamais utilisé des modules sauf pour enregistré des macros...mais très simple..
du coup g un peu de mal avec ce que vous m'avez envoyé...
 
Re : for each in...

au final c bon...g reussi a trouver le moyen de faire 81 boucles if mais sans avoir a remplacer a chaque fois les noms des userforms..en faisant ctrl+F...merci beaucoup pour vos reponses
 
Re : for each in...

Salut mirages et le forum
Le fait de changer de manière de faire la boucle ne la fera pas évoluer. Donc, il faut trouver une méthode de travail qui te donnera une case vide, et à partir de là, tu la remplies.

Le tout est de trouver la méthode.

La première aide est donc forcément une vérification des cases déjà inscrites. Ça c'est ton code un peu remanié :
Code:
Private Sub cdmaide_Click()
Dim X As Integer
For X = 1 To 81
    If frsuduku.Controls("textbox" & X) <> "" And _
       frsuduku.Controls("textbox" & X) <> frcorrection.Controls("textbox" & X) Then
            frsuduku.Controls("textbox" & X) = frcorrection.Controls("textbox" & X)
            Exit For
    End If
Next
End Sub
Je ne l'ai pas testée.
J'ai remplacé i par X, vieille habitude, le "i" se confondant facilement avec "1"
On fait une boucle de 1 à 81
si une case contient une valeur différente de la référence, on la remplace (tout ça, tu connais) et on sort de la boucle(exit for - utiliser à la place de exit sub, pour pouvoir continuer la macro)

On peut faire en sorte que si on change un nombre, il apparaissent en gras, par exemple.
Pour ça, on remet toutes les case en normal, en début de macro, et on passe la case en Font.bold = true. Mais ce n'est qu'un exemple.

Après, tout dépend de comment on veut aider.
Un Sudoku à 9 tableaux de neuf cases. Une aide peut être réalisée de différentes manières.
- poursuivre que si on n'a pas déjà aidé
- remplir la première case vide, soit horizontalement, soit verticalement.
- remplir la première case vide du tableau ayant le moins de valeurs.
Il y a sans doute d'autres méthodes, mais ça ne dépend que de toi.

Avec la méthode, créer le code, tant qu'il est réalisable, est facile.
A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
527
Réponses
5
Affichages
573
Réponses
4
Affichages
734
Réponses
3
Affichages
922
Retour