Formule en macro

bonjour a toutes et a tous

est il possible de convertir une formule excel en macro vba pour excel?

car j'ai une formule longue et elle n'est pas finie (elle va avoir plus de 8 conditions)

merci d'avance

Bonjour

Oui c'est possible mais peut-être pas obligatoire

Quelques fois il suffit de "repenser" à la formule pour voir si pas une autre manière de la faire

Des spécialistes & formulas sont ce site et qui sait

Il faudrait avoir ta formule

OK

je vous l'envoies de suite

"=SI(OU(ET(F3="longueur";F4="largeur";OU(F5="épaisseur";F5="hauteur"));F5="volume");"m3";SI(OU(ET(OU(F4="longueur";F4="largeur");OU(F5="largeur";F5="épaisseur";F5="hauteur"));F5="surface");"m²";SI(OU(F5="longueur";F5="HO";F5="DO";F5="R";F5="largeur");"ML";SI(ET(F5="nombre";F4<>"");H4;SI(ET(F5="nombre";F4="");"U";SI(F5="ratios d'acier S";"kg/m²";SI(F5="ratios d'acier V";"kg/m3";SI(F5="poids";"kg";""))))))))"

il se peut que je doives rajouter des unités supplémentaires

encore merci

Bonjour,

Une telle ligne ne se "convertit" pas en VBA il convient de repenser complètement le problème en multiple "conditions élémentaires"

Sub blabla()
Dim Y As Booléen
Dim Y1 As Booléen
Dim Y2 As Booléen
Dim Y3 As Booléen
. . .
Dim Y27 As Booléen

Y1 = F3="longueur" And F4="largeur" And F5 ="hauteur"
Y2 =F5="épaisseur" Or F5="hauteur"
Y3 = Y1 Or Y2

et ainsi de suite jusqu'à ce que tu aies épuisé toutes les assemblages possibles

et à la fin tu fais un dernier

Dim Y = Y3 Or Y6 Or Y9 Or . . .

Puis :

Select Case Y
Case Y3 : var = "m3"
Case Y6 ; var = "m"
Case Y9 . . .
End Select

Enfin (par exemple)

ActiveCell = var

Euh... tu a suivi ?

A+

je suis très novice

C'est pas de la macro pour novice hein ! tu vas pas rigoler quand il faudra rajouter des conditions...

il me faut le nom de la feuille ou s'applique la formule

il me faut l'adresse de la cellule ou s'applique la formule.

Il faut également savoir si la formule doit être incrémentable vers la droite ou vers le bas ou si elle est à usage unique.

A+

le nom de la feuille "quantitatif"

l'adresse de la cellule "colonne H"

la formule doit être incrémentable vers le bas

Colonne H n'est pas l'adresse de la cellule ou tu as écris cette formule :

l'adresse d'une cellule c'est H3, H4 ou H5...

OK

désole

la première c'est H4 et suivantes en descendant

Bonsoir,

Voici une fonction personnalisée qui fait ce que tu demandes. Code à coller dans un module "Standart" (Module1) :

DefBool Y
Function XYZ(x As Range, y As Range, z As Range)
 Var$ = ""
  Y1 = z = "épaisseur" Or z = "hauteur"
  Y2 = x = "longueur" And y = "largeur" And Y1
  Y3 = z = "volume"
Y4 = Y2 Or Y3
  Y5 = z = "largeur" Or z = "épaisseur" Or z = "hauteur"
  Y6 = y = "longueur" Or y = "largeur"
  Y7 = Y5 And Y6
Y8 = Y7 Or z = "surface"
Y9 = z = "longueur" Or z = "HO" Or z = "DO" Or z = "R" Or z = "largeur"
Y10 = z = "nombre" And y <> ""
Y11 = z = "nombre" And y = ""
Y12 = z = "ratios d'acier S"
Y13 = z = "ratios d'acier V"
Y14 = z = "poids"
Y0 = Y4 Or Y8 Or Y9 Or Y10 Or Y11 Or Y12 Or Y13 Or Y14
If Y0 = True Then
Select Case Y0
Case Y4: Var = "m3"
Case Y8: Var = "m2"
Case Y9: Var = "ML"
Case Y10: Var = H4
Case Y11: Var = "U"
Case Y12: Var = "kg/m2"
Case Y13: Var = "kg/m3"
Case Y14: Var = "kg"
End Select
End If
XYZ = Var
End Function

En H4 Ecrire :

=XYZ(F3;F4;F5)Euh... Tu vas surement être déçu car le résultat ne correspond surement pas à ton attente, cependant je ne pense pas pas avoir commis d'erreur de transcription.

Important : Le module ne doit pas comporter la mention Option Explicit en tête.

A+

merci a toi

Rechercher des sujets similaires à "formule macro"