Excel chgmt classeur via vb (copier 1 ver 2)

Résolu/Fermé
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 - 8 juin 2009 à 09:17
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 - 8 juin 2009 à 12:28
Bonjour,

j'ai beau manier le code dans tout les sens, je n'arrive pas à obtenir ce que je veux..Auriez-vous une idée??

En faite je dispose de 3 classeurs :

--> test.xls
--> A.xls
--> B.xls

Le classeur test.xl contient une macro qui s'exécute au démarrage, qui ouvre la boite de commande 'ouvrir"

J'ouvre dans un premier temps A.xls, puis j'ouvre à nouveau une autre boite de commande 'ouvrir' afin d'ouvrir le classeur B.xls. Le souci est que je voudrais reselectionner le classeur A.xls.

En effet je veux exporter des données du classeur A vers B, les deux doivent alors être ouvert mais cela ne marche pas.

Voici mon code :

Private Sub Workbook_Open()

Dim var1, var2, adres1, adres2, varfeuil As String


var1 = Application.GetOpenFilename
Workbooks.Open (var1)
adres1 = ActiveWorkbook.Name
varfeuil = ActiveSheet.Name

var2 = Application.GetOpenFilename
Workbooks.Open (var2)
adres2 = ActiveWorkbook.Name

rep = InputBox("saisir le nom de la feuille : (sous la forme 'NomAnnée')")

Workbooks(adres2).Sheets(rep).Select
Workbooks(adres2).WindowState = xlMinimized

Worksheets(varfeuil).Range("B3").Select
while
[...]
wend
End Sub

Voila, il me met une erreur mais ne me donne pas de ligne, mais je pense qu'elle vient de la ligne en gras puisque en effet je demande d'afficher un autre classeur que celui actif.

Merci d'avance

Necro27
A voir également:

6 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
8 juin 2009 à 11:39
Bon ca y est, j'ai fait un test chez moi de ta macro
il fallait faire ca dans un module!...

Private Sub Workbook_Open()
tester
End Sub



et dans un module

Sub tester()
Dim var1 As String, var2 As String, adres1 As String, adres2 As String, varfeuil As String


var1 = Application.GetOpenFilename
Workbooks.Open (var1)
adres1 = ActiveWorkbook.Name
varfeuil = ActiveSheet.Name

var2 = Application.GetOpenFilename
Workbooks.Open (var2)
adres2 = ActiveWorkbook.Name

rep = InputBox("saisir le nom de la feuille : (sous la forme 'NomAnnée')")

Workbooks(adres2).Sheets(rep).Select
'Workbooks(adres2).WindowState = xlMinimized

 Workbooks(adres1).Activate
Sheets(varfeuil).Range("B3").Select
 
End Sub


pour les déclarations: elles sont effectuées pour délimiter l'occupation en mémoire,
sans déclaration pour chaque variable, elles sont considérés par le compilateur comme variant soit la longueur de la chaine + 22 octets au lieu de la longueur de la chaine + 10 octets
Pour une petite macro, passe encore mais on a vu planter la macro dans des procédures longues et/ou complexes et surtout si il y a en plus des select-selection...
donc, il vaut mieux prendre l'habitude de déclarer comme il faut.
1
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
8 juin 2009 à 09:37
Bonjour

essaies:
Thisworkbook.Worksheets(varfeuil).Range("B3").Select
0
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 8
8 juin 2009 à 09:48
Merci mais sa ne arche pas non plus..

Il me dit comme erreur :

Propriété ou méthode non géré par cet objet mais toujours pas de ligne d'erreur.

Cependant je viens de m'apercevoir que j'ai fais une petite erreur...et j'en suis désolé
Ce n'est pas :
Worksheets(varfeuil).Range("B3").Select qui est dans mon code mais :
Workbook(adres1).Worksheets(varfeuil).Range("B3").Select
voila ce qu'il y a d'écrit dans mon code..sinon l'erreur si dessus est l'erreur qui apparait en utilisant

ThisWorkbook.Worksheets(varfeuil).Range("B3").Select

j'ai également essayer
Windows(adres1).Activate
sheets(verfeuil).select
range("B3").select

En vain même en donnant le véritable nom du classeur, cela ne me donne rien, pourtan le code juste ci desus provient d'une exécuion de macro....

merci

Necro27
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
8 juin 2009 à 10:23
Re,

Ca a l'air de déc... le forum
donc je copies colles ma réponse de tout à l'heure:


OK j'avais lu trop vite ta macro!! excuses-moi

tes 2 classeurs sont ils dans le m^me dossier?
si non, essaies activeworkbook.fullname (m^me si oui peut-être)

pendant que j'y suis:
tu dois déclarer variable par variable
Dim var1 As String, var2 As String, adres1 As String, adres2 As String, varfeuil As String
sinon var1,var2,adres1,adres2 sont du type variant
0

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

Posez votre question
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 8
8 juin 2009 à 10:49
euh je vien d'envoyer un msg mais il n'a pas été envoyé ...

Je réécri (car je n'ai pas eu la bonne idée de copier..) :

Le fullname ne marche pas non plus, mais ce procédé renvoi l'adresse complète, et je ne m'interesse qu'au nom du fichier, puisque plusieurs fichiers de nom différents seront utilisé..

Pour les variable je ne comprend pas pk fautil les diférencier, mais merci de la remarque.

je ne compren pas pk cette macro ne fonctionne pas, et le pire est qu'il ne menvoi pa de ligne d'erreur, et toujours le msg qui dit que ..

et sinon pa de souci il n'y a pas a s'excuser^^

merci

Necro27
0
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 8
8 juin 2009 à 12:28
nickel, ça marche !! :)

merci beaucoup, fallait y penser d'appeler un sub dans le workbook_open... :)

j'avais trouvé une solution pour contourner la difficultée, mais 1 ligne de code se transformer en 5 lignes lol

bonne journée et encore merci d'avoir pris du temps pour m'aider

Necro27
0