Calcul en série d'une plage de données et synthèses des résultats dans un tableau

Circark

XLDnaute Nouveau
Bonjour à toutes et tous,

Je cherche à automatiser un grand nombre d'opérations de calcul sur une plage de données et à synthétiser les résultats dans un tableau.
Voilà le fonctionnement du classeur : la feuille calcul est dédiée au Calcul, valeur par valeur, la feuille DonnéesEntrée est dédiée à l'entrée des valeurs brutes.

1-Choix d'un numéro parmi la plage NUMREPERAGE (en C8). Ici, il y a 50 objets dans NUMREPERAGE, mais il peut y en avoir plus

2-On effectue plusieurs calculs à l'aide de ces valeurs (dans un cas plus concret, ces opérations seront beaucoup plus nombreuses et plus complexes). Je ne peux/veux donc pas effectuer ces opération directement dans la feuille DonnéesEntrée, mais uniquement dans la feuille Calcul.

3-A l'aide d'un bouton et d'une macro, je souhaite calculer l'ensemble des valeurs Volume/Surface/Périmètre pour toutes les données (ici, n°1 à 50, mais cela peut varier, la plage s'appelle NUMREPERAGE), et synthétiser les résultats dans un tableau, si possible dans une nouvelle feuille.

En gros, la macro devrait faire évoluer la case C8 avec toutes les valeurs présentes dans NUMREPERAGE (ici, de 1 à 50, mais cela peut varier, de 4258 à 10547 par exemple), et à chaque incrément, rajouter une ligne à un tableau avec les résultats correspondants (Volume/Surface/Périmètre).

Cela est-il possible ?

Merci par avance

Edit : Orthographe :rolleyes:
 

Pièces jointes

  • Calcul en série.xlsx
    14.1 KB · Affichages: 88
Dernière édition:

Circark

XLDnaute Nouveau
Re : Calcul en série d'une plage de données et synthèses des résultats dans un tablea

Personne n'a une idée ?

Est-ce possible de faire cette manipulation au sein d'Excel ou dois-je chercher une solution du type script windows ? (je suis sous Seven 64 Bits).
 

Circark

XLDnaute Nouveau
Re : Calcul en série d'une plage de données et synthèses des résultats dans un tablea

J'ai trouvé une première solution sous forme de Macro, mais qui pour l'instant ne s'adapte pas automatiquement à mon nombre de données :

Code:
Sub TABRECAP()
Dim i As Long
    With Sheets("Calcul")
        For i = 21 To 70
            .Range("C8").Value = .Range("C" & i).Value
            .Range("D" & i).Value = .Range("D13").Value
            .Range("E" & i).Value = .Range("D14").Value
            .Range("F" & i).Value = .Range("D15").Value
        Next i
    End With
End Sub

L'idée serait que la valeur 21 To 70 s'adapte en fonction du nombre de cellule dans NUMREPERAGE (ici, il y en a 50, mais cela peut varier).

Une idée ?
Merci par avance. :eek:

Circark


Edit : j'ai ajouté le tableau à jour avec ma nouvelle (mais incomplète) macro.
 

Pièces jointes

  • Calcul en série.xlsm
    22.8 KB · Affichages: 75
Dernière édition:

xrevenge

XLDnaute Nouveau
Re : Calcul en série d'une plage de données et synthèses des résultats dans un tablea

Salut,

As tu essayé de faire une boucle sur ta plage NUMREPERAGE pour voir le nombre de champs non vide. ainsi tu connaitras le départ et la fin de ta boucle.
ou sinon encore plus facile

ajoute dans ta feuille calcul dans une cellule : =NB(NUMREPERAGE)

tu obtiendras le nombre de ligne de ta plage, ici 50.
tu peux construire ta boucle avec le x: départ et y la limite y= x+50 .

voili voilou
Sebastien
 
Dernière édition:

Circark

XLDnaute Nouveau
Re : Calcul en série d'une plage de données et synthèses des résultats dans un tablea

Salut,

As tu essayé de faire une boucle sur ta plage NUMREPERAGE pour voir le nombre de champs non vide. ainsi tu connaitras le départ et la fin de ta boucle.
ou sinon encore plus facile

ajoute dans ta feuille calcul dans une cellule : =NB(NUMREPERAGE)

tu obtiendras le nombre de ligne de ta plage, ici 50.
tu peux construire ta boucle avec le x: départ et y la limite y= x+50 .

voili voilou
Sebastien

Merci beaucoup !

Mais comment faire pour que la plage NUMREPERAGE s'adapte automatiquement au nombre de valeur dans la colonne B dans la feuille "DonnéesEntrée" ?

Par avance merci.

Circark !
 

xrevenge

XLDnaute Nouveau
Re : Calcul en série d'une plage de données et synthèses des résultats dans un tablea

Voici le code VBA lorsque tu veux créer ou modifier une plage


Sub Creation()

Range("E5:E7").Select
ActiveWorkbook.Names.Add Name:="NUMREPERAGE", RefersToR1C1:= _
"=Feuil1!R5C5:R7C5"
ActiveWorkbook.Names("NUMREPERAGE").Comment = ""

End Sub

Sub Modification()

With ActiveWorkbook.Names("NUMREPERAGE")
.Name = "NUMREPERAGE"
.RefersToR1C1 = "=Feuil1!R5C5:R70C5"
.Comment = ""
End With
End Sub

voila, tu peux ensuite exécuter le code au démarrage.
 

Circark

XLDnaute Nouveau
Re : Calcul en série d'une plage de données et synthèses des résultats dans un tablea

Merci mais je ne comprends pas exactement comment fonctionne ta macro :

Dans mon cas, je dois bien remplacer "Feuil1" par "DonnéesEntrée" ?
A quoi correspond cette ligne : RefersToR1C1:= _"=Feuil1!R5C5:R7C5" ?:confused:

Parce qu'avec mon fichier, je n'arrive pas à redéfinir ma plage NUMREPERAGE avec cette macro, cela me donne ceci, après Exécution :

Capture.JPG

Une idée ? :cool:
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    37.2 KB · Affichages: 175
  • Capture.JPG
    Capture.JPG
    37.2 KB · Affichages: 173

xrevenge

XLDnaute Nouveau
Re : Calcul en série d'une plage de données et synthèses des résultats dans un tablea

en fait voila dans ton cas :

Sub Modification()

With ActiveWorkbook.Names("NUMREPERAGE")
.Name = "NUMREPERAGE"
.RefersToR1C1 = "=DonnéesEntrée!R4C2:R70C2"
End With
End Sub

R: row C: Col

soit la plage commence ligne 4 colonne B et termine ligne 70 colonne B.
en dautres termes c'est le 70 qui doit varier.
voila
Sebastien
 

Circark

XLDnaute Nouveau
Re : Calcul en série d'une plage de données et synthèses des résultats dans un tablea

en fait voila dans ton cas :

Sub Modification()

With ActiveWorkbook.Names("NUMREPERAGE")
.Name = "NUMREPERAGE"
.RefersToR1C1 = "=DonnéesEntrée!R4C2:R70C2"
End With
End Sub

R: row C: Col

soit la plage commence ligne 4 colonne B et termine ligne 70 colonne B.
en dautres termes c'est le 70 qui doit varier.
voila
Sebastien

C'est parfait ! Merci Sébastien !
 

Discussions similaires