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 SubPièces jointes
			
				Dernière édition: