[VBA_Excel] Copier feuille classeur A vers B

Résolu/Fermé
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 - 15 juin 2008 à 23:04
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 - 17 juin 2008 à 11:12
Bonsoir à tous.

Je cale sur ce problème:
Sub NouvNum()
V = "C:\Devis Factures\Factures\"
W = Cells(10, 2) 'date
X = Cells(10, 3) 'numéro d'ordre

Application.Workbooks.Add
ActiveWorkbook.SaveAs Filename:= _
V & W & X & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
'concatène la directorie et le nom de fichier

Jusqu'à la pas de problème.
Workbooks("C:\Devis Factures\Facture vierge.xls").Worksheets("Feuil1").Range("A1:H49").Copy _
Destination:=Workbooks(V & W & X & ".xls").Worksheets("Feuil1").Range("A1")
End Sub

C'est la que ça coince. Après l'ajout des 2 dernières lignes, plus possible de sauvegarder.

Vos modifications non pu étre enregistrées dans "facture vierge.xls0" en raison d'une violation de partage. Essayez d'enregistrer vos modifications dans un fichier différent. + Lancement de l'antivirus.
+ création d'un fichier du genre 97470000 (sans extension).

Une idée?
A voir également:

20 réponses

chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
17 juin 2008 à 11:12
Voici ce que j'ai fait au final:

Sub NouvNum()

Dim newWorkBook As Workbook
Dim V As String
Dim W As String
Dim X As String
Dim Z As String

V = "C:\Devis Factures\Factures\" 'a modifier si besoin
W = Sheets(1).Cells(10, 2) 'date
X = Sheets(1).Cells(10, 3) 'numéro d'ordre
Z = "Facture vierge" 'a modifier si besoin

'on déclare un nouveau fichier Excel contenant 1 feuille
Set newWorkBook = Application.Workbooks.Add(xlWBATWorksheet)

newWorkBook.SaveAs Filename:=V & W & X & ".xls", FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

Workbooks(Z & ".xls").Sheets("Feuil1").Range("A1:H49").Copy
Workbooks(W & X & ".xls").Worksheets("Feuil1").Select

Selection.PasteSpecial Paste:=xlPasteFormats ' Formats de cellule
Selection.PasteSpecial Paste:=xlPasteColumnWidths ' Largeurs de colonne
ActiveSheet.Paste ' Texte
Application.CutCopyMode = False ' Vide le presse papier

Workbooks(Z & ".xls").Close False 'Fermeture de Facture vierge.xls

End Sub

Merci encore à tous. Et au plaisir. ;-)
1
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 12:13
Personne?
Finalement ça me rassure un peu.
Donc c'est pas si simple.
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120
16 juin 2008 à 12:19
Salut, ne serait-ce pas plus simple d'utiliser le "copier une feuille" d'un classeur à l'autre ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 12:45
Bonjour,

C'est pas trop compliqué non plus ... quand on sait faire ;o)
Sub NouvNum()
Dim newWorkBook As Workbook
Dim V As String
Dim W As String
Dim X As String

 V = "C:\Devis Factures\Factures\"
 W = Sheets(1).Cells(10, 2) 'date
 X = Sheets(1).Cells(10, 3) 'numéro d'ordre

    'on déclare un nouveau fichier Excel contenant 1 feuille
    Set newWorkBook = Application.Workbooks.Add(xlWBATWorksheet)
    
    '***********************************************************
    'on déclare un nouveau fichier Excel contenant 3 feuilles
'    Set newWorkBook = Application.Workbooks.Add
    '***********************************************************
    
    'on copie dans le nouveau classeur
    ThisWorkbook.Worksheets("Feuil1").Range("A1:H49").Copy _
            Destination:=newWorkBook.Worksheets("Feuil1").Range("A1")
    'on sauvegarde le nouveau classeur
    newWorkBook.SaveAs Filename:=V & W & X & ".xls", FileFormat:=xlNormal _
            , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
    
End Sub

Bon courage et bonne continuation...

;o)

polux
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 13:33
Bonjour et merci d'essayer de m'aider.

Polux31:
Avec ta technique j'obtiens un résultat correct (tout comme avec la mienne) mais impossible d'enregistrer.

