Copier une feuille d'un classeur vers un autre [Résolu]

Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
- - Dernière réponse : fabiendag
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
- 24 juil. 2013 à 14:44
Bonjour à tous, je sais que le sujet a déjà été évoqué a maintes et maintes reprise, mais à chaque fois que je veux faire ce genre de chose, j'ai un souci :
Workbooks("sauvegardevitrage.xls").Worksheets("Liste").Copy after:=ThisWorkbook.Worksheets("Vitesse")
ce code me retourne un message d'erreur "Argument ou appel de procédure incorrect, alors que je veux juste copier la feuille liste du classeur sauvegardevitrage dans le classeur où est stocké ce code après la feuille "vitesse"
Merci de m'éclaircir sur l'erreur que je fais régulièrement
ce que je comprend pas c'est que :
ThisWorkbook.Worksheets("liste").Copy after:=Workbooks("sauvegardevitrage.xls").Sheets(xlLast)
fonctionne parfaitement


Fabien
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Messages postés
23626
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
3
Merci
Bonjour,

Il y a forcément quelque chose qui manque dans le code que tu nous donne...
Celui-ci fonctionne très bien chez moi

Au cas où esaye celui-ci et dis moi ce qu'il en est :

Sub copieSheet()
Dim NomClasseur As String
    NomClasseur = "sauvegardevitrage.xls"
Dim Chemin As String
    Chemin = ThisWorkbook.Path & ""

Application.DisplayAlerts = False
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.FileExists(Chemin & NomClasseur) Then
    Workbooks.Add
    ActiveWorkbook.SaveAs Chemin & NomClasseur
Else
    MsgBox ("Ce classeur existe déjà")
    Exit Sub
End If
Debug.Print ThisWorkbook.Name
 ThisWorkbook.Activate
If FExist("liste") Then
    ThisWorkbook.Worksheets("liste").Copy after:=Workbooks("sauvegardevitrage.xls").Sheets(xlLast)
    ThisWorkbook.Worksheets("liste").Delete
    
    'on vérifie que la feuille est bien copiée
     Workbooks(NomClasseur).Activate
     If Not FExist("liste") Then
        MsgBox ("La copie ne s'est pas faite")
    Else
        Debug.Print "COPIE >> OK"
     End If
    Workbooks(NomClasseur).Close savechanges:=True
Else
    MsgBox ("Feuille inexistante")
End If
Application.DisplayAlerts = True




End Sub

Function FExist(NomF As String) As Boolean ' test si la feuille existe
 Application.ScreenUpdating = False
 On Error Resume Next
 FExist = Not Sheets(NomF) Is Nothing
 Application.ScreenUpdating = True
End Function



Encore une fois, As-tu testé en mode pas à pas ?
Est-ce que tu as un message d'erreur ?


Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de jordane45
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
3
Merci
Alors je viens de le tester à l'instant et il fonctionne... presque
J'ai isolé le bout de code dans une nouvelle procédure.
Il me crée bien le classeur, et m'insère une feuille nommé "liste" entre la feuil1 et la feuil2, alors que je lui demande de la mettre à la fin et en plus cette feuille "liste" ne contient rien.
je vous remet le code
Sub test()
    chemin = ActiveWorkbook.Path
    Workbooks.Add
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs chemin & "\sauvegardevitrage.xls"
    ThisWorkbook.Worksheets("Liste").Copy after:=Workbooks("sauvegardevitrage.xls").Sheets(xlLast)
'    ThisWorkbook.Worksheets("liste").Delete
    Workbooks("sauvegardevitrage.xls").Close savechanges:=True
    Application.DisplayAlerts = True
End Sub


Fabien

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de fabiendag
Messages postés
23626
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
3
Merci
oui j'ai le message d'erreur suivant : "Argument ou appel de procédure incorrect"

Même avec mon code ?


Dans ton VBE,
Où se trouve ton code ? ( Dans un Module, Dans une feuille )
Quel est le nom de ton SUB ?




Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de jordane45
Messages postés
23626
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
3
Merci
Et ta feuille initiale porte bien le nom : Liste
(même syntaxe, même orthographe, mêmes majuscules/minuscules ? )


Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de jordane45
Messages postés
23626
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
0
Merci
Bonjour,

J'ai testé toutes les combinaisons possibles...et la syntaxe est la bonne.

