Pb d'extraction de donnée via Query et macro

Bonjour,

Aucun souci sur le fichier posté donc ma question est --> Avez-vous essayé sur le fichier que vous avez posté sur le forum ?

Pour le point 2, ajoutez cette instruction juste avant le END SUB

Worksheets("HistoriqueProcess").Select

Crdlt

Non j'ai testé sur le fichier définitif.

Par contre si je prends le fichier test, j'ai le même pb lorsque je modifie la date de l'une des 1ère lignes en 14/06 au lieu de 30/05 par exemple, il ne la voit pas...comme s'il commençait l'analyse depuis le bas de la liste et s'arrêtait de cherché une fois le délai choisit atteint. Il ne va pas explorer toutes les lignes du document.

2test2.xlsx (275.45 Ko)

D'ailleurs, si j'inverse le classement des dates, cela ne fonctionne plus du tout.

Il faudrait que la Macro scan bien toutes les lignes présentes dans l'onglet sans restriction.

re

comme s'il commençait l'analyse depuis le bas de la liste et s'arrêtait de cherché une fois le délai choisit atteint. Il ne va pas explorer toutes les lignes du document.

Oui le code fonctionne de bas en haut. Ce qui est plus simple et plus rapide.
Je vous ai d'ailleurs posé une question ici --> https://forum.excel-pratique.com/s/goto/1206197

Dans ce cas le mieux est de passer par un tri des dates avant d'exécuter le code proposé
Si ok pour vous, je vous donnerai un code de tri à exécuter avant.

Il faudrait que je comprenne comment arrivent les dates, notamment parce que je vois une date 0 05 24 ???
Aussi votre format de date devrait être en date courte. Exemple 1 05 24 serait plutôt à avoir comme ceci 01 05 24

Dites moi..

Les dates du fichier test sont fictives, elle sont au bon format sur le vrai fichier.

N'est ce pas trop lourd de faire un tri des dates sur 15000/20000 lignes ? si c'est ok pour vous moi ça me va !

Pour répondre à votre question, les datas sont collectées par Queries depuis différents onglets de 2 autres fichiers excel. Les lignes s'empilent par paquet... toutes les lignes du 1er onglet, puis toutes les lignes du 2ème onglet dessous...etc (Par conséquent les données les plus récentes peuvent se trouver en lignes 15 + 5200 + 14000... aléatoirement)

Les dates du fichier test sont fictives, elle sont au bon format sur le vrai fichier.

Heu oui et non. il faudrait que par exemple 8 05 24 soit au format 08 05 24. En gros, les dates doivent avoir 6 caractères --> dd mm yy

N'est ce pas trop lourd de faire un tri des dates sur 15000/20000 lignes ? si c'est ok pour vous moi ça me va !

20000 lignes !!! ça va ramer ferme çà avec excel. Donc là il vaut mieux arranger avec un tri

ah oui effectivement les dates n'ont pas tjs 6 chiffres, je vais corriger ça.

Oui y'a bcp de données mais je ne sais pas s'il est possible d'importer uniquement la dernière année par Query

Ok. Voyez d'abord si c'est possible.
Sinon je dois changer l'approche dans la partie des lignes 'ajout des données

Alors oui c'est possible, j'ai trouvé comment faire. J'ai juste une erreur à résoudre et c'est bon !

Je peux peut être même classer par date, mais pour le moment ça ne fonctionne pas trop.

Ok j'ai réussi à trier par date et diminuer le nombre de ligne, ça fonctionne.

Par contre est-il possible de basculer directement sur l'onglet historique une fois la requête faite ?

Ok j'ai réussi à trier par date et diminuer le nombre de ligne, ça fonctionne.

On peut faire un code pour cela si vous voulez mais je dois être sûr du format de date comme je vous ai écrit avant
on peut tout faire par code mais vu le nombre de lignes, ce serait intéressant de ne pas utiliser un code qui met 20000 dates au bon format...

Par contre est-il possible de basculer directement sur l'onglet historique une fois la requête faite ?

Je vous ai écrit ici ce qu'il faut faire --> https://forum.excel-pratique.com/s/goto/1206324

Comme ceci ? Si oui ça ne fonctionne pas, je reste sur mon onglet de base

Pas besoin pour l'ajout du code de tri, avec les Queries, j'ai déjà gagné beaucoup de temps et le tri est déjà fait.

Sub HistoriqueProcess()
'----------Efface tout-------------------
Dim dl As Long
With Sheets("HistoriqueProcess")
    dl = .UsedRange.Rows.Count
    With .Rows("2:" & dl)
        .ClearContents
        .EntireRow.AutoFit
        With .Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
    End With

    With .Range("B1")
        .Value = Now()
        .NumberFormat = "m/d/yyyy h:mm"
    End With
End With

'-----------ajout des données--------------
Dim jour As Date
Dim j As Integer
Dim rep As Integer

On Error Resume Next
rep = Application.InputBox("1 = 24 Heures" & vbLf & "2 = 48 Heures" & vbLf & "3 = 1 semaine" & vbLf & "4 = Arrêter", "Choix nombre de jour", , 1)
Select Case rep
     Case Is = 1: K = 2
     Case Is = 2: K = 3
     Case Is = 3: K = 7
     Case Is = 4: Exit Sub
End Select

With Sheets("PD Process")
    dl = .UsedRange.Rows.Count
    j = 2
    For i = dl To 2 Step -1
        jour = Format(.Range("B" & i), "dd/mm/yyyy")
        With Worksheets("HistoriqueProcess")
            If CLng(.Range("B1")) > CLng(jour) + K Then Exit Sub
            .Range("B" & j & ":K" & j).Value = Worksheets("PD Process").Range("B" & i & ":K" & i).Value2
            j = j + 1
        End With
    Next i
End With
Worksheets("HistoriqueProcess").Select
End Sub

Et autre chose, j'ai l'impression que les macros ne fonctionnent pas si les fichiers sources sont ouverts ailleurs et en cours d'utilisation, est-ce possible ? Si oui peut-on contourner ce problème ?

Pas besoin pour l'ajout du code de tri, avec les Queries, j'ai déjà gagné beaucoup de temps et le tri est déjà fait.

Possible de me donner le fichier ?

j'ai l'impression que les macros ne fonctionnent pas si les fichiers sources sont ouverts ailleurs et en cours d'utilisation, est-ce possible ?

Non sauf si vous avez des codes dans les autres fichiers.
MAis ce que vous pouvez faire c'est devant chaque nom worksheet, ajoutez THISWORKBOOK
Exemple au début :

With Thisworkbook.Sheets("HistoriqueProcess")

Ensuite plus bas vous devez encore mettre cela à 4 endroits

question : Je suppose que le code se trouve bien dans le fichier que vous avez posté ?

Malheureusement le fichier est trop lourd.

Ok j'ajouterai THISWORKBOOK.

Je test ça semaine prochaine, je suis en congés à partir d'aujourd'hui.

Merci pour tout, je posterai la suite ici si j'ai d'autres questions.

Malheureusement le fichier est trop lourd.

Vous pouvez réduire le poids en éliminant des lignes ou faites un essai en enregistrant le fichier avec l'extension XLSB

Je test ça semaine prochaine, je suis en congés à partir d'aujourd'hui.

Ok. Bon congé !

Crdlt

Rechercher des sujets similaires à "extraction donnee via query macro"