Opérations mathématique sous VBA

Linkmojo Messages postés 175 Date d'inscription   Statut Membre Dernière intervention   -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Merci pour les réponses aux précédentes questions je touche au but mais je rencontre une dernière difficulté.

Je dois faire des opérations mathématiques entre plusieurs variables (2 ou 3), mais l'opérateur mathématique peut être soit "+" soit "- soit "*" ou soit "/".

J'aimerai savoir comment programmer cela dans vba car mis à part faire un select case avec une dizaine de possibilité, ce qui ne serait pas très propre niveau programmation, je ne vois pas comment faire.

J'ai essayé de faire :

Range("Celluled'arrivée").value = "=" & Range("Valeur1").value & opérateur1 & Range("Valeur2").value

mais excel me mets une erreur.

Et quand je mets:

Range("Valeur1").value & opérateur1 & Range("Valeur2").value

J'ai dans la cellule d'arrivée les deux valeurs avec un "+" au milieu mais l'opération mathématique ne se fait pas (vu qu'il n'y a pas un égal au début)

Edit : l'opérateur est pour l'instant dim opérateur as "string" je pense que s'il existe un dim répertoriant les différentes formules mathématiques je suis sauvé mais je ne l'ai pas trouvé.

Merci d'avance.
A voir également:

4 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour à tous les deux

Restons Zen, Patrice t'a simplement donné un très bon conseil

Un début de réponse peut être à ton problème

Public Function Calcul(plage As Range)
Dim cel As Range, f As String
f = ""
For Each cel In plage
f = f & cel.Value
Next cel
Calcul = Application.Evaluate(f)
End Function

Bon après midi

Cdlmnt
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
bonjour

en lisant "evaluate" écrit par ccm81 (avec un salut amical et respectueux), je me suis dit que...

pour calculer par ex (B2*B3 )/B4 +b5

calcul = Evaluate("(" & "B2" & "*" & "B3" & ")" & "/" & "B4" & "+" & "B5")
et en utilisant des variables
plus = "+"
moins = "-"
multi = "*"
divis = "/"
calcul = Evaluate("(" & "B2" & multi & "B3" & ")" & divis & "B4" & plus & "B5")

maintenant on peut regrouper ces 4 variables dans une variable "Type"
en amont des sub machin()
type operateur 
plus as string*1
Moins as string*1
Multi as string*1
Divis as string*1
end type

Tu peux ajouter d'autres opérateurs : puissance, racine, log....
sub machin()
Dim XY as operateur

xy_plus="+"
xy_moins="-"
...etc

calcul=Evaluate("(" & "B2" & xy.multi & ..... la flemme

mais quel le but de ta demande car ça me parait un peu bizarre ou mal expliqué (sans que je te prenne de haut...Aie!, non, pas sur la tête, Aie!) ;o)

et un Bonjour également amical et respectueux à Patrice, toujours de bon conseil ;o)
Michel
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour Linkmojo,

Milles excuses pour le temps que j'ai passé à te faire perdre le tien et sans rancune ...

Merci à ccm81 et à Michel_m pour leur soutien (amitiés à vous deux) et surtout pour avoir poursuivi ce fil pendant mon absence.

Vos solutions sont bien plus élaborées que celle que j'aurais proposé et qui a pu me faire croire, à tort, que Linkmojo ne possédait pas les bases élémentaires du VBA, à savoir :

Tout simplement remplacer :
Range("Celluled_arrivée").Value = "=" & ....
.
Par :
Range("Celluled_arrivée").Formula = "=" & ...
.

Éventuellement suivi de :
Range("Celluled_arrivée").Value= Range("Celluled_arrivée").Value
.
pour remplacer la formule par sa valeur.

Patrice
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Notre ami Linkmojo a changé de Pseudo et s'appele "Attilaa" sur developez.com LE 26/7, donc avant que Patrice lui réponde et provoque son courroux :oD
https://www.developpez.net/forums/d1459946/logiciels/microsoft-office/excel/macros-vba-excel/operations-mathematiques-sous-vba/
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Salut Michel,

Content d'apprendre que le sujet continue à intéresser Linkmojo-Attilaa!
Et là j'hésite entre :-) et :-(

Bon après midi à toi et à Patrice
0