XL 2010 Aide macro

safranien

XLDnaute Occasionnel
Bonsoir à tous,
je sollicite votre aide pour la création d'une macro. Je dispose d'un fichier déjà fort volumineux plein de formules et pour ce que j'ai besoin de faire, le réaliser par formule alourdit considérablement le fichier et les temps de calculs. C'est pourquoi je pense que le mieux est de passer par une macro. Le problème est que je n'y connais pas grand chose et j'ai beau avoir essayé de trouver des codes sur des forums, je n'arrive pas à obtenir le résultat voulu.

Dans le fichier joint:
_ onglet "export" dans lequel je viens copier coller des données issues d'un lgiciel (qui mériterait là aussi une macro mais on vera plus tard ^^)
_ onglet SAISIE : en sélectionnant un site, je souhaiterais que la macro trouve le site en question dans l'onglet "Export", et copie / colle (spécial, valeurs) les dates du 1er janvier jusqu'à la date correspondant à la dernière cellule comportant une valeur. Par exemple, pour le site 1, copier coller les dates du 01/01/2019 00:00 jusqu'au
02/08/2019 05:00 (car c'est à cette date qu'il y a la dernière valeur) en A12 de l'onglet "SAISIE" et copier / coller (spécial, valeurs) les données associées au site site 1 en B12 dans l'onglet "SAISIE". Cela m'est égal si il y a des cellules sans valeurs dans l'onglet "Export", je souhaite que ça copie/colle tout depuis le 1er janvier.

Ensuite, si je sélectionne un autre site, la macro efface toute les données de l'onglet "SAISIE" (de A12 à B52715) et on recommence le cycle éxpliqué précédemment.

Je dispose déjà d'un bouton "Actualiser les graphique" qui vient m'actualiser mes TCD et graphiques associés dans mon fichier d'origine. J'aimerais que la macro soit liée à ce bouton et que la macro se termine par l'actualisation des données.

Pour alléger le fichier, je n'ai pas mis toute l'année, mais les données sur une année complète iront jusqu'à la ligne 52571 (52715 pour les années bissextiles).

En espérant avoir été clair et que vous pourrez m'aider.

Merci d'avance et bonne soirée.
 

Pièces jointes

  • 1 - ANAEL - COLL33 - EXCEL DOWN.xlsm
    964.2 KB · Affichages: 14

Calvus

XLDnaute Barbatruc
Bonjour Safranien, le forum,

Je comprendrais que tu en aies marre mais ça serait dommage de s'arrêter si près du but ;)

Ce n'est pas que j'en ai marre, mais désolé, je n'arrive pas à te comprendre. Je pense qu'il vaut mieux que je passe la main, car je dois être dur à la comprenette..
Ce fameux menu pour lequel je dis depuis 4 messages qu'il se trouve en cellule A5 de l'onglet SAISIE. Je ne sais pas comment être plus concis et précis à la fois...

Je viens de télécharger le dernier fichier que tu as envoyé, et il n'y a pas de menu, ni Validation de Données, ni rien. Les infos doivent se perdre en cours de téléchargement..
Ou alors liaison par chez toi.

C'est à dire que par exemple, pour le site 1, la dernière valeur étant 17 au 01/01/2019 10:10, la recopie des dates dans l'onglet SAISIE doit être du 01/01/2019 00:00 au 01/01/2019 10:10 et pas au delà.

Toujours dans ce même fichier, je ne trouve pas ces infos.
En feuille 1 :
1565262921394.png


En feuille 2
1565262976401.png


Rien qui ne corresponde à ce que tu dis. Si c'est moi qui déraille, je te prie de m'en excuser et de me montrer là où je me trompe.

Alors j'aimerais bien t'aider, mais là je n'y arrive pas.


Je te remets tout de même un code en imaginant avoir saisi quelque chose, en tout cas ce qui me paraît le plus logique.
J'ai trouvé ton 17 10H10 en ligne 73 de la feuille Export. J'en ai déduit que c'est ce dont tu parlais, j'ai donc supprimé les cellules se situant en dessous. (suis pas sûr du tout mais bon..)

VB:
Option Explicit
Option Base 1
Sub Copie()
Dim f1 As Worksheet, f2 As Worksheet, i As Long, n As Long, t1, t2, a()
Dim col As Range

Set f1 = Sheets("SAISIE")
Set f2 = Sheets("Export")

f1.Range("A12:B65000").ClearContents

If f1.[A5] <> "" Then
Set col = f2.Range("B6:D6").Find(f1.Range("A5"))
Else: Exit Sub
End If

t1 = f2.Range(f2.Cells(12, 1), f2.Cells(Rows.Count, 1).End(xlUp))
t2 = f2.Range("A12: D" & f2.Range("A" & Rows.Count).End(xlUp).Row)

ReDim a(UBound(t2), 2)
For i = 1 To UBound(t2)
    If t2(i, col.Column) <> "" Then
        n = n + 1
            a(n, 1) = t2(i, 1)
            a(n, 2) = t2(i, col.Column)
    End If
Next i

f1.Range("A12").Resize(UBound(a), 2) = a
End Sub


A+
 

Pièces jointes

  • Anael (1).xlsm
    972.3 KB · Affichages: 4

safranien

XLDnaute Occasionnel
re

cette histoire de menu déroulant qui n'apparaît chez toi restera un grand mystère car il y est bien dans le fichier que tu m'as retourné dans ton précédent message.
Dans tous les cas cette dernière mouture répond parfaitement à ce que je cherchais à faire. Encore merci pour ton aide et ta patience et promis je ferai mieux la prochaine fois.

Bonne journée à toi et au forum
 

Statistiques des forums

Discussions
314 651
Messages
2 111 544
Membres
111 199
dernier inscrit
mavoungou regis