Faire une copie d'un fichier à l'aide d'un bouton dans Excel

Résolu
kb89 - 3 avril 2013 à 11:47
 kb89 - 15 avril 2013 à 10:00
Bonjour à tous,

Je galère depuis un bon moment sur une macro pour un de mes fichier Excel et j'aurais besoin d'un peu d'aide.


J'ai un fichier Excel (planning atelier) où sont gérées les commandes.
Dans ce planning atelier j'ai un bouton qui me permet d'ajouter une ligne (Correspond à une commande).


En cliquant sur un bouton (Créer DS.01) se trouvant sur ma ligne commande que je viens d'ajouter, je souhaite créer une copie d'un fichier Excel se trouvant dans un dossier.
(Emplacement du fichier : F:\Utilisateurs\Fichiers_Communs\Système Management Qualité)
(Fichier à copier : DS.01 - Suivi d'une Commande)
Et enregistrer cette copie dans un nouveau dossier en le renommant.
(Emplacement du fichier : F:\Utilisateurs\Fichiers_Communs\Système Management Qualité\TEST)
(Nouveau nom du fichier : DS.01 - Suivi d'une Commande_(Numéro de commande(Correspond à une cellule ce trouvant sur la ligne de commande dans le planning atelier)))

Je souhaite également que lorsque que j'ai cliquer sur le bouton (Créer DS.01) et créer le nouveau fichier (DS.01 - Suivi d'une Commande_(Numéro de commande)), le bouton (Créer DS.01) soit supprimer.

J'espère avoir été suffisament clair dans ma demande.

Merci d'avance pour vos réponse.

Cordialement.

Kévin B.

13 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 avril 2013 à 11:52
Si tu regardes l'aide, tu verras que Source et Destination sont des noms de fichiers.

le_nom_a_donner = Range("A" & i).Value & ".xml"
A quoi correspond le i ?


Ben ça, c'est toi qui devrait le savoir...
i est une variable que tu devrais avoir déclarée As Long, puis à laquelle tu as donnée la valeur d'une ligne. Si ta cellule est A5, tu écris
I = 5
le_nom_a_donner = Range(" A " & i).Value & ".xml"

DestinationFile = "C:\Documents and Settings\KB\Mes documents\SUIVI COMMANDE" & le_nom_a_donner

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
Bonjour,
Si j'ai bien compris, tu veux copier un fichier excel d'un dossier à un autre ?


Fabien
0
Oui, je veux copier un fichier de base (Un fichier type) et le coller dans un autre dossier.

C'est cette copie que les personnes concernées, modifient (Un doc. "Suivi de commande étant créer pour chaque commande).
Pour que ce doc. soit bien suivi un lien renverra au fichier copier (Dans mon fichier "Planning atelier" le lien sera la cellule "N° de commande").

Kévin B.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
3 avril 2013 à 17:45
Regarde l'aide sur les mots suivants
FileCopy
Name

Ça devrait t'aider

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sa y est, j'ai mal au crâne..

Voici ce que j'ai réalisé :

msg = "Avez-vous entré le N° de commande ?"
style = vbYesNo + vbQuestion
title = "NUMERO DE COMMANDE"
Response = MsgBox(msg, style, title)
If Response = vbNo Then

End If


le_nom_a_donner = Range("A" & i).Value & ".xml"

Dim SourceFile, DestinationFile
SourceFile = "C:\Documents and Settings\KB\Mes documents\Suivi d'une Commande.xml" ' Définit le nom du fichier source.
DestinationFile = "C:\Documents and Settings\KB\Mes documents\SUIVI COMMANDE" ' Définit le nom du fichier cible.
' Copie le fichier source dans le fichier cible.
FileCopy SourceFile, DestinationFile


MsgBox "Fichier DS.01 créé!"


End Sub


Mais cela ne fonctionne pas..
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 avril 2013 à 22:37
Es-tu certain que ça ne fonctionne pas ?
Le fichier de destination n'a pas d'extension... est-ce voulu ?


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 avril 2013 à 22:43
Tu pourrais aussi faire une vérification du fichier source au cas où il n'existerait pas ou qu'il serait mal orthographié...

If Dir(SourceFile) = "" Then
    MsgBox "le fichier source n'existe pas"
    Exit Sub
End If



Aussi, quand tu écris ceci, mets Exit Sub dans ta condition pour sortir de la procédure
If Response = vbNo Then
   Exit Sub  '<<<
End If


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Oui, sa ne me créer pas mon fichier.

Pour le nom à donner:
le_nom_a_donner = Range("A" & i).Value & ".xml"
A quoi correspond le i ?
Mon but et de donner au fichier Excel que je veux copier, le nom DS.01 + N° de commande qui se trouve dans une cellule.
(Ex : Nom de fichier : DS.01-2013500117)


Je n'ai pas mis d'extension car c'est un dossier dans lequel je veux coller ma copie Excel.

SourceFile = "C:\Documents and Settings\KB\Mes documents\Suivi d'une Commande.xml" (Fichier Excel à copier)
DestinationFile = "C:\Documents and Settings\KB\Mes documents\SUIVI COMMANDE" (Dossier dans lequel coller la copie)

Pour info, quand je test ce que j'ai fais sa me surligne en jaune, le_nom_a_donner = Range("A" & i).Value & ".xml"
0
C'est bon, ma macro fonctionne.

Dernière phase : Supprimer le bouton qui m'a permis de créer mon fichier et mon lien vers ce même fichier.
J'ai réussi cette partie en faisant un essai.
Le problème est que dans mon fichier, lorsque j'ajoute une commande, sa copie le bouton. Et donc son "nom" change. (Bouton 3, bouton 4 , ...)


Ma macro :


Sub Créer_DS_01()
'
' Créer_DS_01 Macro
' Macro enregistrée le 03/04/2013 par Kévin Bonfillou
'

msg = "Avez-vous entré le N° de commande ?"
style = vbYesNo + vbQuestion
title = "NUMERO DE COMMANDE"
Response = MsgBox(msg, style, title)
If Response = vbNo Then
Exit Sub

End If

I = 18
le_nom_a_donner = "DS_01 - " & ActiveSheet.Range("B18") & ".xls"


Dim SourceFile, DestinationFile
SourceFile = "C:\Documents and Settings\KBonfillou\Mes documents\Suivi d'une Commande.xls" ' Définit le nom du fichier source.
DestinationFile = "C:\Documents and Settings\KBonfillou\Mes documents\SUIVI COMMANDE" & le_nom_a_donner ' Définit le nom du fichier cible.
' Copie le fichier source dans le fichier cible.
FileCopy SourceFile, DestinationFile


MsgBox "Fichier DS.01 créé!"

ActiveSheet.Shapes("Button 2").Select
Selection.Cut

Range("C18").Select
ActiveCell.FormulaR1C1 = le_nom_a_donner

Dim objLink As Hyperlink

Set objLink = ActiveSheet.Hyperlinks.Add(Range("C18"), "C:\Documents and Settings\KBonfillou\Mes documents\SUIVI COMMANDE")
With objLink
.SubAddress = "C:C"
.Follow NewWindow:=True
End With

objLink.Address = le_nom_a_donner
objLink.Range.Value = le_nom_a_donner

End Sub








Comment faire pour que sa me supprime mon bouton "Créer DS.01" ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 avril 2013 à 11:04
Bonjour, kb89,
Ne confonds s'il te plait pas la résolution d'une difficulté isolée et spécifiée avec celle d'une appli.
Ta nouvelle question n'a plus rien à voir avec l'objet de la présente discussion ("Faire une copie d'un fichier").
Tu peux toujours ouvrir une nouvelle discussion, ne concernant que ta seconde question, sans même préciser la copie !)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Ce n'est pas une nouvelle question. Cela fait toujours partie de ma première demande où on m'a apporté de l'aide sur une partie.

