Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel

Advertisement

Réponse
 
LinkBack Outils de la discussion
Vieux 21/11/2007, 18h22   #1 (permalink)
XLDnaute Nouveau
 
Date d'inscription: novembre 2007
Messages: 16
Par défaut VBA - Copie d'une feuille d'un classeur dans un autre classeur

Bonjour,
Débutante en VBA, je galère pour finaliser mon facturier.
Je possède deux classeurs : 1 classeur "modèles" et 1 classeur "factures".
Je souhaiterais copier la facture du classeur "modèles", dans le classeur "factures".
Ma macro fonctionne si j'indique le numéro de la dernière feuille.
Merci pour votre aide.


Sub Copie_Facture()
'var
Dim nbfeuille As Integer
Dim numfact As Integer
nbfeuille = Sheets.Count 'compte le nombre de feuilles
ActiveSheet.Copy After:=Workbooks("Factures Eric 2007.xls").Sheets(19)
nbfeuille = Sheets.Count
numfact = nbfeuille + 1
Sheets(nbfeuille).Name = "Facture n° " & (numfact)
Range("G3").Value = numfact
Sheets(nbfeuille).Select
End Sub
nanie13 est déconnecté   Réponse avec citation
ANNONCES
Vieux 21/11/2007, 18h30   #2 (permalink)
XLDnaute Barbatruc
 
Avatar de pierrejean
 
Date d'inscription: janvier 2006
Localisation: 69400 LIMAS
Messages: 8 142
Par défaut Re : VBA - Copie d'une feuille d'un classeur dans un autre classeur

bonjour nanie13

teste cette modif

Code:
 
Sub Copie_Facture()
'var
Dim nbmesfactures As integer
nbmesfactures=Workbooks("Factures Eric 2007.xls").Sheets.count
Dim nbfeuille As Integer
Dim numfact As Integer
nbfeuille = Sheets.Count 'compte le nombre de feuilles
ActiveSheet.Copy After:=Workbooks("Factures Eric 2007.xls").Sheets(nbmesfactures)
nbfeuille = Sheets.Count
numfact = nbfeuille + 1
Sheets(nbfeuille).Name = "Facture n° " & (numfact)
Range("G3").Value = numfact
Sheets(nbfeuille).Select
End Sub
pierrejean est connecté maintenant   Réponse avec citation
Vieux 23/11/2007, 19h35   #3 (permalink)
XLDnaute Nouveau
 
Date d'inscription: novembre 2007
Messages: 16
Par défaut Re : VBA - Copie d'une feuille d'un classeur dans un autre classeur

Citation:
Envoyé par pierrejean Voir le message
bonjour nanie13

teste cette modif

Code:
 
Sub Copie_Facture()
'var
Dim nbmesfactures As integer
nbmesfactures=Workbooks("Factures Eric 2007.xls").Sheets.count
Dim nbfeuille As Integer
Dim numfact As Integer
nbfeuille = Sheets.Count 'compte le nombre de feuilles
ActiveSheet.Copy After:=Workbooks("Factures Eric 2007.xls").Sheets(nbmesfactures)
nbfeuille = Sheets.Count
numfact = nbfeuille + 1
Sheets(nbfeuille).Name = "Facture n° " & (numfact)
Range("G3").Value = numfact
Sheets(nbfeuille).Select
End Sub
Bonjour et merci pour votre réponse,
Je viens de tester votre macro, mais elle bloque au niveau de la seconde ligne
nanie13 est déconnecté   Réponse avec citation
Vieux 23/11/2007, 20h39   #4 (permalink)
XLDnaute Occasionel
 
Avatar de matthieu33
 
Date d'inscription: septembre 2007
Messages: 431
Par défaut Re : VBA - Copie d'une feuille d'un classeur dans un autre classeur

Bonsoir nanie13, pierrejean et le forum,

Peux-tu essayer avec le code ci-dessous ?

