Automatisation d'un fichier Excel

Fermé
kirile Messages postés 2 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 24 mai 2018 - 21 mai 2018 à 19:55
 Kirile - 3 juin 2018 à 18:45
Bonjour à tous,

Help, je peine à trouver la solution

Je vous expose mon cas.
J'ai un fichier Excel composé de plusieurs feuilles.
Dans la première, se trouve une extraction avec des données SAP, nommée "Report"
Dans la deuxième, se trouve un tableau croisé dynamique, nommé "Accuracy" qui puise sa source sur « Report »
Au plus on avance dans l'année et au plus il y a de données SAP et donc au plus mon TCD s'allonge
Le TCD de la feuille « Report » s'étend sur la plage A:7 à F:5200.
En bordure du tableau croisé dynamique, j'ai de simples formules en colonne G et H que je souhaite automatiquement étendre jusqu'à la dernière ligne active de mon TCD, qui comme vous l'avez compris s'allonge de jour en jour.

La formule en G est « =SI(D7="";"";E7-D7) »
La formule en H est « =SI(C7="";"";SI(G7=0;"OK";"NOK"))»

Comment faire pour qu’en cliquant sur un bouton « refresh », le TCD s’actualise et les formules se copient et collent jusqu’à la dernière ligne du TCD

Merci à tous de votre support


A voir également:

4 réponses

JuanLucas38 Messages postés 57 Date d'inscription mardi 22 mai 2018 Statut Membre Dernière intervention 3 avril 2023 4
22 mai 2018 à 23:20
Bonsoir

Une simple remarque. Tu ne peux pas mettre des 2 formules à gauche de ton TCD ?
Il s'allongera autant qu'il veut sur la droite et tes formules seront toujours valables.

Sinon pour ce qui concerne un code VB/VBA s'il n'y a pas de données confidentielles dans ton fichier peux tu le mettre en ligne pour voir à quoi il ressemble afin d'adapter le meilleur code.

Travailler en "aveugle" n'est pas facile.
0
kirile Messages postés 2 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 24 mai 2018
24 mai 2018 à 13:27
Bonjour,

Je ne parviens pas à mettre en ligne le fichier.
Je viens donc d'en faire une capture d'écran.

Mon TCD est donc sur l'onglet "Accuracy" et je souhaiterai que sur l'onglet "Report", après avoir importé les données SAP en fichier plat, l'utilisateur puisse, en cliquant sur un bouton "Mise à jour" :

- actualiser l'ensemble des TCD du fichier
- que les formules de la plage G:7084 et H:7084 se copient collent jusqu'à la dernière ligne active du fichier.

Le but est double pour moi, d'apprendre et de mettre à disposition un fichier un sexy

Merci ton aide


0
JuanLucas38 Messages postés 57 Date d'inscription mardi 22 mai 2018 Statut Membre Dernière intervention 3 avril 2023 4
24 mai 2018 à 20:16
Pour rafraichir tes TCD utilises le code

Workbooks().refreshall


Entre parenthèses tu mets le nom de ton fichier.

Pour les reste il faut que je retrouve une ancienne macro qui le faisait.
0
Merci
Je vais donc attendre que tu reviennes avec le reste du code.
Bonne soirée
0
JuanLucas38 Messages postés 57 Date d'inscription mardi 22 mai 2018 Statut Membre Dernière intervention 3 avril 2023 4 > Kirile
24 mai 2018 à 22:29
J'ai retrouvé mon veux code, il n'est peut être pas parfait mais il fonctionne.
J'ai tenté de l'adapter à tes cellules mais il faudra peut être encore l'affiner.....
A rajouter après le code précédent pour rafraichir ton TCD

'Récupérer la dernière ligne du TCD dans la variable Lignelibre
Range("C7").Select
Selection.End(xlDown).Select
lignelibre = ActiveCell.Row
'Faire copier/coller des formules colonnes G et H
Range("G7:H7").Copy Worksheets("Feuil1").Range(Cells(8, 7), Cells(lignelibre, 8))
Application.CutCopyMode = False
0
Bonsoir JuanLuca38

un grand Merci, le fichier marche super bien.

Je viens de rencontrer un autre pb.
Mon fichier est copié/collé et renommé toutes les semaines avec le Numéro de la semaine courante.
Le fichier à toujours la même structure et les onglets ont toujours les mêmes noms

Le problème est que les TCD gardent leurs sources sur le fichier d'origine.

Peux tu me dire comment faire pour que la source pointe sur l'onglet du fichier actif.

Merci de ton aide et bonne soirée
0
JuanLucas38 Messages postés 57 Date d'inscription mardi 22 mai 2018 Statut Membre Dernière intervention 3 avril 2023 4
1 juin 2018 à 19:22
Essaie ce code en adaptant la plage de ton TCD dans la partie soulignée:
Nom de l'onglet : Feuil1
Il faut bien rester en forme : R1C1 : (R)ow (ligne) 1 (C)olumn (colonne) 1
J'ai mis Ligne1 colonne 1 : Ligne 5 colonne 2 totalement au hasard a toi d'adapter.


ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
"Feuil1!R1C1:R5C2"
0
kirile1 > JuanLucas38 Messages postés 57 Date d'inscription mardi 22 mai 2018 Statut Membre Dernière intervention 3 avril 2023
3 juin 2018 à 15:30
encore MErci,

tous mes tableaux changent bien de source et s'actualisent correctement.
Ma base de données source s'allonge tous les jours.

Dans ta formule ci-dessous le numéro de ligne 15400 est amené a varier

ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
"Report!R10C1:R15400C35"

J'ai essayé de créer une variable "LIGNELIBRE3" qui vient capturer la dernière active de ma base de données.


Sheets("Report").Select
Range("B10").Select
Selection.End(xlDown).Select
lignelibre3 = ActiveCell.Row

Mais alors, comment intégrer cette variable dans ton code:

ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
"Report!R10C1:R15400C35"
0
JuanLucas38 Messages postés 57 Date d'inscription mardi 22 mai 2018 Statut Membre Dernière intervention 3 avril 2023 4 > kirile1
3 juin 2018 à 16:38
Essaies celui-ci


ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
"Report!R10C1:R" & Lignelibre3 & "C35"
0
Kirile > JuanLucas38 Messages postés 57 Date d'inscription mardi 22 mai 2018 Statut Membre Dernière intervention 3 avril 2023
3 juin 2018 à 18:45
Au top super, cela fonctionne très.
Merci encore de ton aide précieuse
0