bout de code pour fermer un classeur après importation d'un onglet

perdinch

XLDnaute Occasionnel
Bonjour,
ce code est sensé extraire 45 onglets issus de différents classeurs et les copier dans un seul et unique fichier .
Problème: au bout du 43 ème onglets importés j'ai une erreur 1004 "la méthode copy de la classe worksheet a échoué".

Solution préconnisée par microsoft:il faudrait qu'après chaque onglet importé, le classeur soit fermé.La présente macro le fait mais à la fin (donc après avoir ouvert + d'une quarantaine de classeur).

Pouvez m'aider à adapter le code pour qu'après chaque importation de d'onglet le classeur se ferme ou tout autre suggestion.
Le fichier étant lourd , je ne peux que vous transmettre le code.J'espère que cela pourra suffire.

CORDIALEMENT

Sub Extraction_de_tous_les_onglets_produit()

Dim nblig As Integer
Dim chemin As String
Dim nom_classeur_TABLO2010 As String
Dim posi_ongl As Variant
Dim classeur As Object
Dim feuill As Object


Call formule

posi_ongl = Sheets.Count
nom_classeur_TABLO2010 = ActiveWorkbook.Name

Sheets("Liste_fichiers_TABLO2010").Visible = True

For Each feuill In ActiveWorkbook.Worksheets
If feuill.Name Like "produits*" Then
feuill.Delete
End If
Next feuill

'ouvre 1 par 1 les 45 fichiers et extrait l'onglet appelé "produit*"

Sheets("Liste_fichiers_TABLO2010").Select
nblig = Sheets("Liste_fichiers_TABLO2010").Application.WorksheetFunction.CountA(Range("A:A"))

For i = 1 To nblig
Range("A" & i).Select
chemin = Range("A" & i).Value

posi_ongl = Sheets.Count
'chemin = chemin d'accès au fichier à ouvrir
Workbooks.Open Filename:=chemin
For Each feuill In ActiveWorkbook.Worksheets

'si la le nom de l'onglet contient le mot produit alors tu le copies
If feuill.Name Like "produits*" Then
feuill.Copy After:=Workbooks(nom_classeur_TABLO2010).Sheets(posi_ongl)
Sheets("Liste_fichiers_TABLO2010").Select
End If
'*********je pense que c'est à cet endroit ou le classeur doit être fermé après avoir copier l'onglet et avant d'ouvrir un nouveau fichier.**********

Next feuill
Next i

'**********PARTIE DE CODE A REMPLACER*****************
'Fermeture de tous les classeurs ouverts à la fin de la macro

For Each classeur In Workbooks
If classeur.Name <> ThisWorkbook.Name Then
classeur.Close
End If
Next classeur
'**************************************************

Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub
 

YANN-56

XLDnaute Barbatruc
Re : bout de code pour fermer un classeur après importation d'un onglet

Bonsoir perdinch.

Voici un p'tit classeur dont tu pourrais éventuellement utiliser le principe pour ton projet.

Il reste à l'adapter pour une boucle sur tes classeurs.
(A noter que la feuille choisie est intégralement copiée,
y compris dans sa forme)

Je l'utilise cette méthode, mais pour l'inverse:
La copie d'une Feuille d'un classeur dans une série d'une cinquantaine d'autres classeurs.

A voir si …

Amicalement

Yann
 

Pièces jointes

  • COPIE_FEUILLE.xls
    39 KB · Affichages: 71
  • COPIE_FEUILLE.xls
    39 KB · Affichages: 66
  • COPIE_FEUILLE.xls
    39 KB · Affichages: 74

YANN-56

XLDnaute Barbatruc
Re : bout de code pour fermer un classeur après importation d'un onglet

Re:

Cela est totalement possible…

A toi de jouer. :D

Si soucis: tu me le dis.

Pas ce soir, car un orage m'oblige à débrancher mon modem. :mad:

A plus, si tu en as besoin.

Yann
 

camarchepas

XLDnaute Barbatruc
Re : bout de code pour fermer un classeur après importation d'un onglet

Bonsoir,

j'ai résolu le même problème en mettant ma feuille modele dans un classeur .xlt, et je recopie depuis ce fichier, plus de 200 copies sans problème (Bien pour un speudo publi postage.
 

perdinch

XLDnaute Occasionnel
Re : bout de code pour fermer un classeur après importation d'un onglet

bonjour

la solution de microsoft est d' enregistrer et fermer le classeur recevant les onglets par exemple au bout de 30 onglets importés puis de le rouvrir pour continuer le process d'importation.

Je vais essayer ca

cordialement
 

YANN-56

XLDnaute Barbatruc
Re : bout de code pour fermer un classeur après importation d'un onglet

Bonjour perdinch et à ceux qui passeront par là.

Voici une adaptation qui doit aller dans le sens de ce que tu cherches.

Il restera à faire éventuellement une boucle sur les feuilles existantes des classeurs pour déterminer celle à copier;
si cette feuille n'est pas obligatoirement la (1) … Voire à l'appeler par son nom.

De même rebaptiser, au passage, les onglets créés, si besoin.

Je revendique le peu de lignes… Mais il certainement possible de faire plus bref!!! :p

Tu me dis…

Amicalement.

Yann

P.S.: Je l'ai testé sans soucis sur un dossier avec 203 Classeurs.
 

Pièces jointes

  • POMPER.xls
    36 KB · Affichages: 56
Dernière édition:

YANN-56

XLDnaute Barbatruc
Re : bout de code pour fermer un classeur après importation d'un onglet

Bonjour Perdinch!

Pas de nouvelle => Bonne nouvelle...

Quelques fois, l'on aime bien savoir si le temps passé à servi à quelque chose!!! :)

Amicalement.

Yann
 

jeanpierre

Nous a quitté
Repose en paix
Re : bout de code pour fermer un classeur après importation d'un onglet

Bonjour le fil,

YANN-56, deux solutions puisque tu as déjà eu une réponse non négligeable.....

Soit perdinch n'a pas de connection régulière à Internet, ce qui arrive très souvent.

Soit cela fonctionne bien, Cf sa réponse (du 26 à 20h33)....

Donc ne pas se prendre la tête inutillement.....

Quand ça marche pas, on le sait....

Allez cool et Bon WE.

Jean-Pierre
 

YANN-56

XLDnaute Barbatruc
Re : bout de code pour fermer un classeur après importation d'un onglet

Bonjour Jean Pierre, et à ceux qui passeront par là,

Je prends bonne note de ta remarque;
tu as totalement raison.

J'étais certainement par trop empressé de connaître les résultats de ses tests,
ainsi qu'il en a fait allusion dans son dernier message.

Désolé! :rolleyes:

Bonne fin de fin de semaine à toi itou.

Yann
 

Discussions similaires

Réponses
5
Affichages
246

Statistiques des forums

Discussions
312 516
Messages
2 089 237
Membres
104 074
dernier inscrit
Romuald MORVAN