- par contre, est-ce que vos deux classeurs sont ouverts ?
- au cas où, le classeur source ne serait-il pas protégé ?

PS: Pour vos prochains messages, merci d'utiliser les balises de CODE !
'exemple:
Workbooks("Classeur2").Worksheets("zzzz").Copy after:=ThisWorkbook.Worksheets(1)


Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI
Commenter la réponse de jordane45
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
0
Merci
Merci Jordane,
pardon d'avoir oublier la mise en forme du code
le classeur sauvegardevitrage est créé deux lignes de code plus haut et le second est celui qui exécute le code. Pour la protection, non il n'est pas protégé. Enfin quand vous entendez protéger, vous voulez dire dans le menu outils/ protéger le classeur c'est ca ?


Fabien
Commenter la réponse de fabiendag
Messages postés
23626
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
0
Merci
Enfin quand vous entendez protéger, vous voulez dire dans le menu outils/ protéger le classeur c'est ca ?

Oui.

le classeur sauvegardevitrage est créé deux lignes de code plus haut

Peux-tu nous fournir cette portion de code également ?


Si tu effectues la manipulation "manuellement" avec l'enregistreur de macros, est-ce que ça fonctionne ?


Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI
Commenter la réponse de jordane45
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
0
Merci
Bonjour,
oui bien sûr,
chemin = ActiveWorkbook.Path
Workbooks.Add
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs chemin & "\sauvegardevitrage.xls"
ThisWorkbook.Worksheets("liste").Copy after:=Workbooks("sauvegardevitrage.xls").Sheets(xlLast)
ThisWorkbook.Worksheets("liste").Delete
Workbooks("sauvegardevitrage.xls").Close savechanges:=True
Application.DisplayAlerts = True

Voilà la parti de code qui permettrait (si la copie voulait bien se faire) de copier la feuille liste à la fin du classeur sauvegardevitrage

Fabien
Commenter la réponse de fabiendag
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
0
Merci
D'ailleurs j'ai un nouveau soucis depuis que j'ai voulu exécuter ce code.
En fait la feuille liste contient des plages de données utilisées comme source dans les zones de liste d'un userform.
Depuis que j'ai voulu l'exporter, mes zones de liste ne sont plus renseignées à part une.
Mes plages de données ont toutes un nom, la seule qui fonctionne est la plage dont la première cellule est en A1.
Pour les autres lorsque je clique sur la flèche pour faire apparaitre la liste, il ne m'affiche qu'une ligne blanche.
De plus, lorsque je veux modifier la valeur de "Rowsource" d'une des zones de liste, il me met un message d'erreur "Impossible de définir la propriété Rowsource. Valeur de propriété nom valide". J'essaie de mon coté de trouver le pourquoi du comment, mais si quelqu'un à une idée, je l'écouterais avec plaisir


Fabien
Commenter la réponse de fabiendag
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
0
Merci
C'est bon pour le rowsource, j'ai juste ajouté dans Rowsource devant chaque nom de plage le nom de la feuille qui contient ces plages :
'liste'!plage


Fabien
Commenter la réponse de fabiendag
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
0
Merci
Bonjour à tous,
personne n'a une petite idée du pourquoi ma copie ne fonctionne pas ?


Fabien
Commenter la réponse de fabiendag
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
0
Merci
oui j'ai le message d'erreur suivant : "Argument ou appel de procédure incorrect"


Fabien
Commenter la réponse de fabiendag
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
Bonjour,

Sur quelle ligne apparaît le message ? Le .Copy ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
0
Merci
salut Mpi, oui enfin non, le message n'apparait plus maintenant mais oui il apparaissait sur copy


Fabien
Commenter la réponse de fabiendag
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
0
Merci
Jordane non avec ton code ca marche presque... c'est juste que la feuille qui est copié est vierge dans le nouveau classeur


Fabien
Commenter la réponse de fabiendag
Messages postés
21
Date d'inscription
mercredi 30 janvier 2013
Dernière intervention
27 août 2013
0
Merci
Oui, mais en fait ca marche, je me suis juste trompé de fichier. J'avais créé un fichier sauvegardevitrage sur mon bureau à partir d'un fichier test. donc quand j'exécutais dans mon programme (qui n'est pas stocké sur le bureau) le bon fichier était stocké au même endroit.
Désolé je suis un boulet par moment :)
Merci en tout cas à tous les 2


Fabien
Commenter la réponse de fabiendag

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.