|
| mingus98 | Posté le 17/08/2008 @ 14:17 |
Petit astucien
62 Messages
| Bonjour a tous,
Voila ma petite question,
J ai fait une macro qui me sert bien que j ai installé sur mon pc...qui travaille sur un fichier, puis l enregiste dans un autre fichier que je place dans un repertorie x
Le probleme, je voudrais automatiser cette macro et l installer sur un autre ordinateur..hmmm, c est a dire que ma macro indique l adresse suivante
ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\onda\Os meus documentos\test.xls",
Mais quand je vais l installer sur un autre ordi, il me donnera bien sur une erreur, puisque le nom de l utilisateur ("onda" dans mon exemple) sera different..
Quelle est la commande qui permettrait de dire "C:\Documents and Settings\%utilisateur%\Os meus documentos\test.xls" ?
Merci de l aide
|
| |
| |
| Publicité |
|
|
| galopin01 | Posté le 17/08/2008 à 15:45 |
Astucien
4350 Messages
| Bonjour,
Cette fonction renvoie le répertoire demandé.
Function REP$() REP = Left(CurDir, InStr(27, CurDir, ("\"))) & "Os meus documentos\" End Function
YAPUKA rajouter le nom du fichier !
A+
Modifié par galopin01 le 17/08/2008 15:47 |
| |
|
| mingus98 | Posté le 17/08/2008 à 16:09 |
Petit astucien
62 Messages
| Merci pour cette definition Galopin...
Rheuuu c est pas que je veux qu on me fasse mon travail...mais...je la rajoute ou cette fonction dans ma macro ?
ma macro dit
Range("F12").Select ActiveCell.FormulaR1C1 = "sdfsf" Range("G9").Select ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\onda\Os meus documentos\test.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False
FAut que je remplace cette ligne ?...car j arrive pas en rajoutant et en tentant de definir la ligne pour que ce soit automatisé..

|
| |
|
| galopin01 | Posté le 17/08/2008 à 16:39 |
Astucien
4350 Messages
| Colle la fonction dans un module standart (Module1)
et modifie ta macro comme suit :
Range("F12").Select ActiveCell.FormulaR1C1 = "sdfsf" Range("G9").Select ActiveWorkbook.SaveAs Filename:= REP & "test.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False
A+
Modifié par galopin01 le 17/08/2008 16:48 |
| |
|
| mingus98 | Posté le 17/08/2008 à 23:44 |
Petit astucien
62 Messages
| Merci Galopin...je vais vite tenter de voir si ça marche,
Heuuu et sans vouloir abuser,
Comment je fais pour demander de deplacer la derniere feuille a excel en macro...car quand je le fais en enregistrant une macro...il me met le nom , alors que moi je veux lui dire par ´defaut...qu il se rende sur la derniere feuille...j ai cru comprendre que sheet(2) c est la deuxieme ?
Juste selectionner la derniere feuille..c est quoi la tite commande ? je craque avec tous ces delires a chaque fois...pffff
merci de l aide |
| |
|
| galopin01 | Posté le 18/08/2008 à 03:12 |
Astucien
4350 Messages
| bonjour,
Sub test() i = Worksheets.Count Worksheets(i).Select End Sub
A+ |
| |
|
| Bérylion | Posté le 18/08/2008 à 11:02 |
Astucien
2444 Messages
| galopin01 a écrit :
Bonjour,
Cette fonction renvoie le répertoire demandé.
Function REP$() REP = Left(CurDir, InStr(27, CurDir, ("\"))) & "Os meus documentos\" End Function
YAPUKA rajouter le nom du fichier !
A+

Salut kamarad
bien trouvé ! mais yaplusimple :
la fonction
Environ("UserProfile")
donne directement : "C:\Documents and Settings\utilisateur"

|
| |
|
| mingus98 | Posté le 18/08/2008 à 14:29 |
Petit astucien
62 Messages
| Merci mille fois les artistes !!
juste une ligne d aide...et ça me sert énormément !!
Pffffiouuu...
Probleme résolu.
Y aurait il un lien qui existe montrant les differentes définitions ? genre rajout automatiquement d une feuille, la placer a la fin d un classeur ?...ou pourrais je trouver toutes ces definitions ?
Merci en tous cas !...
  
|
| |
|
| mingus98 | Posté le 18/08/2008 à 18:23 |
Petit astucien
62 Messages
| Gloups , j ai parlé trop vite...
ça marche prrreeessqqquuue mais pas tout a fait.
En resumé ce que je veux ( c est pourtant simple...pfff et je suis nul !!)
Je travaille sur un premier classeur, je veux selectionner la derniere feuille...et je la deplace sur le classeur nº2 en plaçant la feuille en dernier emplacement.
J ai la macro suivante
Sub sauvegarde() Sheets(Sheets.Count).Select.............selectionne la derniere feuille ? c est ça ? i = Worksheets.Count Worksheets(i).Select Sheets(i).Move After:=Workbooks("site.xls").Sheets(Sheets.Count).....il me deplace la feuille dans mon classeur "site" (et je le voudrai en dernier emplacement...
Le deplacement de la feuille se fait bien, mais je ne sais pas pourquoi cette feuille se retrouve toujours en 5em position !!! (mais pourquoi !!! ).
J ai le droit a un petit coup de pouce ?
Merci encore ' |
| |
|
| galopin01 | Posté le 19/08/2008 à 01:04 |
Astucien
4350 Messages
| ... Juste un peu bordelique !
Sheets(Sheets.Count).Select.............selectionne la derniere feuille ? c est ça ?
C'est ça !
Entre Sheets et Worksheets il va falloir choisir...
Tu compte les Sheets, tu comptes les Worksheets tu affectes le i à des sheets. De plus on ne sait jamais de quel workbook tu parles. (donc on ne sait pas ce que tu comptes)
Sheets(i).Move After:=Workbooks("site.xls").Sheets(Sheets.Count)
Dans l'expression précédente Sheets.count renvoie 4 car tu compte les feuilles du classeur de départ (i)
Pour compter le nombre de feuille du classeur d'arrivée il faudrait écrire
k =Workbooks("site.xls").Sheets.Count
De plus tu as déjà du lire ici ou là qu'il n'y a pas besoin de selecter à tout bout de champ.
Bien que l'enregistreur de macro le fasse à tout bout de champ, c'est même un très déconseillé.
En résumé, il faudrait écrire :
Sub sauvegarde() i = Worksheets.Count 'compte les feuilles du classeur actif (origine) k =Workbooks("site.xls").Worksheets.Count 'compte les feuilles du classeur cible Worksheets(i).Move After:=Workbooks("site.xls").Worksheets(k)
Note bien que je ne "Select" rien : "Move" fait le boulot à ma place...
C'est comme à table, tu ne dis pas :
"prend le sel et donne le moi" n'est ce pas ? "donne moi le sel" est bien suffisant !
VBA ne procède pas différemment.

|
| |
|
| mingus98 | Posté le 19/08/2008 à 02:35 |
Petit astucien
62 Messages
|
Pffff un peu bordelique que tu dis ?...rhaa je veux bien te croire...a vrai dire je decouvre le Vba seulement maintenant...
Et c est vrai que je commençais a balancer certaines fonctions pour faire un test et ainsi tenter de comprendre ce qu elles voulaient dire !...Clair que y adu boulot...que je viens de comprendre seulement maintenant ce que voulait dire des plans comme i = Worksheets.Count ..
Pfff mais je pensais itou que worksheets et sheets etaient le meme nom pour definir une feuille...
J vais faire des efforts promis...
Quoi qu il en soit...voila qui est bien résolu et j ai pigé !
Merci vachment pour votre patience...
Je recherche toujours des liens qui m expliqueraient differentes fonctions de VBA...
Et pourquoi ?
L autre ordi sur lequel j ai installé mes fichiers utilise unix....et donc...open office...qui n aime vraiment pas beaucoup les macros...peut etre un nouveau topic a faire si vous n avez pas de tuyaux... 
Merci a toute l equipe |
| |
|
| galopin01 | Posté le 19/08/2008 à 21:12 |
Astucien
4350 Messages
| mingus98 a écrit :
Je recherche toujours des liens qui m expliqueraient differentes fonctions de VBA...
Bonjour,
Les touches F1 et F2 (dans VBA) ramènent pratiquement toutes les informations que tu pourrais glaner ici ou là. YAKA s'en servir...
F2 pour lister la plupart des objets et fonctions usuelles.
F1 pour développer chaque objet fonctions méthodes, avoir des explications exemples, nombreux liens connexes... yaka taper un mot VBA dans un module positionner le curseur de la souris dessus et taper F1 pour déguster un concentré de vitamines VBA pour les neurones.
Heu... ya aussi le menu ? (A Droite du menu fenêtre dans VBA ) qui t'ouvre toute l'arborescence de l'aide de VBA. Tout y est !
Bon courage !
A+ |
| |
|
| galopin01 | Posté le 19/08/2008 à 21:25 |
Astucien
4350 Messages
| Bérylion a écrit :
mais yaplusimple :
la fonction
Environ("UserProfile")
Bonsoir,
Je sais ! Dans le même esprit Environ("UserName") faisait le minimum.
Je ne suis pas parti dans cette direction car cette question m'interpellait un peu. En effet selon les config, Environ ne ramène pas toujours "Document and Setting" et encore moins "Mes documents" : Il me paraissait donc plus interressant "d'ouvrir des horizons" sur le travail du string ("chemin" de CurDir) pour le cas ou notre ami se frotterait à un réseau un peu chiadé.
Mébon... Modifié par galopin01 le 19/08/2008 21:25 |
| |
|
| Bérylion | Posté le 19/08/2008 à 23:28 |
Astucien
2444 Messages
|
Salut
justement, je suis parti sur l'idée inverse 
voir le bel exemple ci dessous ou ça peut devenir foireux :

|
| |
|
| galopin01 | Posté le 20/08/2008 à 05:49 |
Astucien
4350 Messages
| |
| |
|
| Bérylion | Posté le 20/08/2008 à 09:02 |
Astucien
2444 Messages
| galopin01 a écrit :
Oui, oui...   

j'en mérite pas tant...
aller, pour la forme :
(adaptation personnelle d'un code original du grand chef L Longre )
Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" _ (ByVal hwnd As Long, ByVal nFolder As Long, ppidl As Long) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32" _ (ByVal Pidl As Long, ByVal pszPath As String) As Long
Private Function DSpec(nFolder As Long) As String Dim Pidl As Long SHGetSpecialFolderLocation 0, nFolder, Pidl DSpec = Space(260) SHGetPathFromIDList Pidl, DSpec DSpec = Left$(DSpec, InStr(1, DSpec, vbNullChar) - 1) End Function
Sub test() MsgBox """Mes Documents"" = " & DSpec(5) End Sub
bon, c'est pas tout ça, mais chui pas aussi matinal moi ;
alors ...
|
| |
|
| mingus98 | Posté le 20/08/2008 à 15:55 |
Petit astucien
62 Messages
| Et maintenant que je commence a accepter le langage excel que je me remets avec open office...
C est plus du tout pareil (pour les macros ?...)
Sous Ooo y a pas de Worsheets ? e sheet.count ?
on m avait donné cette belle formule
Sheets(Sheets.Count).Name = Format(Now, "dd-mm-yyyy hh.mm.ss"), qui me permettait de renommer ma derniere feuille sous excel et de lui attribuer la date du jour...
et avec ooo ?...cette formule ne fonctionne pas...
Heuuuu...pfff j ai peur d abuser  |
| |
|
|
| Haut de la page |