XL 2013 soustraction VBA

Kidcarotte

XLDnaute Junior
Bonjour a tous

J'ai vu un bon nombre de suggestion sur cette fonction, mais je les trouves toutes tres compliquer pour ce que je recherche
Je tente donc ma chance sur un poste independant.

Chaque semaine un rapport est fait. La quantite de ligne dans le rapport change a chaque fois (2000 - 3000 - 6000 etc..)
Je voudrais faire la soustraction de deux colonnes dans la feuille 1, et affiche le resultat en feuille 2.
Sur cette feuille il n'y a que une dizaine de valeur, donc le Sheet1.Cells["A18:B50"] ne m'interesse pas car trop precis.. Mais je n'ai pas envie d'utilise le Sheet1.Cells("A1:B6000")

Je suis a la recherche de quelques chose comme Sheet2.Range("R").End(xlDown) = Sheet1.Range("B").End(xlDown) - Sheet1.Range("C").End(xlDown)

J'ai attache un petit excel de ce que je recherche a faire

Si vous avez des suggestions je suis preneuse !

Merci beaucoup
 

Pièces jointes

  • Soustraction VBA.xlsx
    9.4 KB · Affichages: 5

Kidcarotte

XLDnaute Junior
Alors oui ca a l'air d'etre ca mais j'ai le droit a un erreur Mismatch, je ne comprends pas

S2.Range("Q" & Range("Q" & Rows.Count).End(xlUp).Row) = S1.Range("R" & Range("R" & Rows.Count).End(xlUp).Row) - S1.Range("S" & Range("S" & Rows.Count).End(xlUp).Row)

(S2 et S1 sont set en debut de macro au Sheet respective)

1580301668047.png
 

xUpsilon

XLDnaute Accro
Re,

Ici je dis que la toute dernière ligne du tableau (en Q) est égale à la valeur en R de la dernière ligne de la feuille 1 - la valeur en S de la dernière ligne de la feuille 1.
Si les dernières valeurs ne sont pas des nombres, ça pourrait poser problème. Par exemple une ligne de fin de tableau pour l'esthétique, ou je ne sais quoi d'autre.
Autre remarque, on va insérer sur la deuxième feuille une valeur dans la dernière cellule de la colonne Q. Sauf que ça veut dire que cette cellule contient déjà quelque chose, donc il conviendrait plutot de dire End(xlUp).Row + 1

Bonne continuation
 

Jacky67

XLDnaute Barbatruc
Bonjour à tous,
L'exemple est en fonction du fichier joint
La mise à jour se fait à la sélection de la feuille "Sheet2"
Code à placer dans le module de la feuille "Sheet2"
VB:
Private Sub Worksheet_Activate()
Dim Derlg&
Derlg = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row
With Sheets("Sheet2")
.Range("i2:i" & .Rows.Count).Clear
.Range("i2:i" & Derlg).Formula = "=Sheet1!a2-Sheet1!d2"
.Range("i2:i" & Derlg).Value = .Range("i2:i" & Derlg).Value
End With
End Sub
 

Pièces jointes

  • Soustraction VBA.xlsm
    15.7 KB · Affichages: 3
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
J'aurais fait :
VB:
Sub test()
   Dim RngSrc As Range
   Set RngSrc = Intersect(Feuil1.[2:1000000], Feuil1.UsedRange)
   Intersect(Feuil2.[I2:I100000], Feuil2.UsedRange).ClearContents
   Feuil2.[I2].Resize(RngSrc.Rows.Count).FormulaR1C1 = "=" _
      & RngSrc(0, 1).Address(False, True, xlR1C1, True) & "-" _
      & RngSrc(0, 4).Address(False, True, xlR1C1, True)
   End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 907
Membres
101 836
dernier inscrit
karmon