Optimisation de formule ou macro pour le calcul d'une clé avec condition

17calcul-de-x.xlsb (10.38 Ko)

Bonjour à Tous,

J’ai besoin de votre aide pour une optimisation de calcul ou de formule

Je cherche une valeur X, c’est une clé

Pour la calculer on doit faire une série de gymnastique, mais on arrive à un résultat

Mais je n’arrive pas automatiser le tout

Là où je perds du temps, durant le parcours, je dois m’arrêter pour faire « une différence d’un résultat avec la dizaine supérieure sachant que si le résultat est égal a 10 la clé prend la valeur 0 »

Voilà là je bug, je ne sais pas encore optimiser cela donc je le fais en 2 étapes

Sur le fichier Excel j’explique mes étapes de calculs pour arriver au résultat de la clé

Qui pourrait m’optimiser cela s’il vous plait ?

En vous remerciant

Bonjour Samexel,

Comme le classeur est ".xlb", avec une petite fonction VBA

Function GetKey(Cel As Range)
  Dim Result As String, sVal As String, sVal5 As String
  Dim SomPair As Integer, SomImpair As Integer, TotalSom As Integer
  Dim CalX As Integer, Ind As Integer
  ' Valeur de l'étape 5
  sVal5 = Mid(Cel, 11, 12)
  ' Valeur à traiter pourle calcul
  sVal = Mid(sVal5, 3, 10)
  ' Chiffres de rang pair
  For Ind = 10 To 1 Step -2
    SomPair = SomPair + Val(Mid(sVal, Ind, 1))
  Next Ind
  SomPair = SomPair * 3
  ' Chiffres de rang impair
  For Ind = 9 To 2 Step -2
    SomImpair = SomImpair + Val(Mid(sVal, Ind, 1))
  Next Ind
  ' Total des sommes
  TotalSom = SomPair + SomImpair
  ' Calcul de X
  CalX = Round((TotalSom / 10), 0) * 10
  CalX = CalX - TotalSom
  ' Résultat
  Result = sVal5 & CalX
  GetKey = Result
End Function

@+

bonjour à tous,

formule pour la colonne AW

=SI(MOD(AV3;10)=0;0;10-MOD(AV3;10))

la formule pour AW marche tres bien, un grand merci

pour la fonction VBA , ell est supersonique ; juste un bug sur des essais que je viens de faire, ci joint le fichier mais c'est LA fonction indispensable

13calcul-de-x-1.xlsb (12.27 Ko)

Re,

C'est juste le problème d'arrondi et le test si pas égal à 10

Function GetKey(Cel As Range)
  Dim Result As String, sVal As String, sVal5 As String
  Dim SomPair As Integer, SomImpair As Integer, TotalSom As Integer
  Dim CalX As Integer, Ind As Integer
  ' Valeur de l'étape 5
  sVal5 = Mid(Cel, 11, 12)
  ' Valeur à traiter pourle calcul
  sVal = Mid(sVal5, 3, 10)
  ' Chiffres de rang pair
  For Ind = 10 To 1 Step -2
    SomPair = SomPair + Val(Mid(sVal, Ind, 1))
  Next Ind
  SomPair = SomPair * 3
  ' Chiffres de rang impair
  For Ind = 9 To 2 Step -2
    SomImpair = SomImpair + Val(Mid(sVal, Ind, 1))
  Next Ind
  ' Total des sommes
  TotalSom = SomPair + SomImpair
  ' Calcul de X avec arrondi supérieur
  CalX = Application.WorksheetFunction.RoundUp((TotalSom / 10), 0) * 10
  CalX = CalX - TotalSom
  ' Vérifier que CalX n'est pas égal à 10, sinon 0
  If CalX = 10 Then CalX = 0
  ' Résultat
  Result = sVal5 & CalX
  GetKey = Result
End Function

ca devrait être mieux

@+

Ma - gni - fique ,

c'est top, terrifiante d’efficacité,

vous ne pouvez imaginer l’épine du pieds que vous m'enlevez, c'est un cactus meme

Merci infiniment, pour tout et pour la dispo et la réponse rapide

passez une bonne soirée, et un bon weekend

merci a H2SO4 aussi, ah H2SO4 ca me rappelle les années Fac c'etait juste smeno ou mnef, avec en labo des 80286 et les canettes de coca qu'on passaient au vortex, que le temps passe vite...

je vous souhaite a tous de bonne fêtes,

prenez soin de vous et de vos proches, en valeur absolue il n'y a que ca de vrais

encore merci, un grand merci

Sam

Rechercher des sujets similaires à "optimisation formule macro calcul cle condition"