Macro enregistrer, fermer, ouvrir
Résolu
hebus888
-
hebus888 -
hebus888 -
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.
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.
A voir également:
- Macro enregistrer, fermer, ouvrir
- Audacity enregistrer son pc - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Ouvrir fichier .dat - Guide
6 réponses
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
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
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
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
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 !!
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 !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question