Ci-dessous ma demande :


mercredi 3 avril 2013 à 11:47:24 | Faire une copie d'un fichier à l'aide d'un bouton dans Excel
kb89

Je galère depuis un bon moment sur une macro pour un de mes fichier Excel et j'aurais besoin d'un peu d'aide.


J'ai un fichier Excel (planning atelier) où sont gérées les commandes.
Dans ce planning atelier j'ai un bouton qui me permet d'ajouter une ligne (Correspond à une commande).


En cliquant sur un bouton (Créer DS.01) se trouvant sur ma ligne commande que je viens d'ajouter, je souhaite créer une copie d'un fichier Excel se trouvant dans un dossier.
(Emplacement du fichier : F:\Utilisateurs\Fichiers_Communs\Système Management Qualité)
(Fichier à copier : DS.01 - Suivi d'une Commande)
Et enregistrer cette copie dans un nouveau dossier en le renommant.
(Emplacement du fichier : F:\Utilisateurs\Fichiers_Communs\Système Management Qualité\TEST)
(Nouveau nom du fichier : DS.01 - Suivi d'une Commande_(Numéro de commande(Correspond à une cellule ce trouvant sur la ligne de commande dans le planning atelier)))

Je souhaite également que lorsque que j'ai cliquer sur le bouton (Créer DS.01) et créer le nouveau fichier (DS.01 - Suivi d'une Commande_(Numéro de commande)), le bouton (Créer DS.01) soit supprimer.
J'espère avoir été suffisament clair dans ma demande.

Merci d'avance pour vos réponse.

Cordialement.

Kévin B.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 avril 2013 à 11:44
Bon.
Tu n'as donc pas compris. On va être alors plus précis :
On ne traite pas une application, mais, par discussion, une seule question spécifique et parfaitement isolée.
C'est ce qui permet ensuite, à d'autres visiteurs confrontés à cette seule difficulté isolée, de trouver leur solution via le moteur de recherche.
C'est en tout état de cause ainsi que je vois personnellement les choses et je tiens à cette méthode, seule garante de l'ordre.
Désolé, donc, mais je reste maintenant muet.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
D'accord, je comprend la démarche.
Je vais donc poser mon problème dans une autre discution.
0
Rejoignez-nous