Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 29/06/2009, 18h32   #1
Invité de passage
 
Date d'inscription: juin 2009
Messages: 2
Par défaut Créer une macro pour plusieurs fichiers excel

Bonjour à tous,

Je suis en train de réaliser une macro complexe pour moi, donc j'ai besoin d'une aide.
Je m'explique :
D'un côté, j'ai créé sur un fichier excel, sur feuille 1 appelée nouvelle facture, j'ai intégré un bouton macro avec une cellule vierge à côte, où j'entre manuellement le numéro du fichier "facture_d_acompte_n°X.xls" que je souhaite faire apparaitre suite à une série de collage.
Et de l'autre j'ai créé plusieurs fichiers appelé facture_d_acompte_n°1.xls, facture_d_acompte_n°2.xls,etc... et sur chaque fichier en feuille 1 apparait un tableau.

Pour le moment ma macro fonctionne mais sans prendre compte du numéro et grâce à l'enregistrement de la facture_d_acompte_n°1 seulement.

Ce que je voudrais faire : c'est pouvoir faire apparaitre la facture d'acompte
n° que j'aurai choisi grâce à la cellule à côté du bouton macro et tout cela doit se faire lorsque je clique sur le bouton macro?????

Voici la macro créée pour le moment, qu'en pensez vous?

Code :
Sub Facturedacomptenum_nouvellefacture()
'copie les données de la facture d'acompte N° sur nouvelle facture
Workbooks.Open Filename:="F:\(........\Facture\Sauvegarde\Facture_d_acompte_n°1.xls"
Windows("Facture_d_acompte_n°1.xls").Activate
Sheets("Feuil1").Select
Range("B30:I44").Copy
Windows("Facture entreprise.xls").Activate
Sheets("Nouvelle facture").Select
Range("A27:H41").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Il y a t'il une solution à mon problème?
Merci d'avance.:

Dernière modification par jpcheck ; 29/06/2009 à 18h35. Motif: ajout balises CODE : texte + # dans l'interface de rédaction, ce n'est pas facultatif
bocki est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/06/2009, 19h13   #2
Expert Confirmé
 
Avatar de Qwazerty
 
Date d'inscription: avril 2002
Localisation: (03) - Allier - Chez les fous ^^
Âge: 29
Messages: 1 558
Envoyer un message via MSN à Qwazerty
Par défaut

Salut et bienvenu
il suffit de remplacer "1" dans ta chaine de texte par le contenu du textbox, en faisant un truc comme ça

Code :
Workbooks.Open Filename:="F:\(........\Facture\Sauvegarde\Facture_d_acompte_n°" & textbox1.text & ".xls"


Je n'ai pas le nom du textbox donc g mis au pif, par contre il serait surement utile de contrôler que le contenu correspond bien a une valeur numérique ou encore mieux remplacer ton textbox par une liste déroulante contenant les numéros possibles a utiliser.
Dans un cas comme dans l'autre tu trouveras des info dans la FAQ VBA du site

Un commentaire rapide sur le code, je ne sais pas quel sera sa longueur au final mais il serait a mon avis judicieux de déclarer des variable WorkBook et de leur attribuer les 2 fichier que tu utilises, ça évitera d'avoir a taper des noms de fichiers a rallonge a chaque fois, ce qui te permettra aussi d'abandonner les ".Activate" et compagnie

En gros ca donnerait un truc comme ca

Code :
Dim Fichier1 As WorkBook, Fichier2 As WorkBook 'remplaces fichier1 fichier2 par des noms plus explicite afin de les retrouver facilement dans ton code.
 
Set Fichier1 = Workbooks.Open Filename:="F:\(........\Facture\Sauvegarde\Facture_d_acompte_n°" & textbox1.text & ".xls"
 
'Par la suite pas besoin d'activer le fichier
 
Fichier1.Sheets("Feuil1").Range("A1:E6").copy Fichier2.Sheets("Feuil2").Range("A4")
Je n'ai pas testé le code mais la phylosophie a utiliser dans le code est la

A++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le méchant Qwaz sur Msn ... inutile de me rajouter sur msn pour que je fasse votre boulot (les concernés sont au courant, les autres relax )
Le monde dans lequel on vit
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 29/06/2009, 20h22   #3
Invité de passage
 
Date d'inscription: juin 2009
Messages: 2
Par défaut

Merci pour le tuyau....
La ligne de commande est bien mais, je ne veux pas mettre une textbox, il faut que se soit une cellule. Dans cette cellule, il y aura des chiffres de 1 à l'infinie!!

As tu une autre idée??
Merci.
bocki est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/06/2009, 22h53   #4
Expert Confirmé
 
Avatar de Qwazerty
 
Date d'inscription: avril 2002
Localisation: (03) - Allier - Chez les fous ^^
Âge: 29
Messages: 1 558
Envoyer un message via MSN à Qwazerty
Par défaut

Salut
Un petit effort de compréhension serait pas mal? non?
Il te suffit de remplacer textBox.text par Fichier2.Range("D28").value, en supposant que ta valeur qui va de 1 a l'infini soit en D28 du fichier2 par exemple.
A++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le méchant Qwaz sur Msn ... inutile de me rajouter sur msn pour que je fasse votre boulot (les concernés sont au courant, les autres relax )
Le monde dans lequel on vit
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est actuellement connecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



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 non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 09h17.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.