Pb de synthaxe pr colorer cellules en boucle avec une FUNCTION

Pb de synthaxe pr colorer cellules en boucle avec une FUNCTION - VB/VBA/VBS - Programmation

Marsh Posté le 17-01-2013 à 21:20:43    

ras le ' du vba...
 
si une âme charitable veut bien m'expliquer,
 
alors on va faire tout simple, je voudrais juste colorer l'intérieur de qq cellules :  
 

Code :
  1. option explicit
  2. Function toto()
  3. Dim i%, j%, sh As Range
  4. For i = 7 To 23 Step 4
  5.     For j = 5 To 29 Step 4 'E to AC
  6.         set sh=activesheets.Cells(i, j)
  7.         sh.Interior.ColorIndex = 48
  8.     Next j
  9. Next i
  10. End Function


 
et je tape =toto() dans une cellule. Et ben nom, même ça, ça ne passe pas  :pt1cable:
alors que si je la déclare en sub, ça marche   :heink:  :cry:


Message édité par noone1 le 18-01-2013 à 09:42:04
Reply

Marsh Posté le 17-01-2013 à 21:20:43   

Reply

Marsh Posté le 18-01-2013 à 08:23:01    

Une fonction est censée te renvoyer un résultat, pas d'effectuer des actions.
Je ne comprend pas l'intérêt de ce que tu veux faire :??:


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 18-01-2013 à 09:18:42    

c'est vrai que c'est plus naturel pour moi d'utiliser une fonction qu'une sub associée à un bouton même si c'est excel. Ceci dit, cette fonction sera rentrer dans plusieurs cellules avec un résultat différents suivant son emplacement.  
Je pourrais toujours passer un argument dans la fonction, genre appeler toto(sh as range) ou toto(x as long, y as long) et la déclarer comme ceci :  
 
function toto() as boolean
...
toto = true
end function
 
j'aimerais juste comprendre pourquoi ce code ne marche pas en tant que fonction et de fait trouver comme faire pour qu'il fonctionne sous cette forme. Sinon, donc, il suffit d'ajouter
 
sub titi()
    call toto
end sub
 
par exemple, ça marchera mais cette forme ne convient pas à mon traitement, je ne veux pas de bouton à cliquer, juste faire des calculs et mettre en surbrillance certaines cellules selon les résultats (dans les boucles for j'inclue par la suite une fonction sur sh.value)
 
voilà, j'ai du mal à comprendre pourquoi ce ne serait pas possible, je ne comprends pas cette différence de traitement, du moins comment écrire ma fonction pour qu'elle fonctionne, seule...


Message édité par noone1 le 18-01-2013 à 09:33:37
Reply

Marsh Posté le 18-01-2013 à 19:53:00    

 
              Pour modifier l'apparence d'une cellule selon son résultat, mieux vaut utiliser la mise en forme conditionnelle.
 
              Une autre astuce en VBA est de faire appel à un évènement comme par exemple Worksheet_Change

Reply

Marsh Posté le 19-01-2013 à 09:46:02    

merci,  
 
mais la MFC ça ne m'arrange pas du tout, les évènement on change encore moins, il faudrait que je la mette en place pour toutes les cellules de ma feuille (~12x900) sachant qu'en plus la formule de condition change d'une colonne à l'autre ainsi qu'au sein d'une même colonne. (Par exemple dans la 1ere je test si les valeurs appartiennent a des domaines [ai, bi], dans la 2eme je recalcule une fonction pour certains domaines, dans la 3eme je commence, dans les dernières je fais des intersections entre certaines colones, et recalcule d'autres fonction, etc...).
 
j'ai même trouvé plus simple avec foreach cel in union(range1, range2, etc..) mais ça marche pas en 'function', juste en sub et je ne comprends pas pourquoi car la seule différence que je vois c'est que dans un cas il faut passer par un bouton à cliquer (je vais pas en mettre une 10ne sur ma feuille!) et pas l'autre, alors que j'ai d'autres fonctions qui 'fonctionnent' très bien en tant que 'function', mais pas celle-là.... :pt1cable: .
 
Bref, pour l'instant, je voudrais juste, à l'aide d'une fonction, repérer certaines valeurs dans un range. Les fonctions je l'ai, j'aurais juste besoin que l'on m'explique comment la faire fonctionner en 'function' et pas en 'sub' car les cellules contiennent déjà des formules et la feuilles des sub, j'ai besoin de travailler en amont des valeurs résultantes présentes dans mes matrices.
 
merci


Message édité par noone1 le 19-01-2013 à 10:00:39
Reply

Marsh Posté le 20-01-2013 à 00:36:38    

 
              Pour moi en fonction VBA appelée via une cellule d'une feuille, cela va être très difficile pour ne pas dire quasi impossible …
 

Reply

Marsh Posté le 20-01-2013 à 09:28:29    

merci quand même...

Reply

Marsh Posté le 20-01-2013 à 15:51:53    

Pourquoi tu ne mettrais pas un bouton dans une barre d'outil qui serait valable pour la feuille active ?


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Sujets relatifs:

Leave a Replay

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