erreur automation

marjo

XLDnaute Nouveau
Bonjour,

J'ai réalisé une maquette sur la feuille "Maquette".
Celle-ci va rechercher des informations dans d'autres feuilles du classeur en fonction du n°client renseigné en H1.
J'ai fait une macro qui, pour une liste de clients (feuille "liste1"), va copier le n° client en H1 de la feuille "Maquette", fait une copie de la feuille et la renomme avec le n° client indiqué en H1.

Sub FichesyntheseListe1()
'
' FichesyntheseListe1 Macro
' Macro enregistrée le 28/11/2007 par L305617
'

'
'Déclaration de la variable Liste = liste des clients

Dim vListe1 As Object

'déclaration de la variable NomFeuille qui servira à renommer les feuilles
Dim NomFeuille As String

'Selection de la feuille "Liste1"
Sheets("Liste1").Select
'Boucle pour lecture de la liste des etablissements
For Each vListe1 In [A:A]

'Teste si cellule n'est pas vide
If vListe1 <> "" Then

'copie le n°client
vListe1.Copy
'collage special du n°client dans la cellule H1 de la feuille maquette
Sheets("Maquette").Select
Range("H1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'définition de la variable nbFeuilles pour placer la copie de la feuille maquette en dernier
nbFeuilles = Sheets.Count
'copie de la feuille maquette en dernier
Sheets("Maquette").Copy After:=Sheets(nbFeuilles)
'Sheets("Maquette").Copy After:=Sheets("Liste1")
'copier coller en valeur de maquette(2)

Sheets("Maquette (2)").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'Renomme la feuille avec le n° client
NomFeuille = Range("H1")
Sheets("Maquette (2)").Name = NomFeuille

'pour vider le presse papier sinon prob memoire et prob execution macro
Dim Cible As DataObject

Set Cible = New DataObject
Cible.SetText ""
Cible.PutInClipboard

Set Cible = Nothing

Else
'Sort de la boucle si cellule vide
Exit For

End If

Next

End Sub

Mais ma macro n'est pas stable, quand la liste est trop longue elle n'arrive pas jusqu'au bout. Je pensais qu'en vidant le presse papier cela irait mieux. Aucun changement. Certaines fois elle plante pratiquement tout de suite. Je ferme excel et recommence, elle va parfois plus loin dans la liste des clients.

Message Erreur :
Erreur d'execution '-2147417848 (80010108)' :

Erreur automation.
L'objet invoqué s'est déconnecté de ses clients

Avez-vous une idée
Je n'ai aucune formation en macro VBA. Je fais des requêtes assitées et je les modifie en allant sur les forums. J'utilise Excel 2000.

Merci
Marjorie
 

Excel_lent

XLDnaute Impliqué
Re : erreur automation

Bonsoir marjo et bienvenue,
re à tous et aux autres.

Il n'est pas aisé d'étudier une macro hors de son contexte.
Vois si le code suivant peut convenir.
Code:
Sub FichesyntheseListe1()
Dim vListe1 As Range
Dim nbFeuilles As Integer
Sheets("Liste1").Select
For Each vListe1 In [A:A]
  If vListe1 <> "" Then
    vListe1.Copy Sheets("Maquette").Range("H1")
    nbFeuilles = Sheets.Count
    Sheets("Maquette").Copy After:=Sheets(nbFeuilles)
    ActiveSheet.Name = vListe1
  End If
Next
End Sub
 

marjo

XLDnaute Nouveau
Re : erreur automation

Merci pour ta réponse.

j'ai essayé ton code.
J'ai à présent, Erreur d'execution 1004
La méthode copy de la class worksheet a échoué.

C'est très instable car à d'autres executions j'ai la première erreur :
Erreur d'execution '-2147417848 (80010108)' :

Erreur automation.
L'objet invoqué s'est déconnecté de ses clients
 
Dernière édition:

Banzai64

XLDnaute Accro
Re : erreur automation

Bonsoir
j'ai testé la macro de Excel_lent pas de soucis majeurs à part le fait qu'il va lire toute la colonne
donc remplace

Code:
For Each vListe1 In [A:A]

par
Code:
For Each vListe1 In Range("A1:A" & Range("A65536").End(xlUp).Row)
testes si tu as toujours l'erreur
 

Excel_lent

XLDnaute Impliqué
Re : erreur automation

Bonsoir Marjo, Banzai,

Tu as raison Banzai mais j'ai essayé avant tout d'éliminer l'erreur rencontrée avec la macro donnée.
Marjo,
comment la lances-tu ?
Où est-elle écrite ?
Si elle est dans la Feuill1, les noms des onglets seront ceux* de la colonne A de cette feuille et pas ceux de la colonne A de la feuille "Liste1" malgré la ligne
Sheets("Liste1").Select.

*Erreur d'execution 1004 apparaît quand le nouveau nom n'est pas valide (déjà utilisé ou avec un caractère interdit).
Si tu as encore d'autres messages d'erreur, l'origine des problèmes peut provenir d'une autre macro.
Un bout de ton fichier (significatif quand même) nous permettrait d'en savoir plus?
 

marjo

XLDnaute Nouveau
Re : erreur automation

Pour executer ma macro, je me place sur la feuille Liste1, outil macro et executer.
Elle est écrite dans le module 1 (je ne sais pas si cela répond à ta question).

En fait elle s'execute parfaitement (elle me crée une feuille pour les premiers clients) puis soit l'une ou l'autre des deux erreurs évoquées précédemment se produit, apparemment pas toujours au même endroit (aux environs de la ligne 112 da la liste des clients).

Avant de modifier ma macro, j'avais fait des tests; je ne sais pas si cela pourra vous aiguiller.
1- j'ai supprimé toutes les formules de ma feuille "maquette" (rechercheV, Gauche, Ou, SI, Concatener...): la macro va jusqu'au bout
2- j'ai fait 2 fichiers et divisé la liste des clients en 2 (j'ai laissé mes formules dans la feuille "Maquette" : la macro va jusqu'au bout dans les 2 fichiers

Je n'y comprends rien :(
 

Discussions similaires

Réponses
5
Affichages
176

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji