[VBA Excel] Bataille navalle

Bataille navalle [VBA Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 31-07-2009 à 16:11:59    

Bonjour,  
 
En gros mon problème se ramène à un jeu de bataille navale.
Dans un classeur, j'ai un tableau en plein milieu de ma page avec les colonnes A, B, C.. et des lignes 1, 2, 3...
 
Dans un autre classeur j'ai une liste de coordonnées : A1, C2, D5...
Mais cette liste peut changer.
 
Et j'aimerai cocher ces cases là dans mon tableau.
 
Merci d'avance.

Reply

Marsh Posté le 31-07-2009 à 16:11:59   

Reply

Marsh Posté le 31-07-2009 à 17:03:32    

mets un X dedans


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 31-07-2009 à 17:13:47    

jagstang a écrit :

mets un X dedans


Rhoo putain, je cherchais un truc à dire mais j'ai bien fait de m'abstenir, j'aurais pas fait mieux que ça !


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 31-07-2009 à 17:16:57    

Turkleton a écrit :


Rhoo putain, je cherchais un truc à dire mais j'ai bien fait de m'abstenir, j'aurais pas fait mieux que ça !


:D
 
Ben disons que dans un premier temps c'est ce qui me vient à l'esprit. Après pour peaufiner y'a toujours moyen de s'amuser


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 31-07-2009 à 17:33:24    

jagstang a écrit :

Après pour peaufiner y'a toujours moyen de s'amuser


Maiwai, déjà, on peut dés-optimiser un peu ton code là. Moi je ferais plus un truc du genre "Cells(col, lig) = Chr(88)".
Mais ça n'engage que moi [:julm3]


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 03-08-2009 à 09:38:15    

Merci jagstang et turkleton... je n'y avait pas pensé!!
 
Sinon je n'ai peut-être pas été assez clair dans l'explication de mon problème mais dans ce cas là, je pense que ya un autre moyen de me le dire sans passer par de vieilles blagues plutôt médiocres...
 
Merci d'avance

Reply

Marsh Posté le 03-08-2009 à 11:17:16    

kumasan a écrit :

Merci jagstang et turkleton... je n'y avait pas pensé!!
 
Sinon je n'ai peut-être pas été assez clair dans l'explication de mon problème mais dans ce cas là, je pense que ya un autre moyen de me le dire sans passer par de vieilles blagues plutôt médiocres...


L'explication de l'énoncé était plutôt claire, mais l'explication de ton problème, je cherche encore.
 
Soit c'est

kumasan a écrit :

Et j'aimerai cocher ces cases là dans mon tableau.

alors nos réponses sont valides, soit c'est

kumasan a écrit :

En gros mon problème se ramène à un jeu de bataille navale.

et ça ressemble furieusement à une demande pour faire ton exercice à ta place, et alors nos réponses sont valides également, vu que ça ne mérite pas grand chose d'autre... [:hephaestos]  
 
Si tu as réellement un problème dans l'exécution de ton code, ou même dans sa conception, nous serons ravis de t'aider, pour peu que tu nous dises ce qui ne fonctionne pas.


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 03-08-2009 à 11:35:57    

Ok...au moins cette fois je comprend ce qui n'allait pas.
 
Dans un fichier j'ai deux colonnes :  
- une avec la colonne de la case à cocher
- l'autre avec la ligne
 
j'ai réussi à récupérer ces coordonnées dans des vecteurs  :

Code :
  1. For i = 1 To 1
  2.     ReDim Preserve colonne(i)
  3.     ReDim Preserve ligne(i)
  4.     colonne(i) = Range("A1" ).Offset(i - 1)
  5.     ligne(i) = Range("B1" ).Offset(i - 1)
  6. Next i


 
ensuite dans mon autre fichier où je dois cocher mes cases, j'arrive à selectionner la colonne entière avec le même nom de colonne et pareil avec la ligne :  
 

Code :
  1. With Range("b6:dr24" )
  2.       Set c = .Find(colonne(i), LookIn:=xlValues)
  3.       Set l = .Find(ligne(i), LookIn:=xlValues)
  4.       c.EntireColumn.Select
  5.       l.EntireRow.Select
  6. end with


 
et le problème c'est que j'aimerai trouver l'intersection de ces deux plages et mettre une croix dedans... et ce pour chaque coordonnées.
J'ai pensé à Intersect mais j'obtiens un message d'erreur.
 
Merci

Reply

Marsh Posté le 03-08-2009 à 11:37:28    

j'avais essayé :  
 
Intersect(c.EntireColumn.Select, l.EntireRow.Select)


Message édité par kumasan le 03-08-2009 à 11:37:53
Reply

Marsh Posté le 03-08-2009 à 11:49:32    

Cells(l.Row, c.Column).Select ? Je peux pas tester mais ça doit être un truc dans le style.


Message édité par Turkleton le 03-08-2009 à 11:55:17

---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 03-08-2009 à 11:49:32   

Reply

Marsh Posté le 03-08-2009 à 11:56:08    

Encore une fois, c'était tout bête..  
Ca a l'air de marcher.
Merci

Message cité 1 fois
Message édité par kumasan le 03-08-2009 à 11:57:55
Reply

Marsh Posté le 03-08-2009 à 11:57:11    

kumasan a écrit :

Il me dit "incompatibilité de type"...


Tes "c" et "l" sont déclarés comment ? Ce sont des objets de type Range ?
 
EDIT : un petit test s'impose  

Code :
  1. If Not c Is Nothing And Not l Is Nothing Then
  2.      ...
  3.    Else
  4.      MsgBox "Valeur non trouvée"
  5.      End If


ton incompatibilité de type vient peut-être du fait que c ou l sont vides.


Message édité par Turkleton le 03-08-2009 à 12:01:12

---------------
If you think it could look good, then I guess it should
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed