Macro enregistrer, fermer, ouvrir

Résolu
Bonjour,

Je suis sous excel 2010 et j'ai un classeur A dans lequel je rempli des champs et j'aimerais qu'en cliquant sur un bouton (macro) le classeur (classeur B donc) s'enregistre avec les valeurs des cellules C6 et D6 séparées par - et que le nouveau classeur ne s'ouvre pas (ou se referme) tout en laissant le classeur A ouvert.

Travail à effectuer avec une macro.

J'espère avoir été assez clair et complet au niveau des infos et j'attends votre aide avec impatience !!

Merci.

6 réponses

  1. Bonjour,

    Effectivement, il faut passer par une macro :

    tu vas dans outils macro, visual basic editor, insertion module et tu colles ce code :

    Sub enregistrer()

    nomorigine = ActiveWorkbook.Name 'récupère le nom de ton classeur
    x = 1
    Do While x <= ActiveWorkbook.Sheets.Count ' va travailler jsuqu'à ce que tu as de feuilles
    If x = 1 Then
    Sheets(x).Copy 'si c'est la première, on copie dans un novueau classeur
    nom = ActiveWorkbook.Name
    Else
    Sheets(x).Copy After:=Workbooks(nom).Sheets(x - 1) 'si la feuille n'est pas la première, on copie ces feuilles dans le novueau classeur
    End If
    Workbooks(nomorigine).Activate
    x = x + 1
    Loop
    Workbooks(nomorigine).Activate
    a = Sheets("feuil1").Cells(6, 3) ' on récupère la valeur de c6
    b = Sheets("feuil1").Cells(6, 4) ' on récupère la valeur de d6

    Workbooks(nom).Activate
    ActiveWorkbook.SaveAs Filename:= _
    "D:\Documents and Settings\" & a & "-" & b & ".xls", FileFormat:= _
    xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
    , CreateBackup:=False 'on sauvegarde change le répertoire
    ActiveWorkbook.Close 'on ferme le classeur que l'on vient de créer

    End Sub
    0
    1. Merci mais je doit remplacer des données dans ton code et si oui lesquelles ???
      0
      1. Re,

        Tu dois changer "feuil1" par le nom de la feuille ou se positionne tes cellules c6 et d6
        tu dois changer :
        D:\Documents and Settings\ par le répertoire ou tu veux qu'il soit enregistré.
        Sinon c'est tout
        0
        1. Super !! ça fonctionne !!!

          Le seul (minuscule) problème c'est qu'après l'exécution de cette macro, j'aimerais que le classeur A se retrouve à son état d'origine, c'est à dire tel qu'il était avant que j'y inscrive des valeurs dans ces fameuses cellules.

          Si tu as la soluce c'est cool mais dans tous les cas un grand merci à toi !!
          0
          1. Pour affacer les données dans tes cellules, il suffit de rajouter ca avant le end sub :
            Sheets("feuil1").Cells(6, 3) =""
            Sheets("feuil1").Cells(6, 4) =""
            0
            1. Super Mélanie, ça fonctionne nickel, merci beaucoup !!
              0