XL 2013 incrémentation d'un fichier de synthese

dinette

XLDnaute Junior
bonjour
je fais régulièrement des mesures enregistrées sur une feuille et je voudrais que ces mesures soient compilées sur un tableau de synthèse .
mais ...
1 : les mesures ne sont pas toujours faites sur la même feuille
2 : chaque feuille de mesure doit être sauvegardée

je joins un fichier avec le tableau de synthese et les différentes feuilles de mesure. Sur le modèle, il y a que 2 feuilles A et B mais on peut en avoir plusieurs dizaines.

J'espère que c'est suffisamment clair
merci de votre aide
 

Pièces jointes

  • SYNTHESE MESURES-MODELE.xlsx
    43.7 KB · Affichages: 41

Paf

XLDnaute Barbatruc
Bonjour,

Des idées , si !! : il faut une macro.

Mais pas de données pour remplir les différentes feuilles pour faire quelques essais!

Chaque feuille de mesure n'a t elle que 20 lignes de mesures ?

La feuille synthèse sera-t-elle toujours la première feuille?

A+
 

dinette

XLDnaute Junior
Ci joint un tableau rempli avec 2 feuilles de mesures ( il y aura maxi 20 lignes de mesures)
le tableau de synthèse peut rester en première position si cela aide
l'idée c'est de reporter en automatique les valeurs des feuilles de mesure dans le tableau de synthese mais on doit pouvoir ensuite rentrer de nouvelle valeurs sur ces mêmes feuilles qui viendront se rajouter au tableau de synthèse sans pour autant effacer les données précédentes dans le tableau de synthese.
pour les feuilles de mesures, je peux prévoir de faire un enregistrement dans un autre fichier pour sauvegarder chaque feuilles par ailleur.
encore merci pour votre aide
 

Pièces jointes

  • SYNTHESE MESURES-MODELE.xlsx
    43.9 KB · Affichages: 36

Paf

XLDnaute Barbatruc
re,

un essai :

VB:
Sub Synthese()
Dim T(), x As Long, i As Integer, DerL As Long

For i = 2 To Worksheets.Count
    With Worksheets(i)
    If WorksheetFunction.CountA(.Range("B13:B32")) > 0 Then
        x = x + 1
        ReDim Preserve T(1 To 22, 1 To x)
        T(1, x) = .Range("E5")
        T(2, x) = .Range("E7")
        T(3, x) = .Range("B7")
        T(4, x) = .Range("B5")
        T(8, x) = .Range("B33")
        T(9, x) = .Range("B34")
        T(10, x) = .Range("B35")
        T(12, x) = .Range("B37")
        T(15, x) = .Range("C33")
        T(16, x) = .Range("C34")
        T(17, x) = .Range("C35")
        T(20, x) = .Range("D33")
        T(21, x) = .Range("D34")
        T(22, x) = .Range("D35")
    End If
    End With
Next
With Worksheets("SYNTHESE")
DerL = .Range("B" & Rows.Count).End(xlUp).Row + 1
If x > 0 Then .Range("B" & DerL).Resize(UBound(T, 2), UBound(T, 1)) = Application.Transpose(T)
End With
End Sub

A+
 

dinette

XLDnaute Junior
cela fonctionne pas trop mal
juste que la cellule " usine " ne se complète pas
et comment faire si je rajoute des fiches de mesures, car sur l'exemple il y en a 2 mais en réalité je vais en utiliser une trentaine?
Et comme à chaque fois que je lance la macro , le système envoie les infos et pour éviter d'avoir des doublons je voudrais insérer une colonne avec le numéro d’analyse pour faire éventuellement du ménage
encore merci
 

Paf

XLDnaute Barbatruc
Re,
cela fonctionne pas trop mal
C'est encourageant !!

juste que la cellule " usine " ne se complète pas

Dans le premier classeur dans les feuilles A et B , il n'y avait pas 'd'emplacement" Usine. Il a été rajouté dans le 2ème classeur en feuille A .

pour modifier, entre les deux lignes:
Code:
        T(4, x) = .Range("B5")
        T(8, x) = .Range("B33")

insérer la ligne
Code:
T(5, x) = .Range("B9")

post 4 :
Et comme à chaque fois que je lance la macro , le système envoie les infos et pour éviter d'avoir des doublons je voudrais insérer une colonne avec le numéro d’analyse pour faire éventuellement du ménage
post 6:
on doit pouvoir ensuite rentrer de nouvelle valeurs sur ces mêmes feuilles qui viendront se rajouter au tableau de synthèse sans pour autant effacer les données précédentes dans le tableau de synthese.

