VBA : faire une soustraction sur deux cellule inconnue

Résolu
Jerome -  
 Jerome -

Bonjour,

Dans le cadre de la réalisation de ma macro, j'ai créé une variable pour définir ma première colonne vide.

          SA = Range("B1").End(xlToRight).Column + 1

Puis j'ai sélectionné celle d'après avec 

          Cells(1, SA + 1).Select

Sur cette cellule, j'aimerais réaliser une soustraction sur deux cellules de la même ligne mais de colonne différente. Pour illustration, imaginons que 

          Cells(1, SA ).Select = E1

          Cells(1, SA - 1).Select = D1

Ce que j'aimerais c'est réussir à faire la soustraction de ces deux cellules (D1-E1) en cellule Cells(1, SA + 1).Select = F1

J'ai essayé ceci qui ne fonctionne pas du tout

          Cells(1, SA + 1).Formula = "=Cells(2, SA - 1) - Cells(2, SA)"

Je vous remercie pour votre aide

Amicalement


Windows / Chrome 95.0.4638.54

5 réponses

  1. Raymond PENTIER Messages postés 58216 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     

    Bonjour.

    Tu as déjà reçu la solution pour faire l'addition https://forums.commentcamarche.net/forum/affich-37658421-vba-faire-une-somme-sur-une-colonne-inconnue-variable

    Tu ne peux pas l'adapter pour faire une soustraction ?


    0
    1. Jerome
       

      Bonjour,

      J'ai essayé, mais je n'y suis pas arrivé, c'est pour cela que j'ai redemandé de l'ai sur un sujet +/- similaire

      Cordialement

      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     

    Bonjour à tous les deux

    1. Tu veux que Cells(1, SA + 1) reçoive le résultat de Cells(2, SA - 1) - Cells(2, SA)

    Cells(1, SA + 1) = Cells(2, SA - 1) - Cells(2, SA)

    2. Tu veux que Cells(1, SA + 1) reçoive la formule qui fait référence aux deux cellules Cells(2, SA - 1)  et  Cells(2, SA)"

    f = "=" & Cells(2, SA - 1).Address & "-" & Cells(2, SA).Address

    Cells(1, SA + 1).FormulaLocal = f

    3. Autre chose ?

    Cdlmnt

    0
    1. Jerome
       

      Bonjour CCM81,

      C'est parfait, vous avez complétement compris ma demande et vous y avez répondu parfaitement. Un très grand merci.

      Une petite question, normalement, j'envoie la formule jusqu'en bas avec le code

               derligneSA = Range("B" & Rows.Count).End(xlUp).Row

               Selection.AutoFill Destination:=Range(Cells(2, SA + 1), Cells(derligneSA, SA + 1))

      Sauf qu'avec la formule 

               f = "=" & Cells(2, SA - 1).Address & "-" & Cells(2, SA).Address

      Ca me renvoie ceci sur le tableur et du coup la plage des n° est bloquée par les $

               =$G$2:$G$2-$H$2:$H$2

      Est il possible d'avoir le même résultat mais sans les $ ? D'avoir cette même formule, mais sans qu'il mette les $ sur les n° ?

               = "=" & Cells(2, SA - 1).Address & "-" & Cells(2, SA).Address

      Encore merci pour tout

      Cordialement

      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     

    Tu ajoutes cette ligne avant d'affecter f

    f = Replace(f, "$", "")

    Cdlmnt

    0
    1. Jerome
       

      Merci +++

      Avec ce code 

      Cells(2, SA + 1) = Cells(2, SA - 1) - Cells(2, SA)
          f = Replace(f, "$", "")
          f = "=" & Cells(2, SA - 1).Address & "-" & Cells(2, SA).Address
          Cells(2, SA + 1).FormulaLocal = f

      Ca m'a donné ceci sur le tableur. J'ai peut être mal placé le code f = Replace(f, "$", "") ?

      =$G$2-$H$2

      J'ai peut être mal placé le code f = Replace(f, "$", "") ?

      Cordialement

      0
  4. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    Bonjour,

    La ligne de ccm81 (salut au passage) doit être après

    f = "=" & Cells(2, SA - 1).Address & "-" & Cells(2, SA).Address
    f = Replace(f, "$", "")
        

    0
    1. Jerome
       

      Bonjour Le Pingou,

      Au temps pour moi, je confirme que ça fonctionne très bien

      Un grand merci à tous les deux

      Cordialement

      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     

    Merci Le Pïngou

    >Jerome : Si c'est fini, peux tu mettre le sujet à résolu (en haut dans ton premier message > les trois petits points)

    Bonne fin de journée

    0
    1. Jerome
       

      C'est déjà fait :-)

      Encore merci

      0