Macro calcul excel

Résolu
chtilensois71 -  
 chtilensois71 -
Bonjour,

dans un fcihier excel, j'ai actuellement un calcul pour lequel je rentres une données manuelles (ex 10) que j'incrementes de 1 en fonction de mon résultats (1 seul case).
Est-il possible de créer une macro ou une formule qui incremnete automatiquement sir mon résulatst est faux?
merci d'avance

10 réponses

  1. Patgnr
     
    Bonjour chtileensois,

    Tu as dû certainement écrire ton texte rapidement ou tu as un problème avec ton clavier.
    Il est difficile de comprendre ce que tu souhaites quand tu écris "une données manuelles". Doit-on penser à une donnée manuelle ou à des données manuelles? De quel résultat, quelle case?
    Essaye de te mettre à la place de tes lecteurs. On veut bien t'aider, mais prends un peu plus de temps pour bien poser ton problème ou envoie un fichier à http://www.cijoint.fr

    Cordialement mon sir
    0
    1. chtilensois71
       
      bonjour,

      désolé pour le texte, mais pas facile de taper avec ma fille de 2 ans qui touche à tout.
      Bref, pour reexpliquer:
      dans une feuille de calcul Excel, je rentres une valeur numerique en E31 (de 10à100) et un calcul me donne un résultat (devis) et verifie 1 valeur (D36<2600).Si mon calcul est juste je gardes mon devis, si il est faux je rentres une nouvelle valeur dans E31 (+1).cela peux etre long avant de trouver la première solution.
      je penses qu'il y a une solution automatique facile maais je ne l'ai pas trouvé.
      merci de vos éléments
      0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Avec autant de renseignements c'est un "euphémisme" de dire "c'est façile"
    .. Blaque à part, donne un peu plus de détails sur ce que tu veux faire.
    A+
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Il y a TOUJOURS une solution mathématqie, à condition de comprendre l'exposer ??, ce qui, dans ce cas, n'est pas évident.
    Mettre un exemple de ton classeur sur CiJoint.fr, avec quelque données et surtout un exemple explicite des résultats que tu souhaite.
    A+
    0
  4. Patgnr
     
    Bonsoir

    Je crois comprendre que :

    tu incrémentes la cellule E31 de 1 à partir de 10 jusqu'à 100.
    Dans une autre cellule : tu as un calcul qui se fait, il faut que dans D36 la valeur soit inférieure à 3600.
    Est ce que c'est à ce moment que tu considères que ton calcul est juste?

    Question: Une fois arrivé à 100 la valeur doit-elle revenir à 10?

    Si c'est le cas , tu peux insérer cette macro dans ta feuille.

    Pour cela, tu fais Alt+ F11. Dans le logicel VBE qui s'ouvre tu as normalement à gauche une fenêtre projet.
    Tu dois voir tes feuilles de ton classeur. Tu doubles clic sur la feuille dans laquelle tu veux travailler. A droite s'ouvre ou est déjà ouverte une grande fenêtre normalement vide - s'il n'ya pas de macros - et tu colles la macro suivante:
    ------------------------------------------------------------------------------
    Public Chgt As Boolean

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a As String
    a = Target.Address
    If Range("E31") = "" Then Range("E31") = 10
    If a <> "$D$36" Or Chgt = True Then Chgt = False: GoTo fin

    If Range("E31") > 100 Or Range("E31") < 10 Then Range("E31") = 10
    If Range("D36") < 3600 Then
    Chgt = True
    Range("E31") = Range("E31") + 1

    End If
    fin:
    End Sub
    -------------------------------------------------------------------------------
    Elle met à 10 E31 si la cellule est vide ou si elle dépasse 100.
    Elle incrémente automatiquement E31 quand la cellule D36 est inférieure à 3600.

    Cordialement

    Patgnr
    0
    1. chtilensois71
       
      c'est ça
      merci pour la macro
      je vais la tester et je vous tiens au courant.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. chtilensois71
     
    je viens de tester

    la valeur e31 reste à 10 et ne s'increment pas même si D36 est >3600.

    je n'est pas reussi à acceder à http://www.cijoint.fr pour vous envoyer un exemple de mon prolème
    0
  7. Patgnr
     
    Bonsoir

    Dès que tu peux mettre le fichier, je regarderai.
    Est-ce que la sécutrité macro est dévalidée?
    0
  8. chtilensois71
     
    bonjour

    j'ai reussi à mettre le fichier
    voici le lien
    http://www.cijoint.fr/cjlink.php?file=cj201012/cij4VMVvWK.xls

    je penses que la securité macro est desactivé mais je ne suis pas expert.

    merci
    0
  9. patgnr
     
    Bonjour

    J'ai refait la macro qui est maintenant plus adaptée à ton besoin. Cependant le site cijoint.fr me renvoie une page d'erreur. Dès qu'il est en fonctionnement je t'envoie le fichier.

    Patgnr
    0
    1. Utilisateur anonyme
       
      ]
      0
    2. patgnr
       
      Le Fichier est sur Ca y est la situation s'est débloquée .
      Le fichier est à l'adresse suivante: http://www.cijoint.fr/cjlink.php?file=cj201012/cijtnB5cCB.xls
      0
  10. chtilensois71
     
    bonsoir,

    merci pour le fichier et la rapidité.
    j'ai vu la macro, mais cela ne semble pas fonctionner pourtant les macro sont
    activer.
    si tu peux m'aidr pour queje puisse tester

    encore merci

    ps: j'ai eloigné le petit monstre de l'ordinateur (blanche neige c'est miraculeux pour ça)
    0
    1. chtilensois71
       
      bonsoir Patgnr,
      j'ai regarder la macro, et je n'est pas bien compris son fonctionnement.
      Pour moi, le principe etait de mettre 10 en E31, de verifier si D36 <2600 et si c'etait faux
      d'incrementer E31 +1 , jusqu'à ce que D36<2600.

      merci d'avance
      0
    2. Patgnr
       
      Bonjour,

      Pour tester la macro, ne connaissant pas quelle cellule je devais modifier pour que D36 change de valeur,
      J'avais rajouté dans la formule de D36 =D32+2*C33+ D38

      en rajoutant +D38, ça me permettait de rentrer une valeur dans la cellule D38 ce qui changait la valeur de D36 et en fonction du résultat E31 s'incrémentait.

      Je viens de contrôler en récupérant le fichier sur cijoint E31 se désincrémente, j'avais oublié de remettre un signe positif à la ligne suivante:
      au lieu de lire
      If Range("D36") < 3600 Then Chgt = True: Range("E31") = Range("E31") - 1
      lire
      If Range("D36") < 3600 Then Chgt = True: Range("E31") = Range("E31") + 1

      Essaie de faire la manip avec D38.
      Sinon je ne comprends pas la raison, à chaque fois que tu changes une valeur dans la feuille 1
      la macro contrôle si D36 a été modifiée.

      Donne moi des nouvelles.

      Patgnr
      0
    3. chtilensois71
       
      voici la macro modifié
      Dim Chgt As Boolean
      ' A chaque changement dans la feuille excel ce programme contrôle si la cellule D36 a changé
      Private Sub Worksheet_Change(ByVal Target As Range)
      If Chgt = False Then
      If Range("E31") = "" Or Range("E31") > 100 Then Range("E31") = 10 'remise à 10 de E31 si la valeur a dépassé 100 ou vaut rien
      If Range("D36") <> D36 Then 'Compare l'ancienne valeur de D36 avec la valeur actuelle
      If Range("D36") < 2600 Then Chgt = True: Range("E31") = Range("E31") + 1 ' Contrôle de D36 si inférieur à 2600 implique incrémentation de E31
      End If
      Else
      Chgt = False
      End If
      D36 = Range("D36")
      End Sub
      si E31=0, la macro mets 10. et cela s'arrête (même avec l'exercice d'ajouter (+d38àd36)

      je ne comprends pas non plus
      merci
      0
    4. Patgnr
       
      d'accord je n'avais pas vu ça comme çà. ok je refais

      remplace dans la feuil1 tout par

      Dim Chgt As Boolean
      Private Sub Worksheet_Change(ByVal Target As Range)
      If Range("E31") = "" Or Range("E31") > 100 Then Range("E31") = 10 'remise à 10 de E31 si la valeur a dépassé 100 ou vaut rien
      If Range("D36") > 2600 Then Chgt = True: Range("E31") = Range("E31") + 1 ' Contrôle de D36 si inférieur à 3600 implique incrémentation de E31
      End Sub

      E31 s'incrémente tant que D36 n'a pas inférieur à 2600

      tiens moi au courant
      A+
      0
    5. chtilensois71
       
      bonjour,

      la macro fonctionne, nickel
      merci.Je vais essayer de mettre un bouton de commande calcul.

      Merci encore

      pour eriic, je ne connaissais pas l'outil valeur cible'; cela fonctionne aussi.
      merci à vous deux pour votre aide
      0
  11. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    Il y a une autre possibilité avec l'outil 'valeur cible' (du menu 'données') :

    Cellule à définir : $D$36
    Valeur à atteindre : 2600
    Cellule à modifier : $E$31

    Validation par ok donne 18.975 à remplacer par l'entier supérieur 19 (=> D36=2597)

    eric
    0