pb entre deux classeurs - VB/VBA/VBS - Programmation
Marsh Posté le 30-10-2006 à 14:38:15
Bon j'ai trouvé la solution désolé si vous vous etes penché dessus (meme si j'ai pas trop l'impression d'avoir motivé qui que ce soit), en faite je feinte (encore !!!) en cachant la fenetre lol
ActiveWindow.Visible = False
Marsh Posté le 30-10-2006 à 14:56:21
Voici le code :
'Création des variables correspondant à chaque classeur et chaque feuille :
dim Wbk1 as workbook, Wbk2 as workbook
dim Wsht1 as worksheet, Wsht2 as worksheet
'Création inputbox pour récupérer le chemin du classeur inconnu
Dim Chemin As String
NomClasseur = InputBox("Veuillez saisir le chemin complet du classeur à mettre à jour :", "MAJ" )
'Définition du classeur 1 : fichier inconnu
Set Wbk1 = Workbooks.Open(Filename:=Chemin)
'Définition Feuille du classeur 1 (ici la feuille1)
Set Wsht1 = Wbk1.Worksheets(1)
'Définition du classeur 2 (celui dont tu connais le chemin : mets le à la place de blabla)
Set Wbk2 = Workbooks.Open(Filename:=blabla)
'Définition Feuille du classeur 2 (ici Feuille 2)
Set Wsht2 = Wbk2.Worksheets(1)
'Puis ton code (les "Select" sont inutiles ainsi que les "Activate" ) avec d'éventuelles modifications
'suppression des anciennes donnees
'ici je vide la cellule "B10" du classeur à mettre à jour, modifie, si ce n'est pas ce que tu veux faire
wsht1.cells(10,2).Clear
'Copie de la cellule du fichier à jour + collage sur la bonne cellule de l'autre classeur (celui à mettre à jour)
wsht2.cells(1,2).Copy wsht1.cells(10,2)
Marsh Posté le 30-10-2006 à 16:29:13
Ouah merci pour tout ca ca marche nickel, il me reste plus qu'a modifier mes "activates" et "select" déclarés inutiles. Bon le seul probleme c'est que mes chers collegues de boulot vont pas trop aimer car il va falloir qu'ils tapent eux meme l'adresse du fichier (ou du moins qu'il la colle).
Merci en tout cas, ca m'aide deja enormement
Marsh Posté le 31-10-2006 à 16:02:40
Bonjour à tous
Bonjour quentinbach
Après :
Application.Workbooks.Open Application.GetOpenFilename()
essai ce code :
monfic = ActiveWorkbook.FullName
et ensuite tu récupère le nom de ton fichier avec le chemin dans monfic
ou :
monfic= ActiveWorkbook.Name
et ensuite tu récupère que le nom du fichier dans monfic
ce sera plus sympa pour tes collègues
A+
Marsh Posté le 30-10-2006 à 14:18:37
Bonjour,
J'ai un gros probleme, j'ai realise un programme pour mettre a jour d'autres classeurs excel. Ce programme demande a l'utilisateur d'aller chercher le fichier a mettre a jour (car je ne connais pas forcement son nom, et encore moins son adresse); apres ouverture de ce fichier, le prog supprime les anciennes données pour ensuite les remplacer. Le programme doit donc naviguer entre les deux classeurs pour copier/coller les infos mises a jour. Le probleme vient lors du retour sur le classeur a mettre a jour, je ne connais pas son nom, et donc je ne sais pas comment l'appeller. Voici mon code :
'ouverture du fichier a mettre a jour
MsgBox "veuillez indiquer le chemin du fichier pour mise à jour"
Application.Workbooks.Open Application.GetOpenFilename()
'suppression des anciennes donnees
Sheets("Export MSP" ).Select
Range("B10" ).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
'retour sur le fichier ou la macro est situé (je connais son nom a celui ci)
Windows("maj bordereaux.xls" ).Activate
Range("A2" ).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
'retour sur le 2eme classeur pour mise a jour (c la le probleme)
'Windows("2eme classeur" ).Activate
'Range("B10" ).Select
'ActiveSheet.Paste
Si vous avez une petite solution ca m'arrangerait bien, j'ai essayé pas mal de truc, notamment la suppression de mon classeur où la macro est présente (tactique de la feinte pour kil retourne tout seul sur mon 2eme classeur héhé) mais ca coupe aussi ma macro (remarque ca parait normal ...) donc je suis un peu a court d'idees.
Message édité par quentinbach le 30-10-2006 à 14:24:51