Nicocotte125
XLDnaute Nouveau
Bonjour
Encore une fois je vous sollicite, car malgré pas mal de recherches et une certaine dose de remue-méninge je n'arrive pas à résoudre mon pb....
En mode pas à pas (F8) la macro ci-dessous fonctionne à merveille (même en mode F8 mitraillette). A noter que :
Mais en mode automatique la macro s'exécute bien plus vite que ne se rafraichissent les requêtes, et les requêtes en viennent à se rafraichir simultanément (ref. pièce jointe). Sachant que J'ai déjà pensé à :
-> Mais rien n'y fait à l'exécution de la Macro ca devient l'anarchie et l'ensemble fini par buguer ! Pas moyen que les choses se fassent dans le bon ordre. Donc si quelqu'un à l'astuce qui m'irait bien je suis preneur.
Pleins de merci en avance !
__________________________________________________
Encore une fois je vous sollicite, car malgré pas mal de recherches et une certaine dose de remue-méninge je n'arrive pas à résoudre mon pb....
En mode pas à pas (F8) la macro ci-dessous fonctionne à merveille (même en mode F8 mitraillette). A noter que :
- Les tables mettent entre 1 seconde et 3-4 secondes selon leur taille à se rafraichir
- Je travaille avec des fichiers en local sur mon poste pour m'éviter toutes déconvenues tragiques du à des pb de réseaux
Mais en mode automatique la macro s'exécute bien plus vite que ne se rafraichissent les requêtes, et les requêtes en viennent à se rafraichir simultanément (ref. pièce jointe). Sachant que J'ai déjà pensé à :
- Préciser .QueryTable.Refresh BackgroundQuery:=False (même si j'ai lu à droite à gauche que ca n'avait pas forcément un intérêt)
- Mettre un Timer dans la macro après chaque ligne de code "...Refresh..." mais cela à pour effet de geler l'actualisation de la table, et ne résout en rien le fait que la table suivante veut se synchroniser bien avant que son heure soit arrivée. -> donc aucun intérêt
- Vérifier que l'actualisation de mes connexions en arrière plan est bien désactivée pour mes quatre tables ! (réf. pièce jointe)
- Vérifier que chaque ligne de code "...Refresh..." ne commande bien qu'à une seule table
-> Mais rien n'y fait à l'exécution de la Macro ca devient l'anarchie et l'ensemble fini par buguer ! Pas moyen que les choses se fassent dans le bon ordre. Donc si quelqu'un à l'astuce qui m'irait bien je suis preneur.
Pleins de merci en avance !
__________________________________________________
VB:
Sub MAJ_Extraction_X3()
Dim Derniere_Ligne_Article As Variant: Derniere_Ligne_Article = 0
Dim Derniere_Ligne_Commande As Variant: Derniere_Ligne_Commande = 0
Dim Derniere_Ligne_Decor As Variant: Derniere_Ligne_Decor = 0
Dim Derniere_Ligne_Nomenclature As Variant: Derniere_Ligne_Nomenclature = 0
Dim Derniere_Ligne_Stock As Variant: Derniere_Ligne_Stock = 0
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.Calculation = xlManual
Inhibition_Fonction_Personnalisee = 1
Application.DisplayStatusBar = True
Application.StatusBar = "Initialisation des imports depuis extractions X3"
Application.CommandBars("Workbook Queries").Visible = True
' Mise à jour requête "BdD_yinfdec"--------------------------------------------------------------------------------
Application.StatusBar = "Import version & B.A.T. étiquette depuis extraction X3"
If Sheets("BdD yinfdec").FilterMode = True Then
Sheets("BdD yinfdec").ShowAllData
Else
End If
Sheets("BdD yinfdec").ListObjects("BdD_yinfdec").QueryTable.Refresh BackgroundQuery:=False
Sheets("BdD yinfdec").Calculate
Derniere_Ligne_Decor = Range(Worksheets("BdD yinfdec").ListObjects("BdD_yinfdec")).Rows.Count + 1
Sheets("BdD yinfdec").Range("U2").FormulaR1C1 = "=IF(MAX(BdD_Yinfdec[@[Acceptation BAT]],BdD_Yinfdec[@[Envoi BAT]]+Delai_Recep,BdD_Yinfdec[@[Réception réelle BAT]]+Delai_Recep,BdD_Yinfdec[@[Récep prév BAT]]+Delai_Recep)>0,MAX(BdD_Yinfdec[@[Acceptation BAT]],BdD_Yinfdec[@[Envoi BAT]]+Delai_Recep,BdD_Yinfdec[@[Réception réelle BAT]]+Delai_Recep,BdD_Yinfdec[@[Récep prév BAT]]+Delai_Recep),73050)"
Sheets("BdD yinfdec").Activate
Sheets("BdD yinfdec").Range("U2").AutoFill Destination:=Range("U2:U" & Derniere_Ligne_Decor)
Sheets("BdD yinfdec").Calculate
Sheets("BdD yinfdec").Range("U:U").Copy
Sheets("BdD yinfdec").Range("U:U").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' Mise à jour requête "BdD_ystoext"--------------------------------------------------------------------------------
Application.StatusBar = "Import stock physique et sécurité depuis extraction X3"
If Sheets("BdD ystoext").FilterMode = True Then
Sheets("BdD ystoext").ShowAllData
Else
End If
Sheets("BdD ystoext").ListObjects("BdD_ystoext").QueryTable.Refresh BackgroundQuery:=False
Sheets("BdD ystoext").Calculate
Derniere_Ligne_Stock = Range(Worksheets("BdD ystoext").ListObjects("BdD_ystoext")).Rows.Count + 1
Sheets("BdD ystoext").Range("A2").FormulaR1C1 = "=COUNTIF(Mouvements!C[6],RC[2])"
Sheets("BdD ystoext").Range("A2").AutoFill Destination:=Range("A2:A" & Derniere_Ligne_Stock)
Sheets("BdD ystoext").Calculate
' Mise à jour requête "BdD_ycdecrs"--------------------------------------------------------------------------------
Application.StatusBar = "Import des commandes clients depuis extraction X3"
If Sheets("BdD ycdecrs").FilterMode = True Then
Sheets("BdD ycdecrs").ShowAllData
Else
End If
Sheets("BdD ycdecrs").ListObjects("BdD_ycdecrs").QueryTable.Refresh BackgroundQuery:=False
Sheets("BdD ycdecrs").Calculate
Derniere_Ligne_Commande = Range(Worksheets("BdD ycdecrs").ListObjects("BdD_ycdecrs")).Rows.Count + 2
Sheets("BdD ycdecrs").Range("A3").FormulaR1C1 = "=IF(COUNTIF(Mouvements!C,'BdD ycdecrs'!RC[1])<>0,"""",""X"")"
Sheets("BdD ycdecrs").Range("B3").FormulaR1C1 = "=""["" &RC[2]&"" #""&RC[4]&""]"""
Sheets("BdD ycdecrs").Range("A3:B3").AutoFill Destination:=Range("A3:B" & Derniere_Ligne_Commande)
Sheets("BdD ycdecrs").Calculate
Sheets("BdD ycdecrs").Range("B:B").Copy
Sheets("BdD ycdecrs").Columns("B:B").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' Mise à jour requête "BdD_ycondpal"------------------------------------------------------------------------------
Sheets("BdD ycondpal").Activate
Application.StatusBar = "Import des nomenclatures depuis extraction X3"
If Sheets("BdD ycondpal").FilterMode = True Then
Sheets("BdD ycondpal").ShowAllData
Else
End If
Sheets("BdD ycondpal").ListObjects("BdD_ycondpal").QueryTable.Refresh BackgroundQuery:=False
Derniere_Ligne_Nomenclature = Range(Worksheets("BdD ycondpal").ListObjects("BdD_ycondpal")).Rows.Count + 1
Sheets("BdD ycondpal").Calculate
Sheets("BdD ycondpal").Range("A2:A" & Derniere_Ligne_Nomenclature).Font.Name = "Wingdings"
Sheets("BdD ycondpal").Range("A1").Value = "Arborescence"
Sheets("BdD ycondpal").Range("B1").Value = "Version"
Sheets("BdD ycondpal").Range("C1").Value = "Sous-Version"
Sheets("BdD ycondpal").Range("D1").Value = "BAT"
Sheets("BdD ycondpal").Range("A2").FormulaR1C1 = "=IF(SUMIF(C[5],RC[7],C[12])<>0,""ý"",""ð"")"
Sheets("BdD ycondpal").Range("B2").FormulaR1C1 = "=IFERROR(VLOOKUP(RC[6],'BdD yinfdec'!C[-1]:C[2],4,FALSE),"""")"
Sheets("BdD ycondpal").Range("C2").FormulaR1C1 = "=IFERROR(VLOOKUP(RC[5],'BdD yinfdec'!C[-2]:C[2],5,FALSE),"""")"
Sheets("BdD ycondpal").Range("D2").FormulaR1C1 = "=SUMIF('BdD yinfdec'!C[-3],BdD_ycondpal[@Composant],'BdD yinfdec'!C[17])"
Sheets("BdD ycondpal").Range("A2:D2").AutoFill Destination:=Range("A2:D" & Derniere_Ligne_Nomenclature)
Sheets("BdD ycondpal").Calculate
Sheets("BdD ycondpal").Range("A:D").Copy
Sheets("BdD ycondpal").Columns("A:D").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' Sortie de macro-----------------------------------------------------------------------------------------------------
Application.StatusBar = "Recalculs"
Application.Calculation = xlAutomatic
Inhibition_Fonction_Personnalisee = 0
Application.CommandBars("Workbook Queries").Visible = False
Sheets("Planification").Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
Sheets("Planification").Range("B3").Select
Application.StatusBar = "Import des extractions : OK"
End Sub
Pièces jointes
Dernière édition: