Créer un nom de fichier avec cellule

Fermé
vinceasy - 4 déc. 2012 à 17:40
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 5 déc. 2012 à 11:06
Bonjour,
je rencontre un problème avec une macro qui fait référence à des cellules. La macro fonctionne bien mais lorsque je veux ouvrir le fichier enregistrer ma macro n'est plus applicable car le nom à changé. je suis pas super doué avec cet outils mais peut être que quelqu'un peu m'aider dans ma recherche.
voici les ligne de code
---------------------------------------------
Sub Auto_open()


Dim mybar As CommandBar, mybarButton As CommandBarButton
If ThisWorkbook.Name = "devis.xls" Or ActiveSheets = "feuille" Then 'attention mettre le nom du fichier ici
GoTo suivant
Else: GoTo FIN
suivant:
Auto_close '

Set mybar = CommandBars.Add(Name:="perso", Position:=msoBarTop, temporary:=True)

Set mybarButton = mybar.Controls.Add(msoControlButton, , , , True)
With mybarButton
.Caption = "enregistrement devis"
.Style = msoButtonIconAndCaption
.OnAction = ThisWorkbook.Name & "!devis" '
.TooltipText = "Lance la macro nom_devis" '
End With

mybar.Visible = True '

FIN:
End If


End Sub
---------------------------------------------------------
Sub nom_devis()


Dim Fichier As String
Dim x As String

x = Range("b2").Value
x1 = Range("b3").Value2

Fichier = "" & x & " - " & x1 & ".xls"

ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\" & Fichier


End Sub
---------------------------------------------------------
A voir également:

1 réponse

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
4 déc. 2012 à 22:37
Je ne comprends pas ce que tu veux faire, mais si tu veux qu'une macro fonctionne quand tu change quelque chose dans la 'Feuil1' il faut mettre la macro dans feuille avec la procédure portant ce nom : "Private Sub Worksheet_Change(ByVal Target As Range)"
Si elle doit fonctionner à l'activation de cette feuille, il faut mettre comme nom de procédure : "Private Sub Worksheet_Activate()".
Si elle doit fonctionner à l'ouverture du classeur, alors le nom de la procédure est : "Private Sub Workbook_Open()", bien sur dans la feuille portant le nom "Workbook"
Espérant t'avoir fait progresser.
0
en fait sit tu regarde dans les ligne j'ai une condition qui fait appelle à devis.xls. le souci c'est qu'après avoir actionner la macro de la sauvegarde de mon fichier, si j'ouvre le nouveau document la macro ne s'actionne pas automatiquement. j'ai essayer de créer un modul avec ce que tu m'a donné mais ca ne change rien...
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
5 déc. 2012 à 09:26
Bonjour vinceasy,
Excuses-moi de ne pas bien comprendre, mais le code est long pour moi ce matin et j'ai un peu de mal, d'autant qu'il n'est pas colorier syntaxiquement ni indenté.
Si tu peux me mettre en gras la partie qui nous intéresse, j'aurai plus facile (j'espère) {*;*}
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
5 déc. 2012 à 09:28
Tu dis si j'ouvre le nouveau document la macro ne s'actionne pas automatiquement:
Comment ouvres-tu ton nouveau document ? Manuellement .. avec la macro de sauvegarde ?
0
Je t'envoie avec les commentaire de chaque ligne
tu verras que le fichier appelé dans la macro est devis. xls mais je souhaite que ce soit aussi applicable pour un autre nom de fichier varible celon les valeurs dans le cellule. c'est le souci


macro pour nommer le fichier avec le comptenu de 2 cellule
Sub nom_client()


Dim Fichier As String
Dim x As String

x = Range("b2").Value
x1 = Range("b3").Value2

Fichier = "" & x & " - " & x1 & ".xls"

ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\" & Fichier

--------------------------------------
Sub Auto_open()

'Création de bouton dans une nouvelle barre d'outils

Dim mybar As CommandBar, mybarButton As CommandBarButton
If ThisWorkbook.Name = "devis.xls" Then 'attention mettre le nom du fichier ici


je ne peux declencher la macro que si le fichier ouvert s'appelle devis.xls

GoTo suivant

Else: GoTo FIN
suivant:
Auto_close ' suppression de la barre de commande si elle existe
' creation d'une nouvelle barre de commande appelée "perso"
Set mybar = CommandBars.Add(Name:="perso", Position:=msoBarTop, temporary:=True)
' ajout des icones dans la barre de commande
Set mybarButton = mybar.Controls.Add(msoControlButton, , , , True)
With mybarButton
.Caption = "enregistrement VIC" 'nom du bouton 1
.Style = msoButtonIconAndCaption
.OnAction = ThisWorkbook.Name & "!nom_client" 'démarre Macro nom_client
.TooltipText = "Lance la macro nom_client" 'légende pour le bouton
End With

mybar.Visible = True ' display de la barre de commande

FIN:
End If


End Sub

Sub Auto_close()
'
'Suppression de la barre de menu à la fermeture du fichier
On Error Resume Next
Application.CommandBars("perso").Delete
On Error GoTo 0
End Sub




End Sub
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
5 déc. 2012 à 11:06
MsgBox("Le nom du fichier est: " & Cells(1, 1).Value, vbExclamation, "Valeur de la cellule ""A1"".") .. c'est cela que tu veux ?
Si oui, alors:
If ThisWorkbook.Name = Cells(1, 1).Value
ou If ThisWorkbook.Name = Cells(1, 1).Value & ".xls"
0