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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Excel : passer un range "complexe" à une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Excel : passer un range "complexe" à une fonction

n°2253761
Gusdabo
Posté le 20-03-2015 à 11:56:05  profilanswer
 

salut,
 
je cherche à effectuer des opérations sur les cellules d'un range dans une fonction personnalisée (via un array en l'occurence mais on s'en fout).
 

Code :
  1. Function ssabs(zr As Range) As Double
  2. Dim zz As Variant
  3. Dim zt()
  4. zt = zr.Value
  5. For Each zz In zt
  6.    'opérations à effectuer
  7. Next
  8. End Function


 
Cela marche bien si je lance sur un range simple genre "A1:C10" mais tout s'arrête si j'essaie de le faire avec un range plus compliqué comme "A1:B5;C1:C10" => il y a un ";" je pense qu'excel interprète cela comme un 2è argument et la fonction ne le prévoyant pas ca merdoit.
 
Vous auriez une idée pour y arriver ?
 
Merci par avance


Message édité par Gusdabo le 20-03-2015 à 16:33:49
mood
Publicité
Posté le 20-03-2015 à 11:56:05  profilanswer
 

n°2253778
Marc L
Posté le 20-03-2015 à 14:33:13  profilanswer
 

 
           Bonjour,
 
           il y a une icône dans l'éditeur de message pour baliser le code !
 
           Comme la fonction ne renvoie rien elle a plutôt l'air d'une procédure !   Conception à revoir …
 
           Et comme une boucle est souvent inutile pour modifier une plage de cellules, quelles sont les opérations ?
 
           __________________________________________________________________________________________
           Je suis Charlie  -  Je suis Bardo
 

n°2253799
Gusdabo
Posté le 20-03-2015 à 16:31:58  profilanswer
 

Il s'agit de faire la somme des valeurs absolues des nombres compris dans le range. Il me semble qu'il faut bien une fonction, donc, le but étant de récupérer cette somme dans une cellule.
 
J'ai modifié un peu le code, fait rapidement tout à l'heure : mon array doit contenir les valeurs et non les cellules..
 
Dans la boucle j'aurai juste :
sabs = sabs + abs(zz)
 
J'avais voulu enlever mon opération particulière pour donner un caractère + général.
 
Merci par avance


Message édité par Gusdabo le 20-03-2015 à 16:32:41
n°2253835
Marc L
Posté le 21-03-2015 à 02:00:54  profilanswer
 

 

Code :
  1. Function dAbs#(ParamArray PA())
  2. For Each R In PA
  3.     For Each V In R:  dAbs = dAbs + Abs(V.Value):  Next
  4. Next
  5. End Function

 


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

  Excel : passer un range "complexe" à une fonction

 

Sujets relatifs
[EXCEL] problème avec SendKeys pour envoyer un pipe "|" vers PuttyIncrementer en fonction de l'année
Excel: copie depuis fichiers multiples vers un classeur de statsmacro excel de verification
Formules Excelsyntaxe error avec range
[Excel 2010] Macro pour copier des graphiques dans Word[Excel] Macro copie de fichiers .tsv
Charger dynamiquement une fonction avec greasmonkeyCréer une fonction acceptant divers arguments en C
Plus de sujets relatifs à : Excel : passer un range "complexe" à une fonction


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