Macro pour enregistrer sous, en fonction d'une cellule [Résolu/Fermé]

Messages postés
72
Date d'inscription
mercredi 29 octobre 2014
Statut
Membre
Dernière intervention
9 novembre 2015
- - Dernière réponse : mimi13580
Messages postés
72
Date d'inscription
mercredi 29 octobre 2014
Statut
Membre
Dernière intervention
9 novembre 2015
- 12 nov. 2014 à 14:31
Bonjour,

je début sur les macro et j'ai besoin de votre aide.
je m'explique:
j'ai un classeur Excel avec plusieurs feuilles, une d'entre elle s'appelle "dossier de lot".
sur cette feuille, précisément sur la cellule D1, je met un numéro exemple 201400250.
après avoir fini de travailler sur mon classeur, j'aimerai créer un bouton TERMINÉ, qui lui m'enregistrera une copie de ce classeur sur le bureau sous le numéro de la cellule D1 "201400250", tout en conservant mon classeur initial vierge (sans les données).

j'espère trouver une personne qui pourra d'aider, merci d'avance et surtout de votre patience.
Afficher la suite 

11 réponses

Messages postés
4604
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
12 novembre 2019
118
0
Merci
Bonjour Mimi, bonjour le forum,

Pour supprimer les données du classeur initial il faut savoir ce qu'il contient quand il est vierge... Donc un fichier exemple de ce classeur "vierge" serait le bienvenu...
Messages postés
72
Date d'inscription
mercredi 29 octobre 2014
Statut
Membre
Dernière intervention
9 novembre 2015
0
Merci
ok, comment je fait pour t'envoyer le fichier....Merci
Messages postés
4604
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
12 novembre 2019
118
0
Merci
Tu déposes ton fichier sur le site cijoint.com, tu crées le lien que tu copies dans le post...
Messages postés
72
Date d'inscription
mercredi 29 octobre 2014
Statut
Membre
Dernière intervention
9 novembre 2015
0
Merci
Salut ThauThem,

Voici un exemple de formulaire que je souhaite remplir.

https://mon-partage.fr/admin/K0F0ugK8/EkTIECek/

Sur la premier feuille"numéro_de_lot" nous devons saisir des chiffre pour le numéro lot et l'OF puis valider pour accéder à la deuxième feuille, sa c'est bon!

Après remplir le formulaire de production, une fois fini je veux créer un bouton pour enregistrer une copie dans mon bureau sous le nom de mon numéro de lot situé dans la feuille "numéro_de_ lot", puis fermé le dossier d'origine tout en le gardant non-remplie.

Merci de votre aide
Messages postés
4604
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
12 novembre 2019
118
0
Merci
Bonjour Mimi, bonjour le forum,

* Dans l'onglet PRODUCTION j'ai nommé une plage qui devrait correspondre aux données. Tu vérifieras et adapteras.
* Dans le code du bouton Terminer, je définis la variable NN en indiquant le chemin d'accès au bureau :

NN = "C:\Users\To_Nom\Desktop"... 

tu adapteras à ton cas

À l'ouverture du fichier les anciennes données sont effacées avec le code du composant ThisWorkbook :

Private Sub Workbook_Open() 'à l'ouverture du classeur
'si le nom du classeur est égal à la valeur de la cellule D9 de l'onglet "numero_de_lot" + ".xlsm", sort de la procédure
If Sheets("numero_de_lot").Range("D9:E10").Cells(1).Value & ".xlsm" = ThisWorkbook.Name Then Exit Sub
Sheets("numero_de_lot").Range("D9:E10").ClearContents 'efface le contenu de la cellule D9 de l'onglet "numero_de_lot"
Sheets("numero_de_lot").Range("D13:E14").ClearContents 'efface le contenu de la cellule D13 de l'onglet "numero_de_lot"
Sheets("PRODUCTION").Range("Données").ClearContents 'efface le contenu de la plage nommée "Données" de l'onglet "PRODUCTION"
Sheets("numero_de_lot").Select 'sélectionne l'onglet "numero_de_lot"
Range("D9").Select 'sélectionne la cellule D9
End Sub


La copie se fait au clic du bouton Terminer avec le code :

Private Sub CommandButton1_Click() 'bouton "Terminer"
Dim NO As String 'déclare la variable NO (Nom Origine)
Dim NN As String 'déclare la variable NN (Nouveau Nom)
Dim CO As Workbook 'déclare la variable CO (Classeur Origine)
Dim NC As Workbook 'déclare la variable NC (Nouveau Classeur)