Code:
Sub Copie_Facture()
    'var
    Dim nbfeuille As Integer
    Dim numfact As Integer
    nbfeuille = Sheets.Count 'compte le nombre de feuilles
    ActiveSheet.Copy After:=Workbooks("factures.xls").Sheets(Workbooks("factures.xls").Worksheets.Count)
    nbfeuille = Sheets.Count
    numfact = nbfeuille + 1
    Sheets(nbfeuille).Name = "Facture n° " & (numfact)
    Range("G3").Value = numfact
    Sheets(nbfeuille).Select
End Sub
@+
matthieu33 est déconnecté   Réponse avec citation
Vieux 23/11/2007, 22h05   #5 (permalink)
XLDnaute Nouveau
 
Date d'inscription: novembre 2007
Messages: 16
Par défaut Re : VBA - Copie d'une feuille d'un classeur dans un autre classeur

Bonjour Matthieu 33 et merci,
Je viens d'essayer votre macro, cela ne fonctionne pas, elle bloque au niveau :
ActiveSheet.Copy After:=Workbooks("factures.xls").Sheets(Workbooks( "factures.xls").Worksheets.Count)
nanie13 est déconnecté   Réponse avec citation
Vieux 24/11/2007, 01h24   #6 (permalink)
XLDnaute Occasionel
 
Avatar de matthieu33
 
Date d'inscription: septembre 2007
Messages: 431
Par défaut Re : VBA - Copie d'une feuille d'un classeur dans un autre classeur

Bonsoir nanie13,

Lorsque cette procédure est lancée, est-ce que le classeur "factures.xls" est ouvert ?
Si ce n'est pas le cas, il faut rajouter l'ouverture du classeur "factures.xls" avant la copie de la feuille du classeur "modèles.xls" dans le classeur "factures.xls" :

Code:
Sub Copie_Facture()
    'var
    Dim nbfeuille As Integer
    Dim numfact As Integer
    nbfeuille = Sheets.Count 'compte le nombre de feuilles
    Workbooks.Open ThisWorkbook.Path & "\" & "factures.xls"
    ActiveSheet.Copy After:=Workbooks("factures.xls").Sheets(Workbooks("factures.xls").Worksheets.Count)
    nbfeuille = Sheets.Count
    numfact = nbfeuille + 1
    Sheets(nbfeuille).Name = "Facture n° " & (numfact)
    Range("G3").Value = numfact
    Sheets(nbfeuille).Select
End Sub
Pour info, j'ai considéré que le classeur "factures.xls" se trouvait dans le même répertoire que le classeur "modèles.xls".
Après si cela ne fonctionne toujours pas, il nous faudra un extrait du fichier pour résoudre le problème.

Merci

@+
matthieu33 est déconnecté   Réponse avec citation
Vieux 24/11/2007, 06h18   #7 (permalink)
XLDnaute Nouveau
 
Date d'inscription: novembre 2007
Messages: 16
Par défaut Re : VBA - Copie d'une feuille d'un classeur dans un autre classeur

Bonjour Matthieu33 et merci,
Cette macro ne fonctionne toujours pas.
Il m'est impossible de vous adresser mes fichiers, ils dépassent tous les deux la limite du forum et je ne sais pas comment faire pour Ajouter un fichier à partir d'une URL
nanie13 est déconnecté   Réponse avec citation
Vieux 25/11/2007, 06h18   #8 (permalink)
XLDnaute Nouveau
 
Date d'inscription: novembre 2007
Messages: 16
Par défaut Re : VBA - Copie d'une feuille d'un classeur dans un autre classeur

Bonjour,
J'ai changé ma macro, cette fois elle insère bien la facture en dernier, mais elle bloque lorsqu'il faut renommer la facture
Merci pour votre aide

Sub Copie_Facture()

Dim nbfeuille As Integer
Dim numfact As Integer

