Créer un nom de fichier avec cellule

vinceasy -  
Heliotte Messages postés 1561 Statut Membre -
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
---------------------------------------------------------

1 réponse

  1. Heliotte Messages postés 1561 Statut Membre 92
     
    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
    1. vinceasy
       
      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
    2. Heliotte Messages postés 1561 Statut Membre 92
       
      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
    3. Heliotte Messages postés 1561 Statut Membre 92
       
      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
    4. vinceasy
       
      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
    5. Heliotte Messages postés 1561 Statut Membre 92
       
      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