Scrabble VBA

Bonjour / Bonsoir

Voilà , pour un projet à la FAC , je dois créer un scrabble duplicate sous excel VBA .

Je suis bloqué à une étape , la voici :

Je dois placer mon mot sur un chevalet (de 7 lettres) , lettre par lettre .

Ensuite, je dois sélectionner sur le plateau , les cases voulu pour la pose du mot .

Ensuite la macro dois vérifier le mot (ça normalement c'est OK ) , Compter les points , et le poser .

Il dois aussi vérifier que , lorsqu'il y a un autre mot dans sont sillage , que le mot déjà poser reste valide .

Aussi , je peux proposer une fin de mot , et le coller a une autre lettre , la macro dois donc vérifier le mot en entier .

Je met une image pour mieux comprendre :

1522161543785321049

Ici , je veux former ESSAIM , avec le E de palette , et SSAIM de mon chevalet .

Il dois donc former ESSAIM avec, vérifier s'il est valide , mais aussi vérifier que PLANETES et valide pour le coups .

DONC VOILA , c'est chaud quoi ...

Je suis conscient que c'est compliquer à comprendre et/ou à réaliser ....

J'aimerais déjà juste pouvoir poser dans un premier temps mon mot former sur le chevalet .

Merci d'avance , n'hésiter pas à me demander plus d'info

Bonjour,

voici un exemple à tester,

Sub Inscrire_Lettres()
Dim MyCol As New Collection
lettres = "SSAIM"
nb = Len(lettres)
texte = "Sélectionnez   " & nb & "   cases pour inscrire vos lettres!"
MyCol.Add Application.InputBox(texte, , , , , , , 8)
  If TypeOf MyCol(1) Is Range Then Set selectRange = MyCol(1) Else Exit Sub

x = selectRange.Columns.Count
If x <> nb Then Exit Sub

For i = 1 To Len(lettres)
ActiveSheet.Range(selectRange.Address)(i) = Mid(lettres, i, 1)
Next
End Sub

Ca marche NIQUEL !

J'ai adapter avec mon sujet et ça marche super bien

Par contre, j'ai un nouveau problème

Le joueur peut être amener à placer des lettres entre des mots déjà existant , pour former un mot .

(Par exemple , un mot entre la lettre L de palette et E de planete )

Du coup le joueur dois sélectionner la case (ou les) a gauche de L , entre L et E , et a droite de E.

Avec la solution si dessus, ça ne marche pas .

Est -il possible de récupérer la valeur de la première case et de la dernière case sélectionnée , pour reformer une grande sélection ?

Bonjour,

voici la correction pour une plage de cellules discontinue,

Sub Inscrire_Lettres()
Dim MyCol As New Collection
lettres = "SSAIM"
nb = Len(lettres)
texte = "Sélectionnez   " & nb & "   cases pour inscrire vos lettres!" & Chr(10) & _
"Utiliser la touche CTRL pour sélectionner une plage de cellules discontinue"

MyCol.Add Application.InputBox(texte, , , , , , , 8)
  If TypeOf MyCol(1) Is Range Then Set selectRange = MyCol(1) Else Exit Sub

x = selectRange.Cells.Count
If x <> nb Then Exit Sub

For Each c In selectRange
 i = i + 1
 ActiveSheet.Range(c.Address) = Mid(lettres, i, 1)
Next
End Sub

MAIS QU'EST CE QUE J'AURAIS FAIS SANS TOI xDD

Merci beaucoup , vraiment là tu me sauve la vie xD

Dernière question, comment je récupère les coordonnées de mes cellules ?

Encore merci

Bonjour,

si c'est pour être utilisé dans une autre macro,

tu pourrais mettre ces adresses dans une variable tableau,

par exemple:

'déclarer la variable tableau "ListSelectRange" dans le haut du module1
Public ListSelectRange()

Sub Inscrire_Lettres()
Dim MyCol As New Collection
lettres = "SSAIM"
nb = Len(lettres)
texte = "Sélectionnez   " & nb & "   cases pour inscrire vos lettres!" & Chr(10) & _
"Utiliser la touche CTRL pour sélectionner une plage de cellules discontinue"

MyCol.Add Application.InputBox(texte, , , , , , , 8)
  If TypeOf MyCol(1) Is Range Then Set selectRange = MyCol(1) Else Exit Sub

x = selectRange.Cells.Count
If x <> nb Then Exit Sub

For Each c In selectRange
 i = i + 1
 ActiveSheet.Range(c.Address) = Mid(lettres, i, 1)
 ReDim Preserve ListSelectRange(i)
 ListSelectRange(i) = c.Address
Next
End Sub

Pour le ReDim preserve , il m'affiche :

Erreur compilation Attendu : Identificateur .

Qu'est ce que c'est ?

(PS : j'utilise un option explicit)

(PS : j'utilise un option explicit)

il faut déclarer la variable i

ajouter à la macro

Dim i As Integer

Encore une erreur ...

Je t'envoie l'erreur et mon code :

15223306911479304875

Re Bonjour !

J'ai trouver une autre solution

La voici :

 
Sub Coordonnées_sélection()

        LigneDebut = Selection.Row
        LigneFin = ActiveCell.Row

        ColonneDebut = Selection.Column
       ColonneFin = ActiveCell.Column

       If LigneDebut = LigneFin Or ColonneDebut = ColonneFin Then
            Cells(10, 45).Value = LigneDebut
            Cells(10, 46).Value = ColonneDebut

            Cells(11, 45).Value = LigneFin + Selection.Rows.Count - 1
            Cells(11, 46).Value = ColonneFin + Selection.Columns.Count - 1
        Else
            Cells(10, 45).Value = LigneDebut
            Cells(10, 46).Value = ColonneDebut

            Cells(11, 45).Value = LigneFin
            Cells(11, 46).Value = ColonneFin
       End If
End Sub

Encore merci ^^

Edit : J'ai trouver tout compte fais , c'est pas le meilleur je suppose, mais ça marche !

Rechercher des sujets similaires à "scrabble vba"