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.
A voir également:
- Erreur 1004 aléatoire
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
2 réponses
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
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
PS : désolé de la réponse tardive ;)
Si l'erreur se represente, clic sur debugage, passez le curseur souris sur la variable k pour voir son contenu.
Le "On Error Next", ça pourrait faire quelque chose ?
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 = TrueEn 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.