Erreur 1004 aléatoire
Résolu
Wilhelm_Hort
Messages postés
17
Statut
Membre
-
Wilhelm_Hort Messages postés 17 Statut Membre -
Wilhelm_Hort Messages postés 17 Statut Membre -
Encore moi ^^
Toujours dans la saga "je cherche à finir ce *%*£# de système VBA, j'en suis sur le finish, mais là, c'est contrariant.
En gros, ma macro récupère une plage de 23 lignes de données dans chaque rapport, extension .xlsx, (à savoir que les 23 lignes ne sont pas forcément remplies, mais ensuite, j'efface les lignes vides), retourne dans mon fichier récapitulatif, et les colle ...
Mais, aléatoirement, de temps à autre, il me colle une erreur 1004, soit Paste, soit Select (désolé, je n'ai plus l'intitulé exact, il ne veut plus me reproduire la panne ^^)
Pour info, je suis sur Excel 2010.
Merci à tous pour votre patience ;)
EDIT: Précision du langage dans la coloration syntaxique.
Toujours dans la saga "je cherche à finir ce *%*£# de système VBA, j'en suis sur le finish, mais là, c'est contrariant.
En gros, ma macro récupère une plage de 23 lignes de données dans chaque rapport, extension .xlsx, (à savoir que les 23 lignes ne sont pas forcément remplies, mais ensuite, j'efface les lignes vides), retourne dans mon fichier récapitulatif, et les colle ...
Mais, aléatoirement, de temps à autre, il me colle une erreur 1004, soit Paste, soit Select (désolé, je n'ai plus l'intitulé exact, il ne veut plus me reproduire la panne ^^)
Pour info, je suis sur Excel 2010.
Merci à tous pour votre patience ;)
Dim rapportlu As String
rapportlu = Dir("C:\Users\MANIERY\Desktop\Rapports journaliers\*.xlsx")
While Len(rapportlu) > 0
'Annule toutes les alertes Excel
Application.DisplayAlerts = False
'Nom du fichier chargé'
fichiercharge.Caption = rapportlu
Me.Repaint
On Error GoTo 0
Workbooks.Open rapportlu
Workbooks(rapportlu).Sheets("Visualisation").Range("A2:Q25").Copy
Workbooks(rapportlu).Close
Workbooks(recap).Activate
Sheets("Production").Range("A" & k & ":Q" & k + 23).Select
ActiveSheet.Paste
Application.CutCopyMode = False
'On réincrémente le compteur de lignes du maximum d'occurences possibles'
k = k + 23
'Restaure l'affichage des Alertes
Application.DisplayAlerts = True
rapportlu = Dir
Wend
EDIT: Précision du langage dans la coloration syntaxique.
2 réponses
-
Bonjour,
la variable k est definie ou et a quelle valeur de depart-
-
Là, je viens d'avoir l'erreur sur une valeur de 7 ... c'est complètement aléatoire. Genre, pendant une dizaine de lancers de la macro, aucun souci, et d'un coup, il plante ...
Le "On Error Next", ça pourrait faire quelque chose ?- Bonjour,
Non, il vaut mieux traiter l'erreur, avec ce code devrait aller. Si toujours l'erreur, il faudra mettre une temporisation entre deux ouvertures de fichier, mais essayez ceci:
Par contre si classeur Recap n'est pas le classeur du code VBA, modifiez la ligne de copy
Dim rapportlu As String 'rapportlu = Dir("D:\_ACSV1\*.xlsx") rapportlu = Dir("C:\Users\MANIERY\Desktop\Rapports journaliers\*.xlsx") k = 1 While rapportlu <> "" 'Annule toutes les alertes Excel Application.DisplayAlerts = False Application.ScreenUpdating = False 'Nom du fichier chargé' 'fichiercharge.Caption = rapportlu 'Me.Repaint 'On Error GoTo 0 ' ???????????????????????????????????? Workbooks.Open rapportlu Workbooks(rapportlu).Sheets("feuil1").Range("A2:Q25").Copy ThisWorkbook.Sheets("Production").Range("A" & k & ":Q" & k + 23) Workbooks(rapportlu).Close 'On réincrémente le compteur de lignes du maximum d'occurences possibles' k = k + 25 'pourquoi 23 ???????????? vous ecrasez des lignes 'Restaure l'affichage des Alertes rapportlu = Dir Wend Application.DisplayAlerts = True Application.ScreenUpdating = True - Malheureusement, la méthode du Copy de cette manière (avec la destination incluse dans la même commande) ne fonctionne pas, recopiant les formules et non les valeurs (j'aurais aussi pu le préciser ^^)
En gros, on pioche dans les rapports lus des valeurs synthétisées dans l'onglet "Visualisation". Le nombre d'occurrences ne dépasse jamais 23 d'où l'incrémentation de 23 à chaque boucle.
Il me faut donc une propriété spéciale pour la copie des valeurs uniquement. Un specialpaste ?
Le "On Error Goto 0", je l'ai passé en "Resume Next", pour justement sauter les erreurs ^^
Cependant, cette méthode de Copy semble augmenter la rapidité d'execution de la commande.
-
-
Bonjour,
Le "On Error Goto 0", je l'ai passé en "Resume Next" De quelle erreur parlez-vous ???????????????????????
copie valeurs, inverser les membres du egal voir code
si 23 lignes a copier: Range("A2:Q24") pas 25
Sub test() Dim rapportlu As String 'ChDrive ("D") 'ChDir ("D:\_ACSV1") 'rapportlu = Dir("D:\_ACSV1\*.xlsx") rapportlu = Dir("C:\Users\MANIERY\Desktop\Rapports journaliers\*.xlsx") k = 1 While rapportlu <> "" 'Annule toutes les alertes Excel Application.DisplayAlerts = False Application.ScreenUpdating = False 'Nom du fichier chargé' fichiercharge.Caption = rapportlu Me.Repaint Workbooks.Open rapportlu ThisWorkbook.Sheets("Production").Range("A" & k & ":Q" & k + 22) = Workbooks(rapportlu).Sheets("feuil1").Range("A2:Q24").Value Workbooks(rapportlu).Close 'On réincrémente le compteur de lignes du maximum d'occurences possibles' k = k + 23 'Restaure l'affichage des Alertes rapportlu = Dir Wend Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub