[RESOLU] VBA: SUM en fonction de plusieurs variables

chacal33

XLDnaute Junior
Bonjour à toutes et à tous,

je n'arrive pas à trouver un moyen de régler un problème de code.
Je suis débutant sur VBA et là je bloque.

En fonction de la valeur de plusieurs cellules dans la colonne A et de la valeur de plusieurs cellules en ligne 7, je souhaiterais effectuer une formule dont le nombre d'arguments est variable.

Je joints évidemment un fichier car je ne suis pas forcément super claire...

Merci pour vos retours.

Matt
 

Pièces jointes

  • Classeur2.xls
    287 KB · Affichages: 55
  • Classeur2.xls
    287 KB · Affichages: 46
  • Classeur2.xls
    287 KB · Affichages: 57
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : VBA: SUM en fonction de plusieurs variables

Bonjour Matthieu,

En général on utilise les macros pour réaliser des choses non-prévues dans le logiciel ou des actions répétitives et fastidieuses.
Dans ton exemple, ce ne semble être le cas d'aucune des deux hypothèses.
La question est donc: "Pourquoi programmer une Somme Automatique?" :)

... Si tu nous en disais un peu plus? Tu auras une infinité de lignes et/ou colonnes à traiter? Qu'Est-ce qui déclencherait l'exécution de la macro éventuelle? etc.
 

pierrejean

XLDnaute Barbatruc
Re : VBA: SUM en fonction de plusieurs variables

Bonjour Chacal33

Salut Modeste


Vois si cela te convient
 

Pièces jointes

  • Classeur2 (4).xls
    304.5 KB · Affichages: 48
  • Classeur2 (4).xls
    304.5 KB · Affichages: 63
  • Classeur2 (4).xls
    304.5 KB · Affichages: 61

chacal33

XLDnaute Junior
Re : VBA: SUM en fonction de plusieurs variables

Bonjour Pierre-Jean et Modeste.

Merci pour vos retours.

Modeste, je souhaitais pouvoir automatiser les formules car j'ai plusieurs tableaux et plusieurs fichiers à travailler. Et de temps en temps, ce ne sera pas moi qui opérerait le tableau. Du coup j'ai besoin que ce soit automatique.

Merci Pierre-Jean pour ta solution. Je pense que c'est exactement ce que je voulais faire. J'ai jeté un rapide coup d'oeil au code. Je ne l'aurai pas inventé... Je vais essayer de le comprendre.

Je reviens vers vous si il y a un problème.

Merci encore.
 

job75

XLDnaute Barbatruc
Re : [RESOLU] VBA: SUM en fonction de plusieurs variables

Bonjour à tous,

Pour le plaisir de saluer Modeste et Pierre.

Dans la mesure où les tableaux sont bien séparés par une ligne vide avec toutes les cellules en colonne A remplies :

Code:
Sub test()
Dim ncol%, a As Range, i%, ad$
ncol = ActiveSheet.UsedRange.Columns.Count
For Each a In [A:A].SpecialCells(xlCellTypeConstants).Areas
  For i = 1 To ncol
    If a(1, i) = "COMMANDES" Then
      ad = a(1, i).Resize(a.Count - 1).Address(0, 0)
      a(a.Count, i) = "=SUM(" & ad & ")"
    End If
  Next
Next
End Sub
Bonne nuit et A+
 

pierrejean

XLDnaute Barbatruc
Re : [RESOLU] VBA: SUM en fonction de plusieurs variables

Re

Salut Gerard

@ chacal33

Pour t'aider à comprendre : mon code commenté
Et tu fais erreur : c'est le code de mon ami job qui est le plus évolué
 

Pièces jointes

  • Classeur2 (4).xls
    306 KB · Affichages: 44
  • Classeur2 (4).xls
    306 KB · Affichages: 50
  • Classeur2 (4).xls
    306 KB · Affichages: 51

job75

XLDnaute Barbatruc
Re : [RESOLU] VBA: SUM en fonction de plusieurs variables

Bonjour chacal33, Modeste, Pierre,

Une autre solution qui s'affranchit des 2 conditions de mon post #6 :

Code:
Sub test()
Dim a As Range, b As Range, c As Range, i&
Application.ScreenUpdating = False
[A:A].Replace "TOTAUX", "#N/A"
Set a = [A:A].SpecialCells(xlCellTypeConstants, 16)
a = "TOTAUX"
Cells.Replace "COMMANDES", "#N/A"
Set b = Cells.SpecialCells(xlCellTypeConstants, 16)
b = "COMMANDES"
Set c = Intersect(b.EntireRow, [A:A])
For i = 1 To a.Count
  Intersect(a.Areas(i).EntireRow, b.EntireColumn).FormulaR1C1 = _
    "=SUM(R[" & c.Areas(i).Row - a.Areas(i).Row & "]C:R[-1]C)"
Next
End Sub
Edit : modifié la formule pour n'avoir que des références relatives.

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 344
Messages
2 087 444
Membres
103 546
dernier inscrit
mohamed tano