onesdf
Je suis ouvert à toutes suggestion.

A votre écoute.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 13:35
Etonnant, j'ai testé. Je copie bien la zone et je sauvegarde le fichier ... qu'est-ce qui ne marche pas exactement, j'ai peut être pas tout compris ?

;o)
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 13:48
j'ai peut être pas tout compris ?
Ou plus certainement je m'exprime mal.

Voici le classeur en question. ;-)

0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 13:55
oui et où est le problème ??

J'ai bien fait une copie dans la zone de factures dans un nouveau classeur et je l'ai enregistré ...

Peux tu me dire ce qui ne va pas ?
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 14:01
Tu veux dire que tu as réussi à enregistrer "Facture vierge"?
Chez moi ça coince. :-(
Si c'est le cas merci de me le poster en retour.

Cordialement.

PS: Ou est l'erreur? Avec ma version de base ça marche chez toi?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012
16 juin 2008 à 14:16
j'enregistre bien le nouveau fichier avec la date et le n° de facture, je n'ai pas enregistré "Facture vierge". Tu veux sauvegarder "Facture vierge" sans enregistrer les changement ?
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522 > Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016
16 juin 2008 à 14:26
j'enregistre bien le nouveau fichier avec la date et le n° de facture
Moi aussi. Jusqu'à la d'accord.

Tu veux sauvegarder "Facture vierge" sans enregistrer les changement ?
Je voudrai sauvegarder le travail sur "Facture vierge" une fois les lignes de prog pour copier la plage et le compteur à zéro = OK
C'est la que je bloque.
Quand j'ajoute les lignes le boulot se fait bien, mais impossible de le sauvegarder dans l'état. :-(
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 14:31
Je voudrai sauvegarder le travail sur "Facture vierge" une fois les lignes de prog pour copier la plage et le compteur à zéro = OK

Désolé, mais je ne vois pas du tout ce que tu veux faire ...
"sauvegarder une fois les lignes de prog" ???
"copier la plage et le compteur à zéro = OK" ??? quelle plage et quel compteur à zéro = OK ???

Je ne comprends pas du tout là
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 14:44
Lorsque tu regarde dans "thisWorkBook" j'incrémente un numéro à chaque ouverture du classeur "Facture vierge"
= le compteur (C10).

La sauvegarde de "Facture vierge" se passe trés bien même en remettant C10 à zéro.

Par contre dés que j'ajoute:

Workbooks("C:\Devis Factures\Facture vierge.xls").Worksheets("Feuil1").Range("A1:H49").Copy _
Destination:=Workbooks(V & W & X & ".xls").Worksheets("Feuil1").Range("A1")

Plus moyen de sauvegarder "Facture vierge".

J'ai le droit au message suivant:
Vos modifications non pu être enregistrées dans "facture vierge.xls" en raison d'une violation de partage...
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 14:56
j'ai fait ça et j'enregistre bien "facturevierge" avec un nouveau numéro :
Sub NouvNum()
Dim newWorkBook As Workbook
Dim V As String
Dim W As String
Dim X As String

 V ="C:\Devis Factures\Factures\"
 W = Sheets(1).Cells(10, 2) 'date
 X = Sheets(1).Cells(10, 3) 'numéro d'ordre

    'on déclare un nouveau fichier Excel contenant 1 feuille
    Set newWorkBook = Application.Workbooks.Add(xlWBATWorksheet)
    
    '***********************************************************
    'on déclare un nouveau fichier Excel contenant 3 feuilles
'    Set newWorkBook = Application.Workbooks.Add
    '***********************************************************
    
    'on copie dans le nouveau classeur
    ThisWorkbook.Worksheets("Feuil1").Range("A1:H49").Copy _
            Destination:=newWorkBook.Worksheets("Feuil1").Range("A1")
    'on sauvegarde le nouveau classeur
    newWorkBook.SaveAs Filename:=V & W & X & ".xls", FileFormat:=xlNormal _
            , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
            
    ThisWorkbook.Save
    
End Sub


Je comprends très bien l'incrémentation du n° de facture dans WorkBook_Open(), mais je ne vois pas l'utilité de faire une sauvegarde immédiatement après ... Il serait préférable de gérer la sauvegarde dans BeforeClose(), ce qui garantit la sauvegarde automatique à la fermeture.

;o)
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 15:09
Re,
je viens de faire un copier coller et toujours le même problème.

Il serait préférable de gérer la sauvegarde dans BeforeClose()
Trés bonne suggestion d'autant que le but et de fermer "Facture vierge" dés l'ouverture de la facture.

Je pige toujours pas cette histoire de conflit d'autant que l'antivirus se déclenche en même temps (Pack Sécurité Plus de chez le 9).

Toutefois si tu arrives à le sauvegarder, je suis preneur. ;-)
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 15:14
https://www.cjoint.com/?gqpnVbP2fg

