Bonjour,
Je réalise la programmation d'un petit jeu de stratégie assez simple mais qui me permet de me lancer dans VBA
J'ai réalisé la grande majorité de l'initialisation mais je tombe sur un os depuis 2 jours.
Je me limiterais au cas de 2 jours pour plus de visibilité
Voici la situation :
Pour lancer le jeu, je dois cliquer sur un bouton qui m'ouvre un Userform où je peux remplir les nom des Joueurs dans des zones de textes et cliquer sur un bouton qui lance un Sub de création de plateau et de tableau. Jusque là, pas de problème, j'obtiens bien ce que je veux.
( Les zones de textes se nomment : TextBoxJ1 et TextBoxJ2 )
Ma procédure créer 4 Feuilles :
"Plateau de jeu",
"TextBoxJ1.Text" (ici, je donne à la feuille le nom du Joueur 1),
"TextBoxJ2.Text" (Même chose mais pour le joueur 2),
"Conflit"
Dans les feuilles du Joueur 1 et 2, j'ai créé un tableau avec le référencement des unités (Nom, Position, Puissance).
Ces deux tableaux, situés sur des feuilles différentes, sont nommés "Unites_Rouge_J1" et "Unites_Bleu_J2"
Voici donc mon problème :
Dans la feuille "Conflit" Je souhaites regrouper dans un tableau l'ensemble des unités du Joueur 1 et 2
Je crée donc des entêtes Unités, Position, Puissance, Couleur
J'applique ensuite la formule suivante
<Range("A2").Select
ActiveCell.FormulaR1C1 = "=Unites_Rouge_J1[@[Nom_J1]]"
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A44"), Type:=xlFillDefault
Range("B2").Select
ActiveCell.FormulaR1C1 = "=Unites_Rouge_J1[@[Position_J1]]"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B44"), Type:=xlFillDefault
Range("C2").Select
ActiveCell.FormulaR1C1 = "=Unites_Rouge_J1[@[Puissance_J1]]"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C44"), Type:=xlFillDefault
Range("D2").Select
ActiveCell.FormulaR1C1 = "R"
Range("D2").Select
Selection.AutoFill Destination:=Range("D244"), Type:=xlFillDefault>
Tout fonctionne bien et j'ai bien mon tableau qui se rempli en reprenant les valeurs du tableau de Joueur 1
Cependant, quand j'écris ensuite
<Range("A45").Select
ActiveCell.FormulaR1C1 = "=Unites_Rouge_J2[@[Nom_J2]]"
Range("A45").Select
Selection.AutoFill Destination:=Range("A45:A87"), Type:=xlFillDefault
Range("B45").Select
ActiveCell.FormulaR1C1 = "=Unites_Rouge_J2[@[Position_J2]]"
Range("B45").Select
Selection.AutoFill Destination:=Range("B45:B87"), Type:=xlFillDefault
Range("C45").Select
ActiveCell.FormulaR1C1 = "=Unites_Rouge_J2[@[Puissance_J2]]"
Range("C45").Select
Selection.AutoFill Destination:=Range("C45:C87"), Type:=xlFillDefault
Range("D45").Select
ActiveCell.FormulaR1C1 = "B"
Range("D45").Select
Selection.AutoFill Destination:=Range("D4587"), Type:=xlFillDefault>
Dans les cellules qui sont censées afficher les Unités Bleu, j'ai le message d'erreur "#VALEUR!"
J'ai l'impression que c'est comme si Excel considérer que je continuais à étendre le tableau du Joueur 1...
J'ai essayé tout ce que je pouvais, et recherchais dans les forums mais je n'ai pas trouvé réponse à mon pied.
(J'ai essayé de définir les valeurs des Unités du Joueur 1 et 2 en tant que plage de données et pas en tant que tableau, changé la formule...)
Voici donc ma question :
Comment donner à une cellule la valeur d'une autre (c'est a dire que si je change la valeur de la cellule référence, l'autre change aussi (type de formule ("=B2" par exemple)) ?
j'ai essayé de faire comme cela
< ActiveCell.FormulaR1C1 = "=TextBoxJ2.Text!A2" >
Mais cela ne fonctionne pas et Excel m'ouvre l'explorateur Windows pour que j'actualise mes données TextBoxJ2.Text (qui correspond au nom du joueur)
Donc en soit la solution serait de donner à la feuille "TextBoxJ1.Text" et "TextBoxJ2.Text" toujours le nom "Joueur_1" et "Joueur_2", mais j'aimerai que les feuilles puissent se nommer comme le nom choisi par les joueurs.
J'espère avoir été assez explicite.
Désolé des fautes d'ortho et merci d'avance,
Wat
PS : Si vous pouvez me donner les balises à mettre autour du code pour qu'il s'affiche de manière plus esthétique, je suis preneur![]()
Partager