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

Bonjour à toutes et tous 🙂,

Pour le moins Bizarre.... J'ai essayé d'insérer une feuille et de la nommer Paramètres et évidement il refuse car pour lui c'est une feuille existante bien que ça apparaisse comme module plutôt que comme feuille...
Bizarre ces "modules-feuilles", d'autant qu'un code comme

sheets("Paramètres").Visible = xlsheetvisible

ne plante pas mais ne fait rien de visible
Pas un spécialiste des macros XL4, est-ce que ça aurait un lien avec les feuilles macro XL4 ?
Ou alors le passage MAC-PC qui n'est pas passé correctement...
Pas trop d'idée comme ça, désolé, première fois que je vois ça
 
Re : VBA : copie de feuilles qui se passe mal

Contente de te lire, tototiti🙂,

et merci pour ton aide.

Je suis comme toi, je cherche, je cherche😕...

(mais je ne trouve rien!🙁)
passage MAC/PC à exclure, et je ne vois pas de feuille macro XL4...

en fait, il faudrait tester : si c'est un module, alors goto suivant🙄
mais ça,...😕😕😕

Bises

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

P.S. Tototiti,

c'est une idée, si on listait toutes les macros et qu'on fasse un tableau,
serait-il possible (et si oui, comment) de sortir du tableau des feuilles le tableau contenant le nom des macros??
et ensuite on copierait les feuilles qui ne sont pas des macros (tordu, mais bon, pas d'autre idée!!)

Bizz

C@thy
 
Re : VBA : copie de feuilles qui se passe mal

j'ai trouvé ce code, qui supprime les modules

'Ajouter la référence
Microsoft VisualBasic For Application Extensibility 5.3
  • Sub SupprimeModule()
  • 'Macro de suppression de l'intégralité des modules de code d'un classeur défini
  • 'le dit classeur étant ouvert
  • Dim Wk As Workbook
  • Set Wk = Workbooks("Classeur1.xls" )
  • Dim i As Integer
  • For i = Wk.VBProject.VBComponents.Count To 1 Step -1
  • If Wk.VBProject.VBComponents.Item(i).Type = 1 Then
  • Wk.VBProject.VBComponents.Remove Wk.VBProject.VBComponents.Item(i)
  • End If
  • Next i
  • End Sub
 
Dernière édition:
Re : VBA : copie de feuilles qui se passe mal

Re,

Sinon, la dernière proposition d'Efgé ne fonctionne pas ?
Ou alors, sur la base de l'une de ses propositions :

Code:
Sub Test2()
Dim Tableau As Variant, Wbk As Workbook, nom1$
nom1 = "c:\temp\Titin.xls"
Set Wbk = ActiveWorkbook
For i = 1 To Wbk.Sheets.Count
    If Wbk.Sheets(i).Visible <> xlSheetVeryHidden Then
        If Not IsArray(Tableau) Then
            Tableau = Array(Wbk.Sheets(i).Name)
        Else
            ReDim Preserve Tableau(UBound(Tableau) + 1)
            Tableau(UBound(Tableau)) = Sheets(i).Name
        End If
    End If
Next i
Sheets(Tableau).Copy
With ActiveWorkbook
    .SaveAs Filename:=nom1, FileFormat:=xlNormal
    .Close False
End With
End Sub
 
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
Non, efgé, j'ai un fichier avec mes nouvelles macros, je dois importer les données dans ce fichier pour tester mes macros

C@thy
 
Re : VBA : copie de feuilles qui se passe mal

Bonjour C@thy 🙂, Bonjour Efgé 🙂,

Je viens d'essayer la macro là avec succès sur un XL2007, je ne comprend pas pourquoi ça ne passe pas sur ton 2010

Code:
Sub Test2()
Dim Tableau As Variant, Wbk As Workbook, nom1$
nom1 = "c:\temp\Titin.xlsm"
Set Wbk = ActiveWorkbook
For i = 1 To Wbk.Sheets.Count
    If Wbk.Sheets(i).Visible <> xlSheetVeryHidden Then
        If Not IsArray(Tableau) Then
            Tableau = Array(Wbk.Sheets(i).Name)
        Else
            ReDim Preserve Tableau(UBound(Tableau) + 1)
            Tableau(UBound(Tableau)) = Sheets(i).Name
        End If
    End If
Next i
Sheets(Tableau).Copy
With ActiveWorkbook
    .SaveAs Filename:=nom1, FileFormat:= _
        xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    .Close False
End With
End Sub
 
Re : VBA : copie de feuilles qui se passe mal

Merci à vous deux. Efgé, j'ai un message d'erreur,
toto, je teste

Edit : Tototiti, je confirme, ça ne marche pas sous 2010
Sheets(I).Visible renvoie true pour la feuille "Paramètres" qui n'est pas une feuille mais un module🙁

Bizz et merci.

C@thy
 

Pièces jointes

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

Salut,

une autre approche avec typename, on veut récupérer graphes , feuillle de calcul , feuilles XL5, éventuellement feuille XL4.

Code:
Function TabF(C As Workbook)
  Dim I&, K&, Temp()
  With C
    For I = 1 To .Sheets.Count
      Select Case TypeName(.Sheets(I))
        Case "Worksheet", "DialogSheet", "Chart"
          ReDim Preserve Temp(K)
          Temp(K) = .Sheets(I).Name
          K = K + 1
      End Select
    Next I
  End With
 TabF = IIf(K > 0, Temp, "Pas de feuilles à copier")
End Function

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