VBA : faire une soustraction sur deux cellule inconnue

Résolu/Fermé
Jerome - 10 août 2022 à 15:36
 Jerome - 10 août 2022 à 17:49

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

Raymond PENTIER Messages postés 58652 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 septembre 2024 17 198
10 août 2022 à 15:56

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

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
ccm81 Messages postés 10879 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 septembre 2024 2 415
10 août 2022 à 16:12

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

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
ccm81 Messages postés 10879 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 septembre 2024 2 415
10 août 2022 à 16:56

Tu ajoutes cette ligne avant d'affecter f

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

Cdlmnt

0

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
Le Pingou Messages postés 12141 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 septembre 2024 1 446
10 août 2022 à 17:13

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

Bonjour Le Pingou,

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

Un grand merci à tous les deux

Cordialement

0

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

Posez votre question
ccm81 Messages postés 10879 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 septembre 2024 2 415
Modifié le 10 août 2022 à 17:34

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

C'est déjà fait :-)

Encore merci

0