Fonction Somme en VBA

Bonjour,

J'expose mon petit soucis :

A = E+C-D

G = A-F

Forcément, F ne sera pas toujours égal à A, le but d'un inventaire .

J'aimerais donc pouvoir mettre à jour A en fonction de ce qu'il y a dans F mais bien entendu A est une formule.

Donc ce que je voulais faire c'était retirer la différence (G) sur mon stock annuel initial (E). Sauf que impossible car du coup ça créer une boucle avec les formules et je ne veux pas activer les itérations car j'ai cela sur 2500 lignes.

Je pensais donc à mettre un bouton de commande qui ferait : E - (F) soit pour la première ligne 554 - (-46) et que le résultat se mette à la place du résultat actuel de E.

Et bien entendu que cela fasse pareil pour toutes les lignes qui suivent.

Et si une cellule de G (différence) n'a pas de résultat , que ça ne s'y applique pas ou que ça soit pris en compte comme étant "0"

Merci beaucoup,

8classeur1.xlsm (9.79 Ko)

Bonjour,

Sub somme()
    Dim tabe()
    tabe = Range("E1:E")
    Dim tabf()
    tabf = Range("F1:F")
    Dim i As Byte
    For i=0 To < Ubond(tabe)
        tabe(i) = tabe(i) - tabf(i)
    Next
    For i=0 To < Ubond(tabe)
        Range(i, 5) = tabe(i)
    Next
End Sub

Bonne Journée

Déjà un grand merci,

J'ai modifié les colonnes en fonction de ce que j'ai dans mon vrai tableau mais il m'affiche une petite erreur de syntaxe pour les deux lignes :For i=0 To < Ubond(tabe)

A quoi correspond ce "i" ?

Merci,

Private Sub CommandButton1_Click()
Dim tabe()
tabe = Range("N1:N")
Dim tabp()
tabp = Range("P1:P")
Dim i As Byte
For i=0 To < Ubond(tabe)
tabe(i) = tabe(i) - tabp(i)
Next
For i=0 To < Ubond(tabe)
Range(i, 14) = tabe(i)
Next
End Sub

Cool !!

Private Sub CommandButton1_Click()
   Dim tabe()
   tabe = Range("N1:N")
   Dim tabp()
   tabp = Range("P1:P")
   Dim i As Byte
   For i=0 To Ubond(tabe)
       tabe(i) = tabe(i) - tabp(i)
   Next
   Dim h As Byte
   For h=0 To Ubond(tabe)
       Range(i, 14) = tabe(i)
   Next
End Sub

i et h sont les compteurs de la boucles for.

D'accord,

Maintenant "Sub ou fonction non définie" sur "For i = 0 To Ubond(tabe)"

Pour "Range(i, 14) = tabe(i)" j'ai mis 14 car cela correspond à la colonne N c'est correct ça ?

On change de méthode,

Private Sub CommandButton1_Click()
   Dim tabe()
   tabe = Range("N1:N1000")
   Dim tabp()
   tabp = Range("P1:P1000")
   Dim i As Byte
   Dim stop As Byte
   stop = 'fin de la plage -1 dans ce cas 999'
   For i=0 To stop
       tabe(i) = tabe(i) - tabp(i)
   Next
   Dim h As Byte
   For h=0 To stop
       Range(i, 14) = tabe(i)
   Next
End Sub

Toujours erreur de syntaxe sur ces lignes ci :

Dim stop As Byte
   stop = 'fin de la plage -1 dans ce cas 999'
   For i=0 To stop

For h=0 To stop
Private Sub CommandButton1_Click()
   Dim tabe()
   tabe = Range("N1:N1000")
   Dim tabp()
   tabp = Range("P1:P1000")
   Dim i As Long
   Dim stop As Long
   stop = 999
   For i=0 To stop
       tabe(i) = tabe(i) - tabp(i)
   Next
   Dim h As Long
   For h=0 To stop
       Range(i, 14) = tabe(i)
   Next
End Sub

J'avais mis pas le bon type.

J'ai remplacé stop par arret car je ne sais pourquoi il faisait une erreur dessus mais j'ai toujours une erreur sur

tabe(i) = tabe(i) - tabp(i)

L'indice n'appartient pas à la sélection.

Est ce que ça ne vient du fait que les cellules de P sont des formules ?

Bonjour,

Quelqu'un à t-il une solution pour résoudre ce problème car de mon côté toujours rien trouvé en utilisant les formules.

Merci beaucoup,

Bonjour,

J’avais pas vu ton message d’avant.

Private Sub CommandButton1_Click()
   Dim tabe()
   tabe = Range("N1:N1000")
   Dim tabp()
   tabp = Range("P1:P1000")
   Dim tab()
   Dim i As Long
   For i=0 To 999
       tab(i) = tabe(i) - tabp(i)
   Next
   Dim h As Long
   For h=0 To 999
       Range(i, 14) = tab(i)
   Next
End Sub

Bonne Journée

Aucun soucis,
Erreur de syntaxe sur :

Dim tab()

     tab(i) = tabe(i) - tabp(i)

     Range(i, 14) = tab(i)
Private Sub CommandButton1_Click()
   Dim tabe()
   tabe = Range("N1:N1000")
   Dim tabp()
   tabp = Range("P1:P1000")
   Dim tab(999)
   Dim i As Long
   For i=0 To 999
       tab(i) = tabe(i) - tabp(i)
   Next
   Dim h As Long
   For h=0 To 999
       Range("N"&i) = tab(i)
   Next
End Sub

Pareil pour le moment

Private Sub CommandButton1_Click()
   Dim tabe() As Simple
   tabe = Range("N1:N1000")
   Dim tabp() As Simple
   tabp = Range("P1:P1000")
   Dim tab(999) As Simple
   Dim i As Long
   For i=0 To 999
       tab(i) = tabe(i) - tabp(i)
   Next
   Worksheets("feuille").Activate
   Range("ta plage") = Application.Transpose(tab)
End Sub

Bonjour,

Je me permets de proposer une réponse en reprenant la solution d'ImoKa.

Je pense que cela vient de la déclaration du tableau "tab" qui ne peut pas se nommer ainsi.

Réessayez en le nommant "tab1" par exemple.

Dim tab1(999)

tab1(i) = tabe(i) - tabp(i)

Même chose.

Et en executant "Type défini par l'utilisateur non défini" sur la ligne : Dim tabe() As Simple

Bonjour Sanka,

J'ai bien essayé de changer cela également mais toujours l'erreur "Type défini par l'utilisateur non défini"

En fait c'est simplement ceci à étendre jusqu'à la ligne 2500. J'ai essayé beaucoup de chose mais je suis une bille

Range("N16").Value = Range("N16").Value - Range("P16").Value

Bonjour,

Private Sub CommandButton1_Click()
   Dim i As Long
   For i=0 To 2500
      Range("N"&i).Value = Range("N"&i).Value - Range("P"&i).Value
   Next
End Sub
Rechercher des sujets similaires à "fonction somme vba"