Fais gaffe j'ai changé les chemins des rep et fichiers ... je suis pas sûr d'avoir remis les bons partout

0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 15:30
Voici ce que je reçois dés que je sélectionne ton lien:

Le format du fichier que vous tentez d'ouvrir, "...factures.xls" est différent de celui spécifié par l'extension de fichier. Assurez vous que le fichier n'est pas endommagé et qu'il provient d'une source fiable avant de l'ouvrir. Souhaitez vous ouvrir le fichier maintenant?

Oui ou Non

Oui

Ouverture d'un classeur vierge nommé "...factures.xls".

Protection virus et spyware: désactivée.
Protection internet: autoriser tout.
Contrôle courrier indés.: désactivée.

:-( Je commence à m'orienter vers la solution "Kleenex".
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 15:38
tu as quel version d'Excel ?

Ensuite il faut mettre le niveau sécurité mini, sinon les macors beug
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 15:44
tu as quel version d'Excel ?
2007

Ensuite il faut mettre le niveau sécurité mini, sinon les macors beug
Protection virus et spyware: désactivée.
Protection internet: autoriser tout.
Contrôle courrier indés.: désactivée.

Que puis-je faire de moins?

Merci de te soucier de ce problème qui me vient du forum "bureautique" et qui commence à m'obséder. ;-|

PS: ça fait un petit mois que je commence à bidouiller en VBA, macros... donc mon erreur est peut-être à la base.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 15:54
ok j'ai la version 2003, donc tu devrais pouvoir l'ouvrir sans problème ... je ne comprends pas ... donne moi ton mail en MP, on peux essayer par là ... des fois que ...
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120
16 juin 2008 à 17:00
Re,

Désolé mais j'ai été beaucoup pris cet après-midi.

Je pensais que tu pouvais mettre ce code là :

Workbooks("Facture vierge").Sheets("Feuil1").Copy Before:=Workbooks(W & X & ".xls").Sheets(1)

à la place de ton

Workbooks("C:\Devis Factures\Facture vierge.xls").Worksheets("Feuil1").Range("A1:H49").Copy _
Destination:=Workbooks(V & W & X & ".xls").Worksheets("Feuil1").Range("A1")

Le problème c'est que celà copie non seulement les données qui sont dans la feuille, mais aussi le bouton "Nouvelle facture" et le code VBA de ta feuille. Donc c'est pas top.

Je ne sais pas si ca fait avancer le schmilblick, mais je recois un message d'erreur (indice hors selection) lorsque je mets le chemin complet du classeur d'origine ("C:\Devis Factures\Facture vierge.xls") et de celui de destination (V & W & X & ".xls"). Par contre lorsque je mets ceci :

Workbooks("Facture vierge").Sheets("Feuil1").Range("A1:H49").Copy _
Destination:=Workbooks(W & X & ".xls").Worksheets("Feuil1").Range("A1")

Ca fonctionne.
(Je suis sous excel 2000)
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 17:35
Le problème c'est que celà copie non seulement les données qui sont dans la feuille, mais aussi le bouton "Nouvelle facture" et le code VBA de ta feuille. Donc c'est pas top.
Effectivement non c'est pas le top. C'est pour cette raison que je recherche du coté de "copy". Dans un premier temps je passai par "save as"

Par contre lorsque je mets ceci : Ca fonctionne.
Je commence à croire que le problème vient de l'antivirus. :-(

Polux31 à tenté ce qu'il pouvait mais à priori c'est chez moi que ça bogue.

Ce qui me gave c'est que je ne vois pas comment faire. ;-( (pour l'instant)
Si tu as une idée...
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012
16 juin 2008 à 19:58
Effectivement non c'est pas le top. C'est pour cette raison que je recherche du coté de "copy". Dans un premier temps je passai par "save as"

