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
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
A voir également:
- Excel chgmt classeur via vb (copier 1 ver 2)
- Liste déroulante excel - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Si et excel - Guide
- Copier une vidéo youtube - Guide
- Word numéro de page 1/2 - Guide
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 310
8 juin 2009 à 11:39
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!...
et dans un module
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.
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.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
8 juin 2009 à 09:37
8 juin 2009 à 09:37
Bonjour
essaies:
Thisworkbook.Worksheets(varfeuil).Range("B3").Select
essaies:
Thisworkbook.Worksheets(varfeuil).Range("B3").Select
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
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
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
8 juin 2009 à 10:23
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
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
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
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
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
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
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
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