VBA : copie de feuilles qui se passe mal

  • Initiateur de la discussion Initiateur de la discussion C@thy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C@thy

XLDnaute Barbatruc
Bonjour le forum,

j'essaie de copier les feuilles d'un vieux fichier (créé sous office97) comportant des modules macros.
En fait, ce fichier a vécu, des feuilles ont été supprimées, d'autres rajoutées, une feuille a pour nom Sortie, ce qui semble le perturber...(?), il y a des feuilles qui sont des boites de dialogue (le classeur est vraiment ancien)

Tout se passe très bien jusqu'à la feuille 6, mais après il cherche à me copier les modules!...
(j'ai mis des variables pour tracer le n° de la feuille et son nom,
Il me dit que le classeur comporte 27 feuilles alors qu'il n'en a que 12!!!)
bref, j'y perds mon latin...

Auriez-vous une idée pour pouvoir copier les feuilles de mon classeur correctement???

Un grand merci à vous si vous pouvez m'apporter votre aide, même minime...

Bises sous la pluie...

C@thy

PS les fichiers joints ne passent pas, je fais un envoi à part
 
Dernière édition:
Re : VBA : copie de feuilles qui se passe mal

Le ficher qui comporte la macro de copie est copie classeur,
l'autre est le fichier que je souhaite copier.
je l'ouvre au moyen de la boîte de dialogue mso ouverture de fichier.

Un grand MERCI à vous, car je suis ben embêtée avec ça...(première fois que je rencontre ce genre de problème!!)

Bises et bonne journée

C@thy
 

Pièces jointes

Re : VBA : copie de feuilles qui se passe mal

Très bizarre, je liste toutes les feuilles du fichier à copier avec cet outil : (fichier joint)

et il me liste aussi les modules macros...

comment ne lister que les onglets??? Quelqu'un a déjà rencontré ce cas???😕

Merci à vous

Bizz

C@thy
 

Pièces jointes

Re : VBA : copie de feuilles qui se passe mal

Salut C@thy, le forum,

Je me permets de te soumettre la procédure suivante pour la copie de ton classeur.
Comme tu pourras le remarquer j'ai modifié la gestion des variables. En effet dans ton code d'origine passer d'un active.workbook à un autre est confusant et risque de créer des erreurs lors des aller-retour entre les classeurs. Dans le code que je te propose, cela ne pourra pas être le cas. Cela devrait aussi solutionner ton problème de lecture de feuilles.

VB:
Sub CopieClasseur()
'
Dim Sh As Worksheet
Dim classeurDestination As WorkBook, classeurSource As WorkBook
Dim nom1 As String
nom1 = "tintin"
    Set classeurDestination = ThisWorkbook
    Workbooks.Add
    Set classeurSource = ActiveWorkbook
     For Each Sh In classeurSource.Worksheets
          classeurDestination.Sheets(Sh.Name).Copy Before:=classeurSource.Sheets(1)
    Next Sh


    Set classeurDestination = Nothing
   classeurSource.SaveAs Filename:= _
        nom1, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
    ActiveWorkbook.Close
    Set classeurSource = Nothing
End Sub

Bon courage

Modif: précision, je n'ai pas testé le code mais je ne vois pas de raison objective à ce qu'il ne fonctionne pas 😉
 
Dernière édition:
Re : VBA : copie de feuilles qui se passe mal

Bonjour C@thy , Bonjour Jam. En partant du code de Jam, on peux ajouter une condition qui vérifie le type de feuille
VB:
   If Sh.Type = -4167 Then classeurDestination.Sheets(Sh.Name).Copy Before:=classeurSource.Sheets(1)
Cordialement
 
Re : VBA : copie de feuilles qui se passe mal

C@thy,

Ayé j'ai trouvé.
Bon en fait c'est relativement simple. Dans la fonction qui liste les "feuilles" il faut faire la différence entre l'objet Sheet et l'objet WorkSheet qui sont quelque peu différents.
Sheet fait référence à toutes les feuilles d'un classeur quelqu'en soit le genre
Worksheet ne fait référence qu'aux feuilles de calculs, et exclus donc tout autre type d'onglets (macro XL4...).

Bon courage,

Salut Efgé.
 
Re : VBA : copie de feuilles qui se passe mal

Bonjour efgé, jam,j'ai tardé à répondre car je teste tout ça en long, en large et en travers... et ça ne fonctionne pas...

l'idée n'est pas de créer un nouveau classeur avec les feuilles, mais de les recopier dans le classeur comportant la macro, avant la feuille(1).

Par contre, efgé, j'aimerais bien utiliser ton idée de tableau qui me semble excellente.

Lorsque j'arrive sur une feuille module, sur l'instruction
If .Sheets(i).Type = -4167 Then
j'ai le message "erreur d'exécution 438 propriété ou méthode non gérée par cet objet"

mille mercis, je sens qu'on avance...

Bises

P.S. il manquerait quelquechose comme :
Workbooks.Open nom1, UpdateLinks:=0

C@thy

C@thy
 
Dernière édition:
Re : VBA : copie de feuilles qui se passe mal

Re, Pour le message d'erreur, c'est l'utilisation de sheets et non WorkSheets qui en est la cause. Pour garder le tableau et copier les feuilles dans le classeur de la macro, un nouvelle proposition.(qui évite aussi le message d'erreur) Par contre il faudra penser à gérer les plages nomées.... Cordialement
 

Pièces jointes

Dernière édition:
Re : VBA : copie de feuilles qui se passe mal

Re, Je propose de faire l'inverse : Supprimer tous les modules dans le classeur et l'enregistrer sous un nouveau nom. On conserve toutes les feuilles, mais... ...c'est un nouveau classeur. A toi de voir si c'est acceptable. Cordialement
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
882
Compte Supprimé 979
C
Réponses
3
Affichages
844
F
Réponses
5
Affichages
1 K
Fanou44
F
R
  • Question Question
Réponses
1
Affichages
1 K
O
Réponses
5
Affichages
2 K
Olocsob
O
A
Réponses
2
Affichages
2 K
agathe marcadon
A
A
Réponses
12
Affichages
1 K
AnjyD
A
Retour