Tu peux déplacer ton code de la feuil1 vers un module et ajouter un bouton dans ta barre d'outils (Bouton droit sur une barre d'outils, Personnalisé, onglet Commandes, Macros, Bouton personnalisé et y associer le code de ton module.

Je commence à croire que le problème vient de l'antivirus. :-(

Tu ne peux pas le désactiver temporairement pour être fixé ?
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 20:49
Je confirme il s'agissait bien d'un problème lié à l'antivirus.

Solution: Désactiver l "analyse en temps réel".

Merci bien les copains.

Au plaisir de pouvoir vous renvoyer l'ascenseur en bureautique. ;-)


PS: J'ai envoyé ce message une première fois à 17h15 (à peu prés), et je viens de me rendre compte qu'il n'est pas passé.
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120
16 juin 2008 à 21:19
Mouais, c'est quand même bof de désactiver l'analyse en temps réel. Tu dois pouvoir ajouter une exclusion quelque part pour ton fichier excel non ?
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522 > onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
16 juin 2008 à 21:38
Disons que je ne suis pas spécialement calé de ce coté mais en attendant mieux... :-|
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012
16 juin 2008 à 21:57
Disons que je ne suis pas spécialement calé de ce coté mais en attendant mieux... :-|

En attendant mieux tu risques le pire !

J'imagine qu'il est possible avec ton antivirus de lui spécifier que tu ne souhaites pas effectuer d'analyse sur ce fichier en particulier comme c'est le cas sur le mien (avast)

Demandes donc aux as du forum sécurité à l'occasion, il y en a certainement un dans le tas qui sera à même de t'aider car je ne connais pas le pack sécurité de 9.
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522 > onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
16 juin 2008 à 22:01
Bonne idée.

Une autre question toujours sur le même sujet pendant la copie la largeur des colonnes F et G n'est pas conservée.
Comment faire pour conserver la taille des cellules...?
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012
16 juin 2008 à 22:12
En faisant un collage spécial
    Workbooks("Facture vierge.xls").Sheets("Feuil1").Range("A1:H49").Copy
    Workbooks(W & X & ".xls").Worksheets("Feuil1").Select
    ' Formats de cellule
    Selection.PasteSpecial Paste:=xlPasteFormats
    ' Largeurs de colonne
    Selection.PasteSpecial Paste:=xlPasteColumnWidths


EDIT :

Apparemment, le pack sécurité de 9 est basé sur F-secure.
Procédure d'ajout d'exclusion sur F-secure
0
chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
16 juin 2008 à 22:45
Sympa le lien. ;-)
Par contre pou la copie :-( "indice hors selection"
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120
17 juin 2008 à 05:48
Tu as bien ajouté ces quatres lignes au dessous de ta ligne
    Workbooks("Facture vierge.xls").Worksheets("Feuil1").Range("A1:H49").Copy _
        Destination:=Workbooks(W & X & ".xls").Worksheets("Feuil1").Range("A1")
?

Sur quelle ligne se produit l'erreur ?
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
17 juin 2008 à 07:06
Bonjour tout le monde,

Je n'ai pas tout lu et je ne sais pas où tu en es dans ta résolution du pb mais procède autrement, c'est plus simple...
Sauvegarde ton numéro de facture dans un fichier séparé, ça peut être un fichie texte.
Ouvre ton modèle de facture, ouvre le fichier texte pour récupérer le dernier numéro attribué, calcule le numéro suivant, tu l'enregistres dans le fichier texte et tu le colles dans la cellule.
Ne faire ça que si la cellule est vide à l'ouverture bien sûr, ensuite tu fais ton save as
Regarde le fichier que j'avais mis dans la discussion concernée le 09/06 et que l'utilisatrice devait tester... (http://www.commentcamarche.net/forum/affich 6808657 besoin d aide facture sur excel#22.

Bonne journée tout le monde
eric
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 juin 2008 à 08:45
Bonjour,

Chitlou ton problème semble résolu ...

Si tu as d'autres soucis, n'hésites pas à revenir ..

bon courage

;o)
0