Calcul simple dans array

Bonjour,

Je coince sur quelque chose de très simple je pense, je rentre des valeurs dans un array à 1 dimension (une colonne quoi), je veux faire la somme de cette colonne à un moment donné. Puis supprimer les éléments de cette colonne progressivement 1 par 1 en partant du haut (rien de compliqué quoi), et faire la nouvelle somme à chaque suppression. Mais à chaque fois la nouvelle somme reste inchangée par rapport à la première somme, comme si les suppressions ne marchaient pas...

Voici mon code, merci de votre aide !

Dim myarray(49, 1) As Integer, ligtbltemp as integer
ligtbltemp = 0    
    do while ligtbltemp < 49
        mavariable = 2 
        myarray(ligtbltemp, 0) = mavariable - 1
        ligtbltemp = ligtbltemp + 1
    loop 'je simplifie bien sûr l'exemple

ligtbltemp = 1
valeurtotale = Application.WorksheetFunction.Sum(myarray) 'ici m'affiche bien la somme attendue    
        Do While ligtbltemp < 50 Or valeurtemporaire = 0    
        valeurtemporaire = Application.WorksheetFunction.Sum(myarray) 'ici valeurtemporaire reste identique à valeurtotale alors que j'attends qu'elle diminue au fur et à mesure que chaque cellule du tableau soit remplacée par 0 lors de la seconde boucle...
         myarray(ligtbltemp - 1, 0) = 0
         ligtbltemp = ligtbltemp + 1
        Loop

Bonsoir Arnnaud,

La valeur de valeurtemporaire est bien décrémentée de 1 à chaque passage dans la boucle.

Pourquoi dites-vous que cette valeur ne change pas ?

Vérification avec une msgbox : MsgBox "valeurtemporaire = " & valeurtemporaire

Cliquer sur le bouton HOP!

Sub test()
Dim myarray(49, 1) As Integer, ligtbltemp As Integer
   ligtbltemp = 0
   Do While ligtbltemp < 49
      mavariable = 2
      myarray(ligtbltemp, 0) = mavariable - 1
      ligtbltemp = ligtbltemp + 1
   Loop                                          'je simplifie bien sûr l'exemple

   ligtbltemp = 1
   valeurtotale = Application.WorksheetFunction.Sum(myarray) 'ici m'affiche bien la somme attendue
   Do While ligtbltemp < 50 Or valeurtemporaire = 0
      valeurtemporaire = Application.WorksheetFunction.Sum(myarray) 'ici valeurtemporaire reste identique à valeurtotale alors que j'attends qu'elle diminue au fur et à mesure que chaque cellule du tableau soit remplacée par 0 lors de la seconde boucle...
      MsgBox "valeurtemporaire = " & valeurtemporaire
      myarray(ligtbltemp - 1, 0) = 0
      ligtbltemp = ligtbltemp + 1
   Loop
End Sub

Hello,

Une piste à étudier :

Sub SupprimerLigneTableauUnidimensionnel()

    Dim monTableau() As Integer

    ReDim monTableau(3)
    monTableau(0) = 5
    monTableau(1) = 15
    monTableau(2) = 5
    monTableau(3) = 25

    MsgBox Application.WorksheetFunction.Sum(monTableau)
    ReDim Preserve monTableau(UBound(monTableau) - 3)
    MsgBox Application.WorksheetFunction.Sum(monTableau)

End Sub

bonsoir, je coince sur cet array à une dimensions et je pense qu'on a toujours 2 dimensions ici.

bon, alors, ma vision :

Sub test2()
     Dim arr
     arr = Evaluate("row(offset(a1,,,20,))")     '=juste pour remplir l'array

     Do
          MsgBox "mon array contient " & UBound(arr) & " éléments : " & vbLf & Join(Application.Transpose(arr)) & vbLf & "somme = " & Application.Sum(arr)
          b = UBound(arr) > 1
          If b Then
               aux = Evaluate("row(offset(a2,,," & UBound(arr) - 1 & ",))")
               arr = Application.Index(arr, aux, 1)
          End If
     Loop While b
End Sub

Bonjour et merci à tous,

@mafraise effectivement dans mon exemple ça marchait XD en voulant simplifier pour l'exemple j'ai supprimé ce qui faisait que ça ne marchait pas dans mon cas. En gros j'avais mis la décrémentation dans une condition qui faisait qu'elle ne s'appliquait pas au début.

Donc problème résolu, encore merci!!

Rechercher des sujets similaires à "calcul simple array"