NO = ThisWorkbook.Path & "\" & ThisWorkbook.Name 'définit le nom d'origine NO
NN = "C:\Users\To_Nom\Desktop" & "\" & Sheets("numero_de_lot").Range("D9:E10").Cells(1).Value & ".xlsm" 'définit le nou8veau non NN
Set CO = ThisWorkbook 'définit le classeur d'origine CO
CO.SaveAs (NN) 'enregistre sous le classeur d'origine
Set NC = ActiveWorkbook 'définit le nouveau classeur NC
Workbooks.Open (NO) 'ouvre le classeur d'origine
NC.Close SaveChanges:=True 'ferme le nouveau classeur NC
End Sub


Le fichier : http://cjoint.com/?DJEotsjhnjF

Messages postés
72
Date d'inscription
mercredi 29 octobre 2014
Statut
Membre
Dernière intervention
9 novembre 2015
0
Merci
Un grand merci, je penser pas avoir une réponse aussi rapide, et de plus très très bien expliqué........Franchement BRAVO!!!!!!!

Une dernière chose sur cette macro, peut-on lui dire de fermer le dossier d'origine et de garder la copie ouverte, afin de continuer à remplir les autres feuilles, et supprimer le bouton terminer sur la copie, pour éviter que l'opérateur re-Click dessus.

Merci par avance, et encore BRAVO et Merci.
Messages postés
4604
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
12 novembre 2019
118
0
Merci
Bonjour Mimi, bonjour le forum,

Ça simplifie considérablement le code du bouton Terminer :

Private Sub CommandButton1_Click() 'bouton "Terminer"
Dim NN As String 'déclare la variable NN (Nouveau Nom)

NN = "C:\Users\Ton_Nom\Desktop" & "\" & Sheets("numero_de_lot").Range("D9:E10").Cells(1).Value & ".xlsm" 'définit le nouveau non NN
Thisworkook.SaveAs (NN) 'enregistre sous le classeur d'origine
ActiveSheet.Shapes.Range(Array("CommandButton1")).Select 'sélectionne le bouton "Terminer"
Selection Delete 'supprime le bouton "Terminer"
ActiveWorkbook.Save 'sauve le classeur
End Sub


À plus,
Thautheme
Messages postés
72
Date d'inscription
mercredi 29 octobre 2014
Statut
Membre
Dernière intervention
9 novembre 2015
0
Merci
bonsoir Tautheme,

J'ai copié ta macro et je les remplacé avec l'autre mais cela ne marche pas, peux tu faire le teste de ton coté

Merci du temps que tu prend pour moi.
Messages postés
4604
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
12 novembre 2019
118
0
Merci
Bonjour Mimi, bonjour le forum,

Désolé il y avait deux erreurs dans mon code. Voici le code corrégé. Pense à adapter le chemin d'accès au bureau :
Private Sub CommandButton1_Click() 'bouton "Terminer"
Dim NN As String 'déclare la variable NN (Nouveau Nom)

NN = "C:\Users\Ton_Nom\Desktop" & "\" & Sheets("numero_de_lot").Range("D9:E10").Cells(1).Value & ".xlsm" 'définit le nouveau non NN
ThisWorkbook.SaveAs (NN) 'enregistre sous le classeur d'origine
ActiveSheet.Shapes.Range(Array("CommandButton1")).Select 'sélectionne le bouton "Terminer"
Selection.Delete 'supprime le bouton "Terminer"
ActiveWorkbook.Save 'sauve le classeur
End Sub

Messages postés
72
Date d'inscription
mercredi 29 octobre 2014
Statut
Membre
Dernière intervention
9 novembre 2015
0
Merci
merci beaucoup Thautheme, plus que parfait.
Nonne journée
ThauTheme
Messages postés
4604
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
12 novembre 2019
118 -
Nonne journée ? Amenez vos soeurs..
Messages postés
72
Date d'inscription
mercredi 29 octobre 2014
Statut
Membre
Dernière intervention
9 novembre 2015
0
Merci
Bonjour ThauThem, Bonjour le forum

Je reviens vers vous, pour améliorer mon dossier, j'aimerai créer un bouton " nouvelle feuille" qui me permet de copier ma page "PRODUCTION", effacer les donner rentré par l'opérateur, et copier à la suite en tenant compte de la coller sur la page suivante pour éviter d'avoir des décalage lors de l'impression.