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
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