Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

compilation de formules

hidozo

XLDnaute Occasionnel
Bonjour,

dans mon projet, je dois réaliser une compilation de données de la manière suivante :
pour chaque donnée de la cellule U2 à la cellule U49, je dois effectuer des calculs par rapport à un ensemble de données issues d'analyses vidéo où je coche des indicateurs (issues des cellules de U2 à U49.

le code que nous avons réalisé est le suivant :
Range("G3").Select
Selection.AutoFilter 'mise en place filtre
Selection.AutoFilter Field:=7, Criteria1:=Worksheets("Feuil1").Range("u2").Value 'choix du critère (ici celui en U2)
Range("J2").Activate
ActiveCell.Formula = Application.Subtotal(3, Worksheets("Feuil1").Range("G3:G3000"))
If Range("J2").Value = 0 Then Range("J2").Value = "NR" Else Range("J2").Value = Range("J2").Value
Range("k2").Activate
ActiveCell.Formula = Application.Subtotal(5, Worksheets("Feuil1").Range("F3:F3000"))
If Range("J2").Value = "NR" Then Range("k2").Value = "NR" Else Range("k2").Value = Range("k2").Value
Range("l2").Activate
ActiveCell.Formula = Application.Subtotal(4, Worksheets("Feuil1").Range("F3:F3000"))
If Range("J2").Value = "NR" Then Range("l2").Value = "NR" Else Range("l2").Value = Range("l2").Value
Range("m2").Activate
ActiveCell.Formula = Application.Subtotal(1, Worksheets("Feuil1").Range("F3:F3000"))
If Range("L2").Value = "NR" Then Range("m2").Value = "NR" Else Range("m2").Value = Range("M2").Value
Range("o2").Activate
ActiveCell.Formula = "=((RC[-3]-RC[-4])*100)/RC[-2]"
If Range("J2").Value = "NR" Then Range("o2").Value = "NR" Else Range("o2").Value = Range("o2").Value
Range("S2").Activate
ActiveCell.Formula = Application.Subtotal(9, Worksheets("Feuil1").Range("f3:f3000"))
If Range("J2").Value = "NR" Then Range("S2").Value = "NR" Else Range("S2").Value = Range("S2").Value

If Range("J2").Value = "NR" Then Range("r2").Value = "NR" Else Range("r2").Value = Range("S2").Value * 100 / Range("F2").Value
If Range("J2").Value = "NR" Then Range("i2").Value = "NR" Else Range("i2").Value = Range("J2").Value * 100 / Range("H2").Value

Et je répète cette opération de la ligne U2 à U 49.
cela me prend de la place et je voudrais savoir comment faire pour compiler ce code pour mes 48 lignes en u seul bout de code.

Je pensais utiliser 2 for then next, mais cela n'a pas fonctionné car il m'a mis le même résultats dans toutes mes cellules de destinations.

Est-ce que quelqu'un a une idée ?

Cordialement

Hidozo
 

Odesta

XLDnaute Impliqué
Re : compilation de formules

Bonjour

Personnelement, j'utilise Cells( ) à la place de range.

Car on y travail en valeur d'ordonnée et d'absolue, et non en référence de cellule.

Ce qui donnerais pour la ligne :
Range("J2").Activate
ActiveCell.Formula = Application.Subtotal(3, Worksheets("Feuil1").Range("G3:G3000"))

Cells(2,10).Formula = Application.Subtotal(3, Worksheets("Feuil1").Range(cells(3,7),cells(3000,7)))

Et la, d'un coup, on vois qu'un for i = 1 to x / next permet de remplace aisement les 2 et les 3 par des i+1 et des i+2 !!
Si vous devez travailler une ligne sur deux, for i = 1 to x step 2 / next


Essayez de remplacer tout ca et dites nous si cela fonctionne

Cordialement
Olivier

PS : on peut travailler aussi avec les Ranges ("A"& i ) mais je ne trouve pas ca jolie
 

hidozo

XLDnaute Occasionnel
Re : compilation de formules

Re bonjour,

J'ai essayé de modifier la formule, mais, pffffffffffffffffff

je joints un exemple

cliquer sur le bouton.

remarques :

il me fait des calcules sur ligne 1 alors qu'il ne devrait pas y en avoir. En fait il me fait les bons calcules mais sur l'ensemble des données.

les valeurs en F2 et H2 sont corrects

Et j'ai 4 données (1, 2, 3 et 4) et les calculs ne semblent fonctionner que pour 3 d'entre elles.

De plus la logique que si cellule=0, cela devient "NR" ne fonctionne pas.

Cordialement

Hidozo
 

Pièces jointes

  • Classeur1.xls
    41.5 KB · Affichages: 53
  • Classeur1.xls
    41.5 KB · Affichages: 51
  • Classeur1.xls
    41.5 KB · Affichages: 57

hidozo

XLDnaute Occasionnel
Re : compilation de formules

re bonjour,

Ci-joint la solution trouvée par mon collègue.

Cordoalement

Hidozo
 

Pièces jointes

  • Classeur1.xls
    38 KB · Affichages: 58
  • Classeur1.xls
    38 KB · Affichages: 52
  • Classeur1.xls
    38 KB · Affichages: 54
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…