Si on rajoute des données dans une feuilles, on ne sait plus à quoi se rattache la synthèse déjà effectuée de cette feuille !
On peut garder les synthèses effectuées ou bien les 'écraser'.

Ou pensez vous insérer la colonne suplémentaire ?


comment faire si je rajoute des fiches de mesures, car sur l'exemple il y en a 2 mais en réalité je vais en utiliser une trentaine?

à chaque lancement de la macro, toutes les feuilles existantes ( sauf la première ) sont 'balayées' pour en extraire les données.

A+
 

dinette

XLDnaute Junior
bonjour
cela fonctionne pour rajouter l'emplacement "usine "
post 6 : je pense que le mieux c'est de créer une nouvelle colonne avec la réf de l'analyse
pour que je puisse être " autonome " par la suite pouvez vous m'expliquer comment modifier le code dans le cas :
1 : d'un rajout de colonne
2 : d'un rajout d'un champ comme " usine" : je pense avoir compris qu'il faut insérer une ligne du type " T(5, x) = .Range("B9")"

merci
 

Paf

XLDnaute Barbatruc
re,

post 6 : je pense que le mieux c'est de créer une nouvelle colonne avec la réf de l'analyse
Ou sera cette colonne, ou se trouve la rèf analyse ?



pour que je puisse être " autonome " par la suite pouvez vous m'expliquer comment modifier le code dans le cas :
1 : d'un rajout de colonne
2 : d'un rajout d'un champ comme " usine" : je pense avoir compris qu'il faut insérer une ligne du type " T(5, x) = .Range("B9")"

dans le principe :

dans le code, on crée un tableau T (ReDim Preserve T(1 To 22, 1 To x)) de la dimension du tableau utilisé en feuille Synthèse ( colonne B à W) soit 22 colonnes.
la colonne 1 du tableau correspond à la colonne B de la feuille, la 2 à C, ....

si on rajoute une colonne dans la feuille, il faudra 'agrandir' le tableau T (ReDim Preserve T(1 To 23, 1 To x))
il faudra également décaler les affectations :
actuellement je veux 'coller' les informations MOYENNE, MINI, MAXI pour la longueur (cellules B33,B34,B35 des feuilles d'analyses) dans les colonnes I, J et K de la feuille synthèse.
Code:
        T(8, x) = .Range("B33")
        T(9, x) = .Range("B34")
        T(10, x) = .Range("B35")
parce que la colonne 8 de T correspond à la colonne I, la 9 à J ...

Si on veut rajouter une colonne température ( par exemple) en colonne G de la feuille synthèse, toutes les colonnes suivantes seront décalées; la colonne I passe en J, J en K et K en L ....
il faudra donc adapter le code
Code:
        T(6, x) = .Range("XX")  'donnée température
        T(9, x) = .Range("B33")
        T(10, x) = .Range("B34")
        T(11, x) = .Range("B35")

A+
 

Paf

XLDnaute Barbatruc
re
pourquoi la numérotation ne commence pas à la colonne 1

si c'est pour savoir pourquoi la colonne 1 du tableau T ne correspond pas à la colonne A de la feuille synthèse:
on avait rien à écrire dans la colonne A donc j'ai commencé en colonne B.
On peut très bien faire commencer T en A, mais, dans l'exemple du classeur, il faudra apporter les modifications suivantes:
- 'agrandir' le tableau T (ReDim Preserve T(1 To 23, 1 To x)) puisque A à W => 23 colonnes
- décaler toutes les affectations
T(1, x) = .Range("E5") deviendra T(2, x) = .Range("E5") (puisqu'écrit en colonne B)
T(2, x) = .Range("E7") deviendra T(3, x) = .Range("E7") (puisqu'écrit en colonne C)
- modifier
.Range("B" & DerL).Resize(UBound(T, 2), UBound(T, 1)) =......
en
.Range("A" & DerL).Resize(UBound(T, 2), UBound(T, 1)) = .....
pour coller le tableau T en A et non plus en B


Ce qui ne simplifie rien en cas de rajout de colonne.

Bon courage et bonne suite
 

Discussions similaires

Statistiques des forums

Discussions
312 270
Messages
2 086 685
Membres
103 370
dernier inscrit
pasval