Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1919 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Pb de synthaxe pr colorer cellules en boucle avec une FUNCTION

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb de synthaxe pr colorer cellules en boucle avec une FUNCTION

n°2171712
noone1
Posté le 17-01-2013 à 21:20:43  profilanswer
 

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
mood
Publicité
Posté le 17-01-2013 à 21:20:43  profilanswer
 

n°2171722
vave
Nice to meet me
Posté le 18-01-2013 à 08:23:01  profilanswer
 

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
n°2171725
noone1
Posté le 18-01-2013 à 09:18:42  profilanswer
 

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
n°2171792
Marc L
Posté le 18-01-2013 à 19:53:00  profilanswer
 

 
              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

n°2171804
noone1
Posté le 19-01-2013 à 09:46:02  profilanswer
 

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
n°2171875
Marc L
Posté le 20-01-2013 à 00:36:38  profilanswer
 

 
              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 …
 

n°2171885
noone1
Posté le 20-01-2013 à 09:28:29  profilanswer
 

merci quand même...

n°2171934
vave
Nice to meet me
Posté le 20-01-2013 à 15:51:53  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Pb de synthaxe pr colorer cellules en boucle avec une FUNCTION

 

Sujets relatifs
petit pb de synthaxe pr mon code (colorer une cellule!)inscrire une formule dans une cellule
Référence à une cellule dans un fichier externeCellule fusionnée et xlEdgeRight
je veux commander ma carte son (ON/OFF) via un petit programme...[VBA] Créer une liste depuis une cellule
Un petit souci avec la login 
Plus de sujets relatifs à : Pb de synthaxe pr colorer cellules en boucle avec une FUNCTION


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR