Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Script VBA à corriger et optimiser

  • Initiateur de la discussion Initiateur de la discussion ebertail92
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

ebertail92

Guest
Dans un répertoire c:/testEB se trouve deux fichiers Excel : « Base_A et Base_B ».
Base_A contient un onglet data qui possède 23 colonnes et un nombre de lignes aléatoires.
Base_B doit récupérer via un script VBA les données de l’onglet data du fichier « Base_A » en ayant préalablement nettoyé le deuxième onglet Eric du fichier Base_B
Ensuite, l’onglet Eric sera la base pour des tableaux croisés et des graphs qui seront actualisés automatiquement.
Le script VBA est le suivant :
Sub actualisation()
Dim wbBase_B As Workbook, wksVBA As Worksheet, wksEric As Worksheet
Dim wbBase_A As Workbook, wksdata As Worksheet
'---------------------------------------
Application.EnableEvents = False
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'---------------------------------------
Set wbBase_B = ThisWorkbook
Set wksVBA = wbBase_B.Worksheets("VBA")
Set wksEric = wbBase_B.Worksheets("Eric")
Emplacement_Eric = Range("Emplacement_Eric").Value
If MsgBox("Etes vous sur de vouloir actualiser?", vbYesNo) = vbYes Then

DL1 = wksEric.Range("a1000").End(x1Up).Row
wksEric.Range("$A$1:$W$" & DL1).ClearContents

'Copie de Données
Set wbBase_A = Workbooks.Open(Emplacement_Données)
Set wksdata = wbBase_B.Worksheets("")
If wksdata.AutoFilterMode = False Then
Selection.AutoFilter
Else
wksdata.AutoFilterMode = False
End If
DL2 = wksdata.Range("a10000").End(xlUp).Row

wksdata.Range("$A$1:$W$" & DL2).Copy
wksEric.Range("A1").PasteSpecial xlPasteValues
wbBase_B.Close (False)
wksVBA.Select
MsgBox ("Le fichier a été mis à jour")
End If
'---------------------------------------
Application.EnableEvents = True
Application.AskToUpdateLinks = True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
'---------------------------------------
End Sub

Je possède un onglet VBA avec un bouton pour exécuter la macro avec notamment le chemin indiquant ou se trouve le fichier "Base_A" sous le nom de cellule : Emplacement_Eric.
Je constate une erreur d’exécution '1004' définie par l'application ou l'objet à la ligne DL1= wksEric.Range ("a1000") .End (x1Up) .Row
Pouvez-vous m'aider à bien écrire mon script ? Merci par avance.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…