VBA pour sauvegarde nom cellule sur excel - VB/VBA/VBS - Programmation
Marsh Posté le 29-07-2010 à 13:02:42
Hello
Déjà, le titre ne se met pas en majuscules. Majuscules sur le net = crier
Donc tu utilises cette petite icone pour editer ton post et passer le titre en minuscule.
Ensuite, je dirais que c'est assez simple. Ta date contient (logique) des /
Or, sur Windows on ne peut pas mettre de / dans un nom de fichier.
Passe par un format.
Genre :
Code :
|
Je mets yyyy-mm-dd comme ca tu auras une date de ce genre : 2010-07-29
Mettre les dates dans ce format, surtout pour des noms de fichiers, c'est bien plus pratique si tu as besoin de trier tes fichiers dans l'explorateur.
Si tu as des fichiers comme ceci :
01-01-2010-reporting.xls (1er janvier 2010)
10-01-2010-reporting.xls (10 janvier 2010)
01-02-2010-reporting.xls (1er fevrier 2010)
Si tu les tries pas ordre alpha tu auras ceci :
01-01-2010-reporting.xls (1er janvier 2010)
01-02-2010-reporting.xls (1er fevrier 2010)
10-01-2010-reporting.xls (10 janvier 2010)
Or le 10/01/2010 devrait etre apres le 01/01/2010, mais par ordre alpha les 01 sont en premier, ce qui est logique.
Avec une date a l'anglaise, plus de souci pour trier.
Cordialement
Marsh Posté le 29-07-2010 à 13:12:33
Merci pour ce tuyau... mais j'ai tjr un probleme de débogage... visiblement je pense comme j'ai trois feuilles sur excel que je n'ai pas spécifié la page dans laquelle je voulais qu'il cherche b1 non?
Ou rien a voir...
Marsh Posté le 29-07-2010 à 13:46:01
Oui tu peux lui preciser par Sheets("Nom de ta feuille" ).Range("B1" ).Value
Si tu ne specifies pas, il prend la page active.
Et n'oublie pas le titre, sinon la modération risque de passer...
Quoi que sont plus "cool" sur la cat dév
Marsh Posté le 29-07-2010 à 13:51:36
BOn visiblement ce n'est pas ça.... dsl mais le débogage me met en jeune la deuxieme partie de de la formule... et point readonlyrecommended:=false... etc
Comment puis-je mettre le mon titre en minuscule?
c'est la premiere fois que je poste quelque chose
Marsh Posté le 29-07-2010 à 13:52:59
Édition du titre : les titres tout en majuscules sont prohibés. Merci de lire les règles de la section.
Marsh Posté le 29-07-2010 à 14:13:03
ReplyMarsh Posté le 29-07-2010 à 14:58:32
Oui il est bon puisque je l'ai fait en macro enregistré et je suis allé le prendre après
Marsh Posté le 29-07-2010 à 15:23:42
Aucun souci chez moi :
Code :
|
J'ai bien un fichier sous C: qui se nomme 2010-07-29-reporting.xls
Marsh Posté le 29-07-2010 à 15:37:31
Ca fonctionne super merci bcp, par contre quand je vais historiser mon fichier... mon fichier conserve la date =aujourd'hui donc evolue alors que j'aimerais qu'il ne change plus de date comme il est historiser...
Heureusement que ce genre de forum existe parce que sinon....
Mille mercis
Marsh Posté le 29-07-2010 à 16:00:39
Je ne suis pas sur de bien tout comprendre...
Mais, si j'ai réussi a traduire dans ma tite tete, ca devrait donner ceci :
Code :
|
Marsh Posté le 29-07-2010 à 16:04:59
Ta mécanique intellectuelle fonctionne très bien
Dernière chose après je voudrais défintivement te remercier parce que j'ai appris quelques trucs cette aprem lol
Comment puis rajouter l'heure à ma date?
pour avoir par exemple 2010-05-26 13h30-reporting
Marsh Posté le 29-07-2010 à 16:14:16
Toujours en jouant sur les formats.
Si tu te positionnes sur Format, et que tu appuies sur F1, tu auras toute l'aide dont tu as besoin.
Je trouve que justement la suite Office, et notament pour vba, a une aide vraiment riche.
Pour repondre a ta question, un truc du genre devrait le faire :
MaDate = Format(Range("b1" ).Value, "yyyy-mm-dd" ) & "-" & Format(Time(), "hh""h""mm" )
Edit : toujours pareil, les ":" etant interdits dans les noms de fichier, on met un "h" pour palier au souci, puisque Time() renvoi hh:mm:ss
Marsh Posté le 02-08-2010 à 11:45:53
Merci pour tt,
Ca m'a bcp aidé,
Si je souhaite copier coller une valeur dans une autre feuille à une date déterminé,
par exemple dans la feuille "reporting2", la cellule "f39"
que je veux mettre dans la feuille "reporting" mais tout les 27 du mois par exemple... dans un tableau et je veux qu'il y ait un pas chaque mois au 27 qu'il continue dans la colonne pour correspondre au mois que je mettrais dans ma colonnne concomitante...
Si jamais tu es devant merci de m'aider.. tu es super sympa
Marsh Posté le 02-08-2010 à 11:48:42
Oulalalalala va falloir me la refaire en moins cripsé...
J'ai rien compris...
Marsh Posté le 02-08-2010 à 11:55:36
lol
Alors reprenons .... j'aimerais faire un copier coller valeur d'une cellule tout les 27 du mois dans un tableau:
Je veux copier ma cellule "F39" de la feuille "reporting2"
F39 correspond en faite à une performance mensuelle genre -22%
dans la cellule "A1" de la feuille "reporting" ou se trouve un tableau
du type
janvier
fevrier
mars
avril
mai
juin
etc
et je veux que le 29 de chaque mois il reporte la cellule F39 mois apres mois (je crois qu'on appelle ça un pas???)
Evidemment je pense qu'il faut indiquer a la macro qu'il copie ca le 29 du mois.
Ai-je été plus clair, je l'espère en tout cas lol
Marsh Posté le 02-08-2010 à 12:01:36
Avec Excel tu ne peux pas automatiser comme ca sur une date.
Si le fichier n'est pas ouvert, Excel ne lance pas de macro, donc niet.
Ensuite il faut gerer les exceptions. Si on est le 30, et que le 27 n'a pas été fait parceque week end, congés, pc eteind etc. il faut le prendre en compte.
Mais pour ca, je pense qu'un script vbs est plus approprié. Ou, si tu es vraiment sur d'ouvrir ton fichier Excel chaque jour ou presque ca peut se faire.
Marsh Posté le 02-08-2010 à 12:08:46
En tout cas il est sur que je l'ouvrirai avant la fin du mois sinon je peux créer un bouton pour qu'il me fasse la manipulation quand je le souhaite et pas a une date figée...
Mais que vais-je mettre derrière le bouton
Marsh Posté le 04-08-2010 à 10:05:14
Et bien le code qui dit :
- Ouvrir le fichier dans lequel copier la cellule
- Copier la cellule du fichier initial
- Coller la valeur de la cellule dans le fichier final
- fermer le fichier final en le sauvegardant
Marsh Posté le 04-08-2010 à 10:26:14
Oui merci, j'arrive quand même a penser ça
Pour l'instant j'ai
sheets("feuil2" ).range("h35" ).copy
sheets("feuil3" ).cells(65535, 13).end(xlup) (2). paste special
Et si je veux reproduire la même opération mais à l'horizontal dans un tableau ("b15:m16" ) qui représente les mois de l'année
janvier fevrier mars avril etc...
mais j'aimerais qu'il reviens a janvier quand il a complété décembre...
Marsh Posté le 04-08-2010 à 10:37:41
Faudrait surtout expliquer point pas point, en explicitant d'ou viennent tes données où doivent elles aller...
Tu parles de feuilles nommées "reporting2" et la dns ton exemple de code tu as "Feuille3"...
On a pas le classeur sous les yeux, donc difficile d'extrapoler autant...
Marsh Posté le 04-08-2010 à 10:53:56
Comment charger le fichier? il est deja prêt je peux te l'envoyer par email ou message privé?
l'explication avant le fichier
Chaque fin de mois en cliquant sur un bouton une valeur va s'ajouter M20, M21 DE LA FEUILLE suivi des perf
j'aimerais que ce tableau verticale soit reporter sur mon tableau horizontal en respectant ("b15:m16" ) pour les premieres années mais si tu sais comment le faire pour qu'il me fasse ca indéfinimement sans s'arreter a decembre 2010 ca serait super.
Marsh Posté le 04-08-2010 à 11:31:12
jkm0032 a écrit : Comment charger le fichier? il est deja prêt je peux te l'envoyer par email ou message privé? |
Ca ne devrait pas etre trop compliqué... J'attends ton mail. Je partagerais les infos et l'avancement ici parcontre.
Marsh Posté le 05-08-2010 à 13:01:58
Désolé, ton mail etait dans mes spams je ne l'avais pas vu...
jkm0032 a écrit : j'aimerais que ce tableau verticale soit reporter sur mon tableau horizontal en respectant ("b15:m16" ) pour les premieres années mais si tu sais comment le faire pour qu'il me fasse ca indéfinimement sans s'arreter a decembre 2010 ca serait super. |
Voici le code, normalement j'ai tout bien expliqué en commentaire, mais si tu as besoin de plus d'info n'hesite pas.
J'ai fait un essai de tirer tes colonnes vers le bas, donc jusqu'en 2025, le traitement dure environ 2sc avec mon pc virtuel...
Code :
|
En image :
Marsh Posté le 05-08-2010 à 13:17:11
ReplyMarsh Posté le 08-09-2010 à 14:05:32
Yo,
Dsl j'ai été viré entre temps
Donc je viens de voir la réponse merci bcp a toi c'est gentil.
Marsh Posté le 08-09-2010 à 14:06:42
Faut vraiment que je me mette serieusement a VBA, j'ouvre un livre que je plonge deux minutes après
Marsh Posté le 29-07-2010 à 10:35:13
Bonjour,
J'aimerais une aide s'il vous plaît je débute sur VBA et j'aimerais pouvoir sauvegarder a partir d'une msbox un fichier quand je le souhaite et les historiser dans un fichier
Jusqu'a présent mon code est celui ci
Sub sauvegarde()
Message = " Voulez-vous sauvegarder et historiser le reporting?"
stylebox = vbYesNo + vbInformation
réponse = MsgBox(Message, stylebox)
If réponse = vbYes Then
ActiveWorkbook.SaveAs Filename:="P:\xxxx\Portefeuilles\xxxx\xxxx\" & Range("b1" ).Value & "reporting.xls""" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Else
End If
End Sub
Je pense déja que je n'ai pas renseigner ma feuille pour range("b1" ) la cellul b1 contient simplement une formule de type =aujourdhui().
Je veux qu'en cliquant et bien je puisse obtenir datereportingx.xls dans le fichier cible.
Merci d'avance
Message édité par Elmoricq le 29-07-2010 à 13:52:36