> Tous les forumsBureautique

 automatiser une macro excel pour tous les ordisSujet résolu
Statut du sujet : RESOLU Imprimer
 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

 Afficher le profil de mingus98Envoyer un message privé à mingus98
 
 
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
Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 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é..

Afficher le profil de mingus98Envoyer un message privé à mingus98
 Revenir en haut de la page
 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
Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 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

Afficher le profil de mingus98Envoyer un message privé à mingus98
 Revenir en haut de la page
 galopin01  Posté le 18/08/2008 à 03:12  
Astucien

4350 Messages

bonjour,

Sub test()
i = Worksheets.Count
Worksheets(i).Select
End Sub

A+

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 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"

Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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 !...

Afficher le profil de mingus98Envoyer un message privé à mingus98
 Revenir en haut de la page
 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
'

Afficher le profil de mingus98Envoyer un message privé à mingus98
 Revenir en haut de la page
 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.

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 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...
J ai quand meme un peu la haine car mes macros sont presques finies...mais quand je les aies mises sur l autre ordi !!! elles ne fonctionnent psa !!!
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
Afficher le profil de mingus98Envoyer un message privé à mingus98
 Revenir en haut de la page
 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+

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 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
Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 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 :

Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 galopin01  Posté le 20/08/2008 à 05:49  
Astucien

4350 Messages

Oui, oui...

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 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 ...

Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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

Afficher le profil de mingus98Envoyer un message privé à mingus98
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte




Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsBureautique

 
Forum PC Astuces© 1997-2009 WebastucesAller en haut de la page