Changement de couleur de cellules comprises entre 2 cellules....
Résolu/Fermé
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
-
18 déc. 2014 à 18:23
mousaillon Messages postés 55 Date d'inscription jeudi 30 octobre 2014 Statut Membre Dernière intervention 3 mars 2016 - 2 avril 2015 à 10:51
mousaillon Messages postés 55 Date d'inscription jeudi 30 octobre 2014 Statut Membre Dernière intervention 3 mars 2016 - 2 avril 2015 à 10:51
A voir également:
- Changement de couleur de cellules comprises entre 2 cellules....
- Formule excel pour additionner plusieurs cellules - Guide
- Excel cellule couleur si condition texte - Guide
- Verrouiller cellules excel - Guide
- Fusionner 2 cellules excel - Guide
- Changer de dns - Guide
17 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
19 déc. 2014 à 09:15
19 déc. 2014 à 09:15
Salut mousaillon,
Ton sujet est intéressant.
Avant de se ruer sur les fonctions nécessaires au jeu proprement dit, je te propose de nous arrêter un instant sur d'autres possibilités.
La jouabilité :
1- Nombre de joueurs fixes = 3 ou variant de 2 à ...?
2- Plateau de jeu fixe à 300 cases ou variable (on pourrait proposer plusieurs modes de jeu).
Par ailleurs, dans le cas de 300 ,elles se répartissent comment? 15x20?
3- Possibilité de jouer contre l'ordinateur? cf intelligence artificielle
Le choix : jeu en réseau ou sur un seul ordinateur
Les deux étant possibles, ce sera ton choix l'un, l'autre ou les deux.
Intelligence artificielle
En faisant le choix de permettre à l'ordinateur de jouer, il te faut choisir comment il pourra le faire.
Trois choix :
1- Des coups joués au hasard. => simple
2- Des coups calculés au "coup par coup" => difficile
Selon l'état de la piste, l'ordinateur calculerai le meilleur coup possible.
3- Des coups calculés "en avance" => Hyper ardue
L'ordinateur calcule alors comment gagner une partie.
Ton sujet est intéressant.
Avant de se ruer sur les fonctions nécessaires au jeu proprement dit, je te propose de nous arrêter un instant sur d'autres possibilités.
La jouabilité :
1- Nombre de joueurs fixes = 3 ou variant de 2 à ...?
2- Plateau de jeu fixe à 300 cases ou variable (on pourrait proposer plusieurs modes de jeu).
Par ailleurs, dans le cas de 300 ,elles se répartissent comment? 15x20?
3- Possibilité de jouer contre l'ordinateur? cf intelligence artificielle
Le choix : jeu en réseau ou sur un seul ordinateur
Les deux étant possibles, ce sera ton choix l'un, l'autre ou les deux.
Intelligence artificielle
En faisant le choix de permettre à l'ordinateur de jouer, il te faut choisir comment il pourra le faire.
Trois choix :
1- Des coups joués au hasard. => simple
2- Des coups calculés au "coup par coup" => difficile
Selon l'état de la piste, l'ordinateur calculerai le meilleur coup possible.
3- Des coups calculés "en avance" => Hyper ardue
L'ordinateur calcule alors comment gagner une partie.
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
21 déc. 2014 à 08:54
21 déc. 2014 à 08:54
Bonjour pijaku,
En admettant ta théorie, je ne veux pas en faire "une usine à gaz". Le but de cette affaire n'est pas le jeu, ce qui est le plus important pour moi, c'est d'évoluer dans le développement VBA par la création d'applications utiles, voire ludiques. De me dire j'ai pensé à une application et j'ai réussi à la développer moi-même, même si parfois je suis obligé d'avoir un coup de pousse...!
L'aire de jeu fait 20 colonnes par 15 lignes. L'aire de jeu pourra être variable. Pas de jeu contre l'ordinateur, pas de jeu en réseau. Le nombre de joueurs sera 2 ou 3. Le mieux est de favoriser le jeu à 3. Trop simple lorsque l'on joue à 2, moins de suspense, moins de tactique de jeu.
Au départ j'ai déjà programmé :
(Je me suis axé sur une partie à 3 joueurs)
- l'enregistrement du nom des joueurs
- aléatoirement l'affichage des cases fixes (noires) (comme les cases noires d'un "mots croisés").
soit 30 cases noires sur 300.
- aléatoirement l'affichage des cases rouges du joueur 1.
soit 20 cases rouges sur les 270 restantes.
- aléatoirement l'affichage des cases vertes du joueur 2.
soit 20 cases vertes sur les 250 restantes.
- aléatoirement l'affichage des cases bleues du joueur 3.
soit 20 cases bleues sur les 230 restantes.
Reste = 210 cases pour le jeu.
- le contrôle du nombre de cases affichées aléatoirement
- l'incrémentation des compteurs de chaque joueur. Soit tous les compteurs à 20.
- le tirage au sort du premier joueur qui commence
- et c'est là que je coince, lorsque le joueur doit débuter la partie.....
le joueur sélectionne la case qu'il désire avec la souris ou demande en
l'indiquant la sélection de la case "C4" par exemple (ce cas est un plus lourd
mais bon !).
En admettant ta théorie, je ne veux pas en faire "une usine à gaz". Le but de cette affaire n'est pas le jeu, ce qui est le plus important pour moi, c'est d'évoluer dans le développement VBA par la création d'applications utiles, voire ludiques. De me dire j'ai pensé à une application et j'ai réussi à la développer moi-même, même si parfois je suis obligé d'avoir un coup de pousse...!
L'aire de jeu fait 20 colonnes par 15 lignes. L'aire de jeu pourra être variable. Pas de jeu contre l'ordinateur, pas de jeu en réseau. Le nombre de joueurs sera 2 ou 3. Le mieux est de favoriser le jeu à 3. Trop simple lorsque l'on joue à 2, moins de suspense, moins de tactique de jeu.
Au départ j'ai déjà programmé :
(Je me suis axé sur une partie à 3 joueurs)
- l'enregistrement du nom des joueurs
- aléatoirement l'affichage des cases fixes (noires) (comme les cases noires d'un "mots croisés").
soit 30 cases noires sur 300.
- aléatoirement l'affichage des cases rouges du joueur 1.
soit 20 cases rouges sur les 270 restantes.
- aléatoirement l'affichage des cases vertes du joueur 2.
soit 20 cases vertes sur les 250 restantes.
- aléatoirement l'affichage des cases bleues du joueur 3.
soit 20 cases bleues sur les 230 restantes.
Reste = 210 cases pour le jeu.
- le contrôle du nombre de cases affichées aléatoirement
- l'incrémentation des compteurs de chaque joueur. Soit tous les compteurs à 20.
- le tirage au sort du premier joueur qui commence
- et c'est là que je coince, lorsque le joueur doit débuter la partie.....
le joueur sélectionne la case qu'il désire avec la souris ou demande en
l'indiquant la sélection de la case "C4" par exemple (ce cas est un plus lourd
mais bon !).
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
21 déc. 2014 à 12:27
21 déc. 2014 à 12:27
Bonjour,
Voilà qui répond à pas mal de questionnements.
le joueur sélectionne la case qu'il désire avec la souris me semble plus judicieux que indiquant la sélection de la case "C4" par exemple
Pour faire cela, il faut utiliser le Module de la feuille concernée, en utilisant l'événement Worsheet_SelectionChange().
Je te laisse regarder l'aide en ligne sur cet événement.
Si tu as des difficultés, n'hésite pas.
Je reviens dès lundi avec la fonction qui te manque.
Voilà qui répond à pas mal de questionnements.
le joueur sélectionne la case qu'il désire avec la souris me semble plus judicieux que indiquant la sélection de la case "C4" par exemple
Pour faire cela, il faut utiliser le Module de la feuille concernée, en utilisant l'événement Worsheet_SelectionChange().
Je te laisse regarder l'aide en ligne sur cet événement.
Si tu as des difficultés, n'hésite pas.
Je reviens dès lundi avec la fonction qui te manque.
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
22 déc. 2014 à 09:12
22 déc. 2014 à 09:12
Ok merci pour cette réponse. Dès que je peux je me plonge dedans.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
22 déc. 2014 à 11:23
22 déc. 2014 à 11:23
Bonjour,
Avant de te communiquer la fonction, j'ai besoin que tu me confirmes les cellules qui se doivent d'être vérifiées.
En effet, au vu de ta question initiale, j'avais écrit une fonction qui ne s'avère plus exacte au vu de ton complément de samedi (à savoir les cellules noires).
Je t'ai fait un dessin :
Est ce exact? ou pas...
Avant de te communiquer la fonction, j'ai besoin que tu me confirmes les cellules qui se doivent d'être vérifiées.
En effet, au vu de ta question initiale, j'avais écrit une fonction qui ne s'avère plus exacte au vu de ton complément de samedi (à savoir les cellules noires).
Je t'ai fait un dessin :
Est ce exact? ou pas...
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
22 déc. 2014 à 11:50
22 déc. 2014 à 11:50
Bonjour,
Non ce n'est pas du tout cela. il faut absolument te servir des 3 exemples que j'ai donnés au début de notre discussion. L'emplacement des cellules de couleur que j'ai donné est primordial. Tu ne peux pas avoir de cases "vides" "sans couleur" entre deux cases de même couleur pour que les cellules prisonnières changent de couleur. Sinon il faut bien chercher dans toutes les directions. Je te prépare à nouveau des exemples pour étayer mes explications qui ne sont pas forcément bien claires. Je vois cela cet apm.
A+ et merci
Non ce n'est pas du tout cela. il faut absolument te servir des 3 exemples que j'ai donnés au début de notre discussion. L'emplacement des cellules de couleur que j'ai donné est primordial. Tu ne peux pas avoir de cases "vides" "sans couleur" entre deux cases de même couleur pour que les cellules prisonnières changent de couleur. Sinon il faut bien chercher dans toutes les directions. Je te prépare à nouveau des exemples pour étayer mes explications qui ne sont pas forcément bien claires. Je vois cela cet apm.
A+ et merci
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
22 déc. 2014 à 13:32
22 déc. 2014 à 13:32
OK.
Pour le coup, ce que je pensais relativement facile vendredi devient ardu...
Mais c'est faisable.
Pour le coup, ce que je pensais relativement facile vendredi devient ardu...
Mais c'est faisable.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
22 déc. 2014 à 13:55
22 déc. 2014 à 13:55
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
22 déc. 2014 à 13:59
22 déc. 2014 à 13:59
Désolé pour l'augmentation de la difficulté et l'explication en retard des cases noires ! cela augmente le niveau du challenge ! il faut le voir comme cela.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
22 déc. 2014 à 14:35
22 déc. 2014 à 14:35
T'inquiète pas, je le vois comme ça.
Regarde déjà si ceci convient, sans les cases noires...
https://www.cjoint.com/c/DLwoQjP8ryh
Si oui, on verra ensemble pour ajouter le test "cases noires".
Regarde déjà si ceci convient, sans les cases noires...
https://www.cjoint.com/c/DLwoQjP8ryh
Si oui, on verra ensemble pour ajouter le test "cases noires".
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
22 déc. 2014 à 14:48
22 déc. 2014 à 14:48
PS : inutile de regarder les fonctions de trop près.
Je suis toujours un peu désordonné au départ.
Regarde simplement si ce fichier répond aux règles imposées (à part les cases noires bien sur)
Il y a moyen de faire beaucoup plus simple, je referais un second jet plus tard.
Là, ton problème m'a collé mal au crâne ;-)
A+
Je suis toujours un peu désordonné au départ.
Regarde simplement si ce fichier répond aux règles imposées (à part les cases noires bien sur)
Il y a moyen de faire beaucoup plus simple, je referais un second jet plus tard.
Là, ton problème m'a collé mal au crâne ;-)
A+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
22 déc. 2014 à 15:09
22 déc. 2014 à 15:09
Là, tu peux regarder.
Une fonction au lieu des 3 précédentes...
https://www.cjoint.com/?DLwprjCu0Xg
Une fonction au lieu des 3 précédentes...
https://www.cjoint.com/?DLwprjCu0Xg
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
22 déc. 2014 à 15:15
22 déc. 2014 à 15:15
Oui joli travail .... !. Là je vois que ça avance pas mal. Je comprends que tu aies eu mal à la tête lorsque je lis la macro. Je ne suis pas trop habitué à ce genre d'écriture mais je vais creuser. Su tu pouvais mettre quelques annotations pour que je reste sur la bonne piste. Je ne veux pas être qu'un utilisateur mais comprendre ce que je fais avec ton aide bien sûr ! Alors cela marche bien mais malheureusement il y a un défaut majeur. Le joueur arrive à prendre des cases à l'adversaire dans des cas où il n'en a pas le droit. Exemple :
en D2 tu as une case rouge
en D3 tu as une case bleue
en D4 tu as une case verte
le joueur en cours choisit la case D1. La case sélectionnée passe en vert.
D2 et D3 sont comprise entre deux cases vertes.
Avec la macro il prend les cases D2,3. Il n'en a pas le droit. Car D2 et D3 sont de couleur différente. Pour se faire il aurait fallu que D2 et D3 soient de couleur rouge ou bleu. Voir les exemples fournis.
Sinon il modifie bien les cases à prendre dans toutes les directions. Super !
Eh cher ami ne passe pas non plus ton temps là dessus. Il n'y a pas le feu. Mais je suis heureux de voir que cela est faisable.
Merci pour le travail accompli. SUPER !
en D2 tu as une case rouge
en D3 tu as une case bleue
en D4 tu as une case verte
le joueur en cours choisit la case D1. La case sélectionnée passe en vert.
D2 et D3 sont comprise entre deux cases vertes.
Avec la macro il prend les cases D2,3. Il n'en a pas le droit. Car D2 et D3 sont de couleur différente. Pour se faire il aurait fallu que D2 et D3 soient de couleur rouge ou bleu. Voir les exemples fournis.
Sinon il modifie bien les cases à prendre dans toutes les directions. Super !
Eh cher ami ne passe pas non plus ton temps là dessus. Il n'y a pas le feu. Mais je suis heureux de voir que cela est faisable.
Merci pour le travail accompli. SUPER !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
22 déc. 2014 à 18:24
22 déc. 2014 à 18:24
Eh cher ami ne passe pas non plus ton temps là dessus.
Ne t'inquiète pas, mon fils passe avant.
C'est juste que comme il a 7 mois, il fait pas mal de siestes; et aujourd'hui maman n'était pas là... donc j'ai eu la paix et du temps.
Sinon, regarde ceci, cela devrait te convenir, ou presque. J'ai essayé de commencer à annoter, mais là, bébé braille, donc je te laisse.
https://www.cjoint.com/c/DLwsENsveH5
A+
Ne t'inquiète pas, mon fils passe avant.
C'est juste que comme il a 7 mois, il fait pas mal de siestes; et aujourd'hui maman n'était pas là... donc j'ai eu la paix et du temps.
Sinon, regarde ceci, cela devrait te convenir, ou presque. J'ai essayé de commencer à annoter, mais là, bébé braille, donc je te laisse.
https://www.cjoint.com/c/DLwsENsveH5
A+
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
23 déc. 2014 à 11:45
23 déc. 2014 à 11:45
Bonjour pijaku
J'ai testé ta nouvelle version. Encore du beau travail avec des améliorations. Malheureusement je l'ai testée dans pas mal de cas. Parfois les cases noires se font manger et changent de couleur. Il y a des dépassements de l'aire de jeu. On dirait qu'il y a un manque de stabilité. Ca marche bien dans les cas simples puis soudain la macro ne réalise pas le travail demandé.
Quand je regarde ta macro, je me dis que j'ai encore pas mal de boulot pour en arriver à ce stade d'écriture.
Encore merci.
J'ai testé ta nouvelle version. Encore du beau travail avec des améliorations. Malheureusement je l'ai testée dans pas mal de cas. Parfois les cases noires se font manger et changent de couleur. Il y a des dépassements de l'aire de jeu. On dirait qu'il y a un manque de stabilité. Ca marche bien dans les cas simples puis soudain la macro ne réalise pas le travail demandé.
Quand je regarde ta macro, je me dis que j'ai encore pas mal de boulot pour en arriver à ce stade d'écriture.
Encore merci.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
23 déc. 2014 à 18:42
23 déc. 2014 à 18:42
Bonjour,
Je suis sur d'avoir mis une réponse en début d'après midi... Mais elle n'apparait pas. J'ai du faire une boulette ...
Bon, voici un code qui semble fonctionner :
Question subsidiaire quant au jeu : un joueur peut-il jouer sur une case colorée par lui ou un autre joueur?
Je suis sur d'avoir mis une réponse en début d'après midi... Mais elle n'apparait pas. J'ai du faire une boulette ...
Bon, voici un code qui semble fonctionner :
Option Explicit Dim rngPlateau As Range Dim Joueurs(2) As Integer Dim NumJoueurEnCours As Integer Sub Init() 'Les cellules en dehors du plateau n'ont pas de couleur 'permet la sortie de boucle lorsque l'on arrive en bordure de plateau Range("A1:AZ500").Interior.ColorIndex = -4142 'définit le plateau, l'aire de jeu Set rngPlateau = Range("C4:Q23") 'colore toutes les cellules du plateau en blanc 'pour différencier de l'extérieur du plateau de jeu rngPlateau.Interior.ColorIndex = 2 'peint quelques cellules en noir, pour l'exemple Range("G5").Interior.ColorIndex = 1 Range("D10").Interior.ColorIndex = 1 Range("P4").Interior.ColorIndex = 1 Range("K17").Interior.ColorIndex = 1 Range("L10").Interior.ColorIndex = 1 Range("M20").Interior.ColorIndex = 1 'définit la couleur des 3 joueurs Joueurs(0) = 3 Joueurs(1) = 4 Joueurs(2) = 5 'numéro du joueur qui a la main NumJoueurEnCours = 0 'sélection d'une cellule en dehors du plateau Range("A1").Select End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Si la cellule sélectionnée ne fait pas partie du plateau de jeu, on quitte sans rien faire If Intersect(rngPlateau, Target) Is Nothing Then Exit Sub 'ICI différents tests à faire... If Target.Count > 1 Then Exit Sub Dim Chemin As String, Coul As Integer Coul = Joueurs(NumJoueurEnCours) Target.Interior.ColorIndex = Coul 'Cherche le "Chemin" à colorier grâce à la fonction ci-dessous : Colore 'paramètres : 'target = Range(cellule cliquée) => cellule active '1 = décalage en ligne (pour vérifier la colonne il faut ajouter ou soustraire 1 au numéro de ligne) '0 = décalage de colonne 'coul = couleur du joueur 'Colore La Colonne Chemin = Colore(Target, 1, 0, Coul) If Chemin <> "" Then Range(Chemin).Interior.ColorIndex = Coul 'Colore la ligne Chemin = Colore(Target, 0, 1, Coul) If Chemin <> "" Then Range(Chemin).Interior.ColorIndex = Coul 'colore la diagonale \ Chemin = Colore(Target, 1, 1, Coul) If Chemin <> "" Then Range(Chemin).Interior.ColorIndex = Coul 'colore la diagonale / Chemin = Colore(Target, -1, 1, Coul) If Chemin <> "" Then Range(Chemin).Interior.ColorIndex = Coul 'joueur suivant NumJoueurEnCours = NumJoueurEnCours + 1 If NumJoueurEnCours = 3 Then NumJoueurEnCours = 0 End Sub 'La fonction Colore va renvoyer le "chemin" si elle rencontre, dans son parcours 'la couleur du joueur qui vient de jouer. 'Elle est appelée 4 fois, horizontal, vertical et les deux diagonales Function Colore(RngJoue As Range, pasH As Integer, PasV As Integer, Couleur As Integer) As String Dim Lig As Integer, Col As Integer, Sens As Integer, CheminTemp As String, Flag As Boolean Dim PremCouleur As Integer, CoulCelEnCours As Integer 'la cellule jouée est forcément colorée Colore = RngJoue.Address 'Sens permet, dans le cas horizontal par exemple : 'd'aller vers la droite, sens = -1 'd'aller vers la gauche, sens = 1 For Sens = -1 To 1 Step 2 'initialisation des variables 'à chaque changement de sens Lig = 0 Col = 0 PremCouleur = 0 Do Lig = Lig + (pasH * Sens) Col = Col + (PasV * Sens) 'Cas de sortie de boucle : 'couleur blanc : If RngJoue.Offset(Lig, Col).Interior.ColorIndex = 2 'couleur noire : If RngJoue.Offset(Lig, Col).Interior.ColorIndex = 1 'absence de couleur (en dehors du plateau) : If RngJoue.Offset(Lig, Col).Interior.ColorIndex = -4142 'Ces 3 conditions se résument en une seule : If RngJoue.Offset(Lig, Col).Interior.ColorIndex < 3 Then Exit Do 'PremCouleur représente la couleur de la première case rencontrée If PremCouleur = 0 Then 'Si première fois alors 'on lui attribue la couleur de la case PremCouleur = RngJoue.Offset(Lig, Col).Interior.ColorIndex End If CoulCelEnCours = RngJoue.Offset(Lig, Col).Interior.ColorIndex 'on va regarder le cas de la couleur de la cellule Select Case CoulCelEnCours Case PremCouleur 'cas ou elle est identique à la première couleur 'si on rencontre plusieurs fois la couleur rencontrée dans la cellule 'voisine de celle jouée, on stocke leurs adresses dans la variable CheminTemp CheminTemp = RngJoue.Offset(Lig, Col).Address & "," & CheminTemp Case Couleur 'cas ou l'on rencontre la couleur du joueur Flag = True Case Else 'autre cas (autre joueur) Exit Do End Select Loop While RngJoue.Offset(Lig, Col).Interior.ColorIndex <> Couleur 'si le drapeau est levé, cela veut dire qu'on a rencontré la couleur du joueur 'donc on enregistre le "chemin" réalisé If Flag = True Then Colore = CheminTemp & Colore Else CheminTemp = "" Next Sens End Function
Question subsidiaire quant au jeu : un joueur peut-il jouer sur une case colorée par lui ou un autre joueur?
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
24 déc. 2014 à 10:49
24 déc. 2014 à 10:49
Bonjour pijaku
Encore merci pour cette évolution.
à ta question :
"Question subsidiaire quant au jeu : un joueur peut-il jouer sur une case colorée par lui ou un autre joueur?"
La réponse est non pour les deux cas. Obligatoirement la case est vierge.
J'ai testé la macro. J'ai rencontré deux problèmes. J'en ai réglé un mais pas le deuxième.
Le premier : message d'erreur :
j'ai rajouté les 2 lignes suivantes dans "Options Explicite"
Le deuxième :
Là j'avoue que je ne trouve pas pourquoi. Certainement une erreur ou un manque dans la partie "Function"
Encore merci pour cette évolution.
à ta question :
"Question subsidiaire quant au jeu : un joueur peut-il jouer sur une case colorée par lui ou un autre joueur?"
La réponse est non pour les deux cas. Obligatoirement la case est vierge.
J'ai testé la macro. J'ai rencontré deux problèmes. J'en ai réglé un mais pas le deuxième.
Le premier : message d'erreur :
j'ai rajouté les 2 lignes suivantes dans "Options Explicite"
Le deuxième :
Là j'avoue que je ne trouve pas pourquoi. Certainement une erreur ou un manque dans la partie "Function"
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
24 déc. 2014 à 11:19
24 déc. 2014 à 11:19
Bonjour,
Il ne faut pas réutiliser les anciens codes.
Ouvre un nouveau classeur, dessines les contours de la plage C4:Q23 et colle tout le code plus haut dans le module de la feuille.
Il ne faut pas réutiliser les anciens codes.
Ouvre un nouveau classeur, dessines les contours de la plage C4:Q23 et colle tout le code plus haut dans le module de la feuille.
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
24 déc. 2014 à 15:11
24 déc. 2014 à 15:11
C'est fait ; j'ai pris un nouveau classeur, j'ai collé la macro mais petit souci, d'écriture je pense, sur cette ligne de code du private sub :
j'ai ce msg d'erreur ;
à priori le "selectijava-script" pose problème. J'ai essayé différentes écritures. Là l'erreur disparait, j'ai bien le trait de séparation des différents paragraphes de la macro qui se matérialise mais pas d'exécution du code.
Pas de bol mais tu t'y approche, ça c'est sûr !
Je vais devoir en rester là pour aujourd'hui et pour deux ou trois jours. Je te souhaite à toi et ta famille de bonnes fêtes de Noël. Joyeux réveillon et encore merci.
j'ai ce msg d'erreur ;
à priori le "selectijava-script" pose problème. J'ai essayé différentes écritures. Là l'erreur disparait, j'ai bien le trait de séparation des différents paragraphes de la macro qui se matérialise mais pas d'exécution du code.
Pas de bol mais tu t'y approche, ça c'est sûr !
Je vais devoir en rester là pour aujourd'hui et pour deux ou trois jours. Je te souhaite à toi et ta famille de bonnes fêtes de Noël. Joyeux réveillon et encore merci.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
26 déc. 2014 à 11:09
26 déc. 2014 à 11:09
Bonjour,
Le selectijava-script, comme tu peux le voir sur le forum, ne fait pas partie du code.
C'est lorsque tu as copié-collé le code du forum vers ton Excel que ce mot s'est ajouté.
Cela doit être un bug dû à l'utilisation, ici, des balises code. Peux tu nous donner ton navigateur que l'on puisse faire des tests stp?
Sinon, essaie ce fichier :
https://www.cjoint.com/c/DLAlrrnowgU
A+
Le selectijava-script, comme tu peux le voir sur le forum, ne fait pas partie du code.
C'est lorsque tu as copié-collé le code du forum vers ton Excel que ce mot s'est ajouté.
Cela doit être un bug dû à l'utilisation, ici, des balises code. Peux tu nous donner ton navigateur que l'on puisse faire des tests stp?
Sinon, essaie ce fichier :
https://www.cjoint.com/c/DLAlrrnowgU
A+
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
30 déc. 2014 à 11:02
30 déc. 2014 à 11:02
Bonjour,
Me revoilà . Ok pour la macro. Ca marche super bien. Je l'ai testée de plusieurs façons et à priori tout à l'air ok. Je vais tenter maintenant de l'adapter à mes besoins dans l'application. Un grand merci pour ton aide. Super sympa. Bonne fin d'année et bonne année 2015.
Me revoilà . Ok pour la macro. Ca marche super bien. Je l'ai testée de plusieurs façons et à priori tout à l'air ok. Je vais tenter maintenant de l'adapter à mes besoins dans l'application. Un grand merci pour ton aide. Super sympa. Bonne fin d'année et bonne année 2015.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
30 déc. 2014 à 11:20
30 déc. 2014 à 11:20
Bonjour,
Juste parce que nous sommes sur un forum d'entraide, ce serait sympa de ta part de placer le résultat final, ici, dans une réponse.
Ainsi nous pourrions voir ta réalisation et pourquoi pas en faire une fiche pratique...
En tout cas, de rien.
Bonne fin d'année et bonne année 2015 à toi également.
Juste parce que nous sommes sur un forum d'entraide, ce serait sympa de ta part de placer le résultat final, ici, dans une réponse.
Ainsi nous pourrions voir ta réalisation et pourquoi pas en faire une fiche pratique...
En tout cas, de rien.
Bonne fin d'année et bonne année 2015 à toi également.
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
31 déc. 2014 à 09:52
31 déc. 2014 à 09:52
Bonjour,
Ok pas de soucis. J'y avais bien pensé. Ca me prendra un certain temps quand même ! Pour mettre un fichier Excel en pièce jointe sur le forum comment procéder ?
Bon réveillon ! Bonne année 2015
Ok pas de soucis. J'y avais bien pensé. Ca me prendra un certain temps quand même ! Pour mettre un fichier Excel en pièce jointe sur le forum comment procéder ?
Bon réveillon ! Bonne année 2015
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
>
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
31 déc. 2014 à 09:55
31 déc. 2014 à 09:55
Bonjour,
Ca me prendra un certain temps quand même !
Aucun souci. Une des règles des forums en général, c'est que l'urgence n'existe pas...
En tout cas, merci pour tout ceux qui seront intéressés.
Bonne fin d'année et bonne année 2015 également.
@++
Ca me prendra un certain temps quand même !
Aucun souci. Une des règles des forums en général, c'est que l'urgence n'existe pas...
Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que cjoint.com
Va sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
En tout cas, merci pour tout ceux qui seront intéressés.
Bonne fin d'année et bonne année 2015 également.
@++
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
24 janv. 2015 à 14:51
24 janv. 2015 à 14:51
Bonjour pijaku
Je travaille toujours sur mon application et à priori il ne me reste plus qu'à résoudre deux problèmes sur lesquels je bute. Une nouvelle fois je viens faire appel à ton savoir en la matière.
Le premier concerne une erreur dans la macro pour la prise des cases de l'adversaire.
Un schéma causant toujours mieux qu'un long discours, j'ai mis en pièce jointe 2 exemples d'erreurs
Des cases changent de couleur alors qu'elles n'en ont pas le droit.
Le deuxième est d'ordre esthétique, ergonomique, pratique .....
J'ai réussi à faire un tirage au sort du joueur qui commence et qui affiche sa bonne couleur au démarrage. Mais pour celui-ci, comment éviter qu'il exécute le Alt+F8 ? un clic sur un bouton de commande serait plus pratique ? non ? qu'en penses-tu ? Est ce possible ? ce qui m'inquiète est le sub INIT()
J'ai inséré dans le jeu, le choix de deux aires de jeu (300 et 600 cases),toutes les cases coloriées tirées au sort pour chaque joueur ainsi que les cases noires selon un pourcentage précis en fonction de l'aire de jeu spécifiée (car la grille n'est pas vierge au démarrage), tous les décomptes de points, les statistiques, les sauvegardes de jeu, une notice simplifiée et quelques messages en cas d'erreur de manips ou d'oubli de paramétrage.....etc. Pour le moment j'ai travaillé avec trois joueurs systématiques et je dois travailler pour le choix du jeu à 2 ou 3 joueurs.
Il ne restera plus qu'à torturer ce jeu pour voir si toutes les conditions sont réunies et qu'elles remplissent bien le cahier des charges puis à travailler sur une présentation un peu "fun" avec les moyens mais néanmoins limités qu'offre Excel !
Encore un peu de travail mais cela avance bien.
Par avance merci ...
A+
Je travaille toujours sur mon application et à priori il ne me reste plus qu'à résoudre deux problèmes sur lesquels je bute. Une nouvelle fois je viens faire appel à ton savoir en la matière.
Le premier concerne une erreur dans la macro pour la prise des cases de l'adversaire.
Un schéma causant toujours mieux qu'un long discours, j'ai mis en pièce jointe 2 exemples d'erreurs
Des cases changent de couleur alors qu'elles n'en ont pas le droit.
Le deuxième est d'ordre esthétique, ergonomique, pratique .....
J'ai réussi à faire un tirage au sort du joueur qui commence et qui affiche sa bonne couleur au démarrage. Mais pour celui-ci, comment éviter qu'il exécute le Alt+F8 ? un clic sur un bouton de commande serait plus pratique ? non ? qu'en penses-tu ? Est ce possible ? ce qui m'inquiète est le sub INIT()
J'ai inséré dans le jeu, le choix de deux aires de jeu (300 et 600 cases),toutes les cases coloriées tirées au sort pour chaque joueur ainsi que les cases noires selon un pourcentage précis en fonction de l'aire de jeu spécifiée (car la grille n'est pas vierge au démarrage), tous les décomptes de points, les statistiques, les sauvegardes de jeu, une notice simplifiée et quelques messages en cas d'erreur de manips ou d'oubli de paramétrage.....etc. Pour le moment j'ai travaillé avec trois joueurs systématiques et je dois travailler pour le choix du jeu à 2 ou 3 joueurs.
Il ne restera plus qu'à torturer ce jeu pour voir si toutes les conditions sont réunies et qu'elles remplissent bien le cahier des charges puis à travailler sur une présentation un peu "fun" avec les moyens mais néanmoins limités qu'offre Excel !
Encore un peu de travail mais cela avance bien.
Par avance merci ...
A+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
26 janv. 2015 à 08:24
26 janv. 2015 à 08:24
Salut,
Je vais regarder l'erreur dans la fonction de changement de couleur. Ce ne doit pas être trop compliqué à résoudre.
Pour le bouton, plusieurs choix.
- tu utilises un bouton de type Contrôle ActiveX. Le code sera donc :
- tu utilises un bouton de type formulaire, après l'avoir dessiné, tu lui affectes la macro Feuil1!Init
- de la même façon, tu peux affecter une macro à une forme (cf exemple)
EXEMPLE
Je vais regarder l'erreur dans la fonction de changement de couleur. Ce ne doit pas être trop compliqué à résoudre.
Pour le bouton, plusieurs choix.
- tu utilises un bouton de type Contrôle ActiveX. Le code sera donc :
'Bouton de commande type ActiveX Private Sub CommandButton1_Click() Init End Sub
- tu utilises un bouton de type formulaire, après l'avoir dessiné, tu lui affectes la macro Feuil1!Init
- de la même façon, tu peux affecter une macro à une forme (cf exemple)
EXEMPLE
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
26 janv. 2015 à 08:53
26 janv. 2015 à 08:53
Re-
Voici le fichier.
Je n'ai pas tout testé mais cela devrait convenir...
Pour le reste de tes questions, si tu veux un coup de main, faudra me filer ton fichier de travail.
Voici le fichier.
Je n'ai pas tout testé mais cela devrait convenir...
Pour le reste de tes questions, si tu veux un coup de main, faudra me filer ton fichier de travail.
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
26 janv. 2015 à 17:06
26 janv. 2015 à 17:06
Bonjour pijaku
Je n'étais pas loin de la solution. En fait je pensais que le INIT() ne pouvait se mettre sur un bouton puisque c'est une initialisation de la feuille. J'avais copié le texte de la macro sous le Privat Sub_CommandButton_Click ce qui me semblait peu probable mais je teste. Si cela marche tant mieux sinon j'essaie autre chose mais au bout d'un moment je suis au pied du mur. Je vais maintenant regarder le delta ente cette nouvelle écriture et la dernière que tu m'avais fournie pour corriger mon adaptation. J'ai testé ta dernière écriture. comme je m'en doutais, l'erreur a l'air d'être bien corrigée.
Et bien sûr encore une fois merci ! Je me mets au travail !
A+
Je n'étais pas loin de la solution. En fait je pensais que le INIT() ne pouvait se mettre sur un bouton puisque c'est une initialisation de la feuille. J'avais copié le texte de la macro sous le Privat Sub_CommandButton_Click ce qui me semblait peu probable mais je teste. Si cela marche tant mieux sinon j'essaie autre chose mais au bout d'un moment je suis au pied du mur. Je vais maintenant regarder le delta ente cette nouvelle écriture et la dernière que tu m'avais fournie pour corriger mon adaptation. J'ai testé ta dernière écriture. comme je m'en doutais, l'erreur a l'air d'être bien corrigée.
Et bien sûr encore une fois merci ! Je me mets au travail !
A+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
27 janv. 2015 à 07:47
27 janv. 2015 à 07:47
Salut,
Le "delta" entre les deux versions se trouve à deux endroits :
Dans la
Tu avais ceci :
Maintenant tu as :
Et dans la
Tu avais ceci :
Et maintenant tu as :
Autrement dit, le changement de couleur ne se fait plus dans la Sub Worksheet_Change, mais dans la Function Colore.
Je vais te faire, dans la journée, une réponse complète expliquant le déroulement de ce code, ce sera plus clair ainsi, je pense.
Le "delta" entre les deux versions se trouve à deux endroits :
Dans la
Private Sub Worksheet_SelectionChange
Tu avais ceci :
Chemin = Colore(Target, 1, 0, Coul) If Chemin <> "" Then Range(Chemin).Interior.ColorIndex = Coul 'Colore la ligne Chemin = Colore(Target, 0, 1, Coul) If Chemin <> "" Then Range(Chemin).Interior.ColorIndex = Coul 'colore la diagonale \ Chemin = Colore(Target, 1, 1, Coul) If Chemin <> "" Then Range(Chemin).Interior.ColorIndex = Coul 'colore la diagonale / Chemin = Colore(Target, -1, 1, Coul) If Chemin <> "" Then Range(Chemin).Interior.ColorIndex = Coul
Maintenant tu as :
'Colore La Colonne Chemin = Colore(Target, 1, 0, Coul) 'Colore la ligne Chemin = Colore(Target, 0, 1, Coul) 'colore la diagonale \ Chemin = Colore(Target, 1, 1, Coul) 'colore la diagonale / Chemin = Colore(Target, -1, 1, Coul)
Et dans la
Function Colore(RngJoue As Range, pasH As Integer, PasV As Integer, Couleur As Integer) As String
Tu avais ceci :
'si le drapeau est levé, cela veut dire qu'on a rencontré la couleur du joueur 'donc on enregistre le "chemin" réalisé If Flag = True Then Colore = CheminTemp & Colore Else CheminTemp = ""
Et maintenant tu as :
'si le drapeau est levé, cela veut dire qu'on a rencontré la couleur du joueur 'donc on enregistre le "chemin" réalisé If Flag = True Then Range(CheminTemp & Colore).Interior.ColorIndex = Couleur: CheminTemp = "": Flag = False Else CheminTemp = ""
Autrement dit, le changement de couleur ne se fait plus dans la Sub Worksheet_Change, mais dans la Function Colore.
Je vais te faire, dans la journée, une réponse complète expliquant le déroulement de ce code, ce sera plus clair ainsi, je pense.
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
25 févr. 2015 à 17:22
25 févr. 2015 à 17:22
Bonjour pijaku,
Me revoilà. Non je n'ai pas abandonné. Mais j'ai fait une pause pendant un certain temps pour me vider la tête de ce jeu que j'essaie de refaire en vba. Voilà où j'en suis. J'ai fais quelques essais. Tout n'est pas parfait. Il reste encore des choses à faire mais où je bloque comme l'interdiction de cliquer sur une case déjà coloriée par un joueur.... le timer de la partie où je ne suis pas sûr du chrono que j'ai essayé de programmer .... et certainement des bugs à corriger que l'on rencontrera certainement lors de diverses parties. je travaille sur un 21 pouces alors je ne sais s'il sera en plein écran à son ouverture sur tous les écrans.
Voici le lien pour le fichier :
https://www.cjoint.com/c/EBzrzZk47uN
Dis moi ce que tu en penses. Tu vas certainement rigoler de mon code qui doit être sûrement perfectionné. Mais j'ai fait avec ce que je sais ou avec ce que j'essaies de savoir... encore beaucoup de travail.
A+
Me revoilà. Non je n'ai pas abandonné. Mais j'ai fait une pause pendant un certain temps pour me vider la tête de ce jeu que j'essaie de refaire en vba. Voilà où j'en suis. J'ai fais quelques essais. Tout n'est pas parfait. Il reste encore des choses à faire mais où je bloque comme l'interdiction de cliquer sur une case déjà coloriée par un joueur.... le timer de la partie où je ne suis pas sûr du chrono que j'ai essayé de programmer .... et certainement des bugs à corriger que l'on rencontrera certainement lors de diverses parties. je travaille sur un 21 pouces alors je ne sais s'il sera en plein écran à son ouverture sur tous les écrans.
Voici le lien pour le fichier :
https://www.cjoint.com/c/EBzrzZk47uN
Dis moi ce que tu en penses. Tu vas certainement rigoler de mon code qui doit être sûrement perfectionné. Mais j'ai fait avec ce que je sais ou avec ce que j'essaies de savoir... encore beaucoup de travail.
A+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
26 févr. 2015 à 12:34
26 févr. 2015 à 12:34
Salut moussaillon!
Je regarde ton fichier ce midi et reviens te donner des news.
Je regarde ton fichier ce midi et reviens te donner des news.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
26 févr. 2015 à 13:03
26 févr. 2015 à 13:03
Avant d'aller plus loin, il convient que tu corriges ceci. Il faut préciser, en VBA, le type de chacune des variables.
Exemple : Dans le Module de ta feuille Accueil tu déclares :
En procédant de la sorte, les variables non typées (a, b, c, d,..., nom, nom_joueur1,...) sont considérées comme Variant et non pas String ou Integer...
Il te faut modifier en remplaçant par :
Et ceci pour toutes tes procédures ou cela se produit.....
Exemple : Dans le Module de ta feuille Accueil tu déclares :
Private Sub acces_jeu_Click() Dim a, b, c, d, col, fin, i, j, l, x, y, compteur, reponse As Integer Dim ligne As Long Dim nom, nom_joueur1, nom_joueur2, nom_joueur3, nom_joueurlist As String
En procédant de la sorte, les variables non typées (a, b, c, d,..., nom, nom_joueur1,...) sont considérées comme Variant et non pas String ou Integer...
Il te faut modifier en remplaçant par :
Private Sub acces_jeu_Click() Dim a As Integer, b As Integer, c As Integer, d As Integer, col As Integer Dim fin As Integer, i As Integer, j As Integer, l As Integer, x As Integer Dim y As Integer, compteur As Integer, reponse As Integer Dim ligne As Long Dim nom As String, nom_joueur1 As String, nom_joueur2 As String Dim nom_joueur3 As String, nom_joueurlist As String
Et ceci pour toutes tes procédures ou cela se produit.....
mousaillon
Messages postés
55
Date d'inscription
jeudi 30 octobre 2014
Statut
Membre
Dernière intervention
3 mars 2016
1
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 avril 2015 à 10:51
2 avril 2015 à 10:51
Bonjour pijaku
Tout d'abord je m'excuse de n'avoir pu répondre plus tôt. D'une part je n'ai pas vu ta réponse car pas d'avertissement dans ma boîte mail et d'autre part parce que je suis pas mal occupé en ce moment. Je vais éplucher ce que tu m'as présenté et faire ce que tu m'as demandé. Merci
Tout d'abord je m'excuse de n'avoir pu répondre plus tôt. D'une part je n'ai pas vu ta réponse car pas d'avertissement dans ma boîte mail et d'autre part parce que je suis pas mal occupé en ce moment. Je vais éplucher ce que tu m'as présenté et faire ce que tu m'as demandé. Merci
20 déc. 2014 à 08:36
Merci déjà d'avoir répondu à ma demande. Mais pas d'emballement, je n'ai pas demandé à ce que l'on prenne les rênes du jeu. Je veux juste pouvoir réaliser par macro les 3 exemples que j'ai donnés. Il sera toujours temps d'aller chercher la presque perfection de ce jeu ultérieurement.
Bon we
20 déc. 2014 à 10:47
je n'ai pas demandé à ce que l'on prenne les rênes du jeu
Non tout à fait. Et ça n'est pas non plus le but de ma réponse.
d'aller chercher la presque perfection de ce jeu ultérieurement
Pas tout à fait.
En fait, la manière de le développer jusque dans le choix des variables va dépendre de ces questionnements que tu dois te poser.
J'ai bien conscience que c'est pour un but ludique, mais tant qu'à le faire, autant le faire bien non?