créer une sphere dans un tableau

créer une sphere dans un tableau - VB/VBA/VBS - Programmation

Marsh Posté le 13-01-2007 à 15:20:42    

Bonjour,
 
Cela fait quelques temps que je suis pas venu ici  :hello:  
 
Voila mon problème :
 
j'ai un tableau et j'aimerais que la dernière ligne renvoi à la première (et inversement). De même pour les colonnes, la colonne de gauche renvoi a la colonne de droite et vice versa.
 
Je sais pas si j'ai etais assez clair et comprehensif ?
 
Enfaite, le programme prend chaque case du tableau et verifie les 8 case qui l'entoure, donc si la case est tout a droite, je voudrait qu'il regarde  tout a gauche.
 
http://pix.nofrag.com/7f/be/6bcc7dc267d3fcebb0e3a14ad9d4.jpg
Donc là, c'est la case jaune qui est selectioné et en rouge, ce sont les case qui sont verifiées.
 
merci d'avance :jap:

Reply

Marsh Posté le 13-01-2007 à 15:20:42   

Reply

Marsh Posté le 13-01-2007 à 18:15:50    

Bonjour,
 
On appelle aussi cela un tableau torique.
Il faut tester les cas où les limites sont dépassées. Si c'est le cas, alors il faut pointer au début de l'autre extrémité.
Pour éviter quelques tests, il est possible d'utiliser la fonction modulo dans quelques cas, mais le programme sera peut-être un peu moins lisible.

Reply

Marsh Posté le 13-01-2007 à 18:57:27    

Alors de façon litteraire, ça voudrait dire ceci :
 
Imaginons que mon tableau aille de A à E (on vera les ligne plus tard)
 
Si je regarde en F alors je revien en A ? mais à gauche de A ca s'appel comment ? c'ests pas possible comme ca

Reply

Marsh Posté le 13-01-2007 à 20:10:38    

j'ai ca (sachant que le tableau est de 16 par 37 cases :  
 

Code :
  1. For k = (i - 1) To (i + 1)
  2.     For l = (j - 1) To (j + 1)
  3.        
  4.         If Cells(k, l).Interior.ColorIndex = 6 Then
  5.             compte_voisin = compte_voisin + 1
  6.         End If
  7.                
  8.     Next l
  9. Next k


 
Et donc quand i = 1, comme il y a - 1 cela fait 0 et donc il doit regarder a gauche de A, mais c'est pas possible :/ (pareil pour j)
 
 
donc moi j'avais pensé a ceci :
 

Code :
  1. If k = 0 then
  2. k = 16
  3. elseif k = 17 then
  4. k = 1
  5. end if
  6. If l = 0 then
  7. l = 37
  8. elseif l = 38 then
  9. l = 1


 
mais ca boucle sans fin :(

Reply

Marsh Posté le 13-01-2007 à 21:57:07    

Bonsoir,
Normal, tu touches aux indices de ta boucle.
fais m=k et n=l
fais tes tests sur m et n
if m = 0 then m= 16
if m=17 then m =1
etc..etc..
 
remplaces cells(k,l)  par cells(m,n)
 
Cordialement
Remarque: dans ta boucle tu prends en compte la cellule "centrale", est-ce voulu?


Message édité par seniorpapou le 13-01-2007 à 22:00:29
Reply

Marsh Posté le 13-01-2007 à 23:03:45    

non, je veut pas la prendre en compte donc je suis obliger après de faire  
 

Code :
  1. If Cells(i, j).Interior.ColorIndex = 6 Then
  2.     compte_voisin = compte_voisin - 1
  3. End If


 
Mais je vais essayer de remplacer les variable comme tu m'a dit.
 
merci :jap:

Reply

Marsh Posté le 13-01-2007 à 23:21:57    

C'est bon ca marche :)
 
merci

Reply

Sujets relatifs:

Leave a Replay

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