Excel

Résolu
Bonjour,
Pouvez-vous m'aider?
j'aimerais lorsque je clique sur un bouton, enregistrer directement ma feuille excel sur une autre feuille ( feuille 1 devient feuille 2) et j'aiemrais l'enregistrer sous le nom d'une cellule.
J ne sais pas si cela est possible?

Merci d'avance
cordialement
Configuration: Windows XP Internet Explorer 7.0

39 réponses

Résumé de la discussion

L'objectif est d'enregistrer une feuille Excel dans un autre fichier et d'utiliser le nom d'une cellule comme nom de fichier pour éviter d'écraser le fichier existant. Plusieurs réponses proposent une approche via une macro VBA associée à un bouton, utilisant la commande SaveAs et un chemin explicite, tout en s'assurant que la référence cellule déclenche le nom du fichier. Des échanges exposent aussi des difficultés pratiques comme des doublons de chemin ou des erreurs de référence, et suggèrent d'ajuster le code ou de tester dans le dossier cible. D'autres messages mentionnent l'intérêt d'une gestion dynamique du nom de fichier via Find dans les valeurs de cellule et la correction des chemins pour éviter les conflits lors de multiples enregistrements.

Bobot (l’IA à votre service)
  1. si je peut me permetre , est-ce que l'affichage de la formule dans la case A1 est impératif ... on peut s'en passer et enregistrer le fichier directement avec les champs concernés ...
    ActiveSheet.SaveAs Filename:="C:\Documents and Settings\thaillot\Bureau\Remi\fiche\" & [D5] & [D7] & [D9] & [I5]
    
    0
    1. arrrrrrrrrrrrrr j'ai enversé feuil 1 et feuil 2, maintenant ca marche!!!
      Désolé de vous avoir fait perdre du temps sur une erreur d'innatention.

      Encore merci pour tout votre aide,
      Cordialement.
      0
      1. alors plusieurs choses déja...quelle est la feuille enregistrée ? la feuil1 ?
        ensuite ou sont les nom avec avec lesquel tu compte enregistrer ta feuille ? en A1 de la feuil2? parce que pour l'instant il prend les valeurs qui sont dans la feuil2 entre B1 et B500
        With ActiveWorkbook.Sheets(1).Range("b1:b500")

        et pour l'instant ca marche pas parce que voici l'endroit ou il voudrait enregistrer le fichier:
        "C:\Documents and Settings\thaillot\Bureau\Remi" & [B1]
        alors qu'il faudrai que ce soit qqch dans ce genre:
        "C:\Documents and Settings\thaillot\Bureau\Remi\fiche\" & [B1]
        0
        1. http://www.cijoint.fr/cjlink.php?file=cj200911/cij2196RiQ.xls
          voici le lien moi j'aimerais que ce fichier s'enregistre dans un dosier que j'ai nommé fiche
          0
          1. Enfet moi quand je met ce code, ca me l'enregistre sous le nom de fiche or moi je veux que ca s'enregistre dans le dosier fiche!
            0
            1. cher moi ca fonctionne, donc soit tu as mal recopier le code parce que je voi qu'il manque un "\" ici
              ActiveSheet.SaveAs Filename:="C:\Documents and Settings\f\Bureau\Remi\fiche\" & c.Offset(1, 0).Value 
              soit il n'y a rien dans les case d'enregistrement entre A1:A... soit le nom comporte un caractère indésirable comme [ , ] " ? ; : / \ ...
              recopy le message d'erreur renvoyé
              0
              1. voici le code:
                Sub CommandButton1_QuandClic()
                With ActiveWorkbook.Sheets(1).Range("a1:a500")
                Set c = .Find(ActiveWorkbook.Name, LookIn:=xlValues)
                If Not c Is Nothing Then
                firstAddress = c.Address
                Do
                ActiveSheet.SaveAs Filename:="C:\Documents and Settings\fBureau\Remi\fiche\" & c.Offset(1, 0).Value
                Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> firstAddress
                Else
                ActiveSheet.SaveAs Filename:="C:\Documents and Settings\f\Bureau\Remi\fiche\" & [A1]
                End If
                End With
                End Sub

                Il me met en erreuir cette ligne:

                ActiveSheet.SaveAs Filename:="C:\Documents and Settings\f\Bureau\Remi\fiche\" & [A1]
                0
                1. Je vais fixer mon chemin ce serat plus simple, ca donne:
                  With ActiveWorkbook.Sheets(1).Range("a1:a500")
                  Set c = .Find(ActiveWorkbook.Name, LookIn:=xlValues)
                  If Not c Is Nothing Then
                  firstAddress = c.Address
                  Do
                  ActiveSheet.SaveAs Filename:="C:\C:\Documents and Settings\f\Bureau\Remi\fiche\" & c.Offset(1, 0).Value
                  Set c = .FindNext(c)
                  Loop While Not c Is Nothing And c.Address <> firstAddress
                  Else
                  ActiveSheet.SaveAs Filename:="C:\C:\Documents and Settings\f\Bureau\Remi\fiche\" & [A1]
                  End If
                  End With

                  C'est ok?
                  0
                  1. normalement oui si tu applique la modif que je t'ais indiqué juste avant ^^
                    0
                2. c'est normale tu as deux fois C:\C:\ il faut en supprimer un:
                  ActiveSheet.SaveAs Filename:="C:\Documents and Settings\f\Bureau\Remi\fiche\" & [A1]
                  0
                  1. quand je rentre mon chemin dans ce code la cela ne fonctionne pas:
                    ActiveSheet.SaveAs Filename:="C:\C:\Documents and Settings\f\Bureau\Remi\fiche\" & [A1]
                    0
                    1. Avec l'option B1 ca donnerais ca?

                      With ActiveWorkbook.Sheets(1).Range("a1:a500")
                      Set c = .Find(ActiveWorkbook.Name, LookIn:=xlValues)
                      If Not c Is Nothing Then
                      firstAddress = c.Address
                      Do
                      ActiveSheet.SaveAs Filename:=[B1] & c.Offset(1, 0).Value
                      ActiveSheet.SaveAs Filename:=[B1] & [A1]
                      Loop While Not c Is Nothing And c.Address <> firstAddress
                      Else
                      ActiveSheet.SaveAs Filename:="C:\le chemin\" & [A1]
                      End If
                      End With-

                      Ca serait le top si cela fonctionne!
                      0
                      1. si tu choisi de placer le chemin d'enregistrement dans la case B1 il faut modifier tous les enregistrement. ce code devrait fonctionner :
                        With ActiveWorkbook.Sheets(1).Range("a1:a500")
                            Set c = .Find(ActiveWorkbook.Name, LookIn:=xlValues)
                            If Not c Is Nothing Then
                                firstAddress = c.Address
                                Do
                                    ActiveSheet.SaveAs Filename:=[B1] & c.Offset(1, 0).Value
                                                Set c = .FindNext(c)
                                Loop While Not c Is Nothing And c.Address <> firstAddress
                            Else
                            ActiveSheet.SaveAs Filename:=[B1] & [A1]
                            End If
                        End With
                        sans oublier que le chemin est du style : C:\....\
                        0
                    2. bonjour, deux solutions :
                      -1 tu connais le chemin et il est fixe dans ce cas :
                      With ActiveWorkbook.Sheets(1).Range("a1:a500")
                          Set c = .Find(ActiveWorkbook.Name, LookIn:=xlValues)
                          If Not c Is Nothing Then
                              firstAddress = c.Address
                              Do
                                  ActiveSheet.SaveAs Filename:="C:\le chemin\" & c.Offset(1, 0).Value
                                              Set c = .FindNext(c)
                              Loop While Not c Is Nothing And c.Address <> firstAddress
                          Else
                          ActiveSheet.SaveAs Filename:="C:\le chemin\" & [A1]
                          End If
                      End With
                      -2 il change et est dans une case dans ce cas:
                      ActiveSheet.SaveAs Filename:=[B1] & c.Offset(1, 0).Value
                      ActiveSheet.SaveAs Filename:=[B1] & [A1]
                      si le chemin se trouve dans la case B1
                      0
                      1. bé je crois que j'avais mal copier le code car j'ai fermé mon fichier et j'ai recommencé et ca a marché.
                        Cependant dans quel paramétre je dois toucher pour choisir la destination de l'enregistrment de mon fichier, car il se met automatiquement dans mes document mes moi j'aimerais le mettre dans un dossier spécifique...
                        0
                        1. il y a bien la fonction Date et Time mais le problème c'est que ca enregistre avec des formats :
                          JJ/MM/YYYY et HH:MM:SS et le problème c'est que sur windows tu peut pas enregistrer avec des symboles ":" ou "/"
                          chez moi la macro fonctionne...
                          0
                          1. Merci beaucoup pour votre aide, j'ai envfin reussi ce que je voulai avec le post 17.

                            Encore merci,

                            Cordialement.
                            0
                        2. Quand je fais le post 17 sa marche la premiere fois et aprés sa me dit: Microsfot office ne peut pas accéder au fichier.
                          Est-ce normal?
                          0
                          1. sinon c'est possible d'enregistrer automatique le fichier avec la date, de ce faite le nom du fichier changera chaque jour.
                            Mais bon j'aurais voulu l'enregistrer sous un nom différent plusieur fois par jours...
                            0
                            • 1
                            • 2