nbfeuille = Workbooks("Factures Eric 2007.xls").Sheets.Count
ActiveSheet.Copy After:=Workbooks("Factures Eric 2007.xls").Sheets(nbfeuille)

'La macro bloque à ce niveau
ActiveSheet.Name = "Facture n° " & (nbfeuille - 1)
Range("G3").Value = nbfeuille - 1

'La feuille est renommée "Facture n° ", comment faut il faire pour faire apparaître son numéro
ActiveSheet.Name = "Facture n° "

End Sub
nanie13 est déconnecté   Réponse avec citation
Vieux 25/11/2007, 13h52   #9 (permalink)
XLDnaute Occasionel
 
Avatar de matthieu33
 
Date d'inscription: septembre 2007
Messages: 431
Par défaut Re : VBA - Copie d'une feuille d'un classeur dans un autre classeur

Bonjour nanie13,

Il se peut que le n° de facture à attribuer existe déjà.
La variable "nbfeuille" contient le nombre de feuille avant insertion de la nouvelle feuille.
Après insertion de la nouvelle feuille, je dirai que la variable "nbfeuille" vaut "nbfeuille + 1".

Pouvez-vous faire un essai en mettant ?
Code:
nbfeuille = nbfeuille + 1
ActiveSheet.Name = "Facture n° " & (nbfeuille)
Range("G3").Value = nbfeuille
@+
matthieu33 est déconnecté   Réponse avec citation
Vieux 25/11/2007, 20h26   #10 (permalink)
XLDnaute Barbatruc
 
Avatar de pierrejean
 
Date d'inscription: janvier 2006
Localisation: 69400 LIMAS
Messages: 8 142
Par défaut Re : VBA - Copie d'une feuille d'un classeur dans un autre classeur

re

je pense pour ma part a

nbfeuille = Workbooks("Factures Eric 2007.xls").Sheets.Count
ActiveSheet.Copy After:=Workbooks("Factures Eric 2007.xls").Sheets(nbfeuille)

ActiveSheet.Name = "Facture n° " & (nbfeuille)
Range("G3").Value = nbfeuille

explication: nbfeuille est le nombre de feuilles de Factures Eric.... avant copie
s'il y a une 1ere feuille qui n'est pas une facture, la derniere facture est Facture N° nbfeuille-1
celle que l'on vient de copier sera donc Facture N° nbfeuille
pierrejean est connecté maintenant   Réponse avec citation
Vieux 25/11/2007, 23h33   #11 (permalink)
XLDnaute Nouveau
 
Date d'inscription: novembre 2007
Messages: 16
Par défaut Re : VBA - Copie d'une feuille d'un classeur dans un autre classeur

Bonjour,
Je suis enfin arrivée au bout de ma macro, tout fonctionne parfaitement, merci à tous

Dim nbfeuille As Integer
Dim numfact As Integer
nbfeuille = Workbooks("Factures Eric 2007.xls").Sheets.Count
ActiveSheet.Copy After:=Workbooks("Factures Eric 2007.xls").Sheets(nbfeuille)
ActiveSheet.Name = "Facture n° " & (nbfeuille)
Range("G3").Value = nbfeuille
nanie13 est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Copie d'une cellule d'un autre classeur jeager13 Forum Excel 8 29/10/2007 01h11
Créer un classeur avec la copie d'une feuille d'un autre classeur therese78 Forum Excel 4 27/03/2007 12h38
Copie de feuille dans un autre classeur Delirium Forum Excel 4 16/08/2005 15h45
copier la feuille d'un classeur dans un autre classeur... albert Forum Excel Downloads - Archives 1 11/01/2003 13h21
enregistrer une feuille d'un classeur ouvert dans un autre classeur roger Forum Excel Downloads - Archives 1 15/02/2002 18h01


Fuseau horaire GMT +2. Il est actuellement 16h07.


(C) 2006 Excel Downloads