Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

copier fichier

5 réponses
Avatar
srogeau
bonjour a tous
je souhaiterais pouvoir proposer a des collegues de faire une mise a
jour a l'ouverture d'un classeur de je leur enverrai; vers un autre
classeur excel situe sur leur bureau d'ordi
j'ai esseye avec l'enregistreur de macro mais cela ne fonctionne pas
dans la pratique je leur envoi un classeur excel d'une seule feuille
et je souhaiterais que lorsqu'il ouvre le classeur toutes les donnees
de cette unique feuille soient copiees sur la feuille base pour
remplacer les donnees s'y trouvant par les nlles en gardant le meme
format etc
avec l'enregistreur j'ai fait du style :ouvrir le
classeur ,selectionner en haut a gauche toute la feuille ,copier puis
ouvrir le 2eme classeur sur la feuille "base",editier coller
valeur,enregistrer puis fermer ce classeur
mais ca ne fonctionnne pas
merci de votre aide

5 réponses

Avatar
MichDenis
J'ai supposé que les données du classeur dans lequel
tu mets ces procédures devraient à l'ouverture copier
le contenu des cellules de la feuille (nom à renseigner dans
la procédure) vers un fichier qui se trouve sur le bureau de
l'usager (bureau de son profil usager)

Sous vista, l'explorateur présente le chemin en langue française
mais on doit y faire référence par macro en "Anglais"
Dans la ligne de code suivante, vérifie si tu dois utiliser
Desktop ou Bureau
Chemin = "c:" & Environ("HOMEPATH") & "Desktop"


Dans le thisWorkbook de ton fichier, tu mets ceci :
'-----------------------------------
Private Sub Workbook_Open()
Copier_Données
End Sub
'-----------------------------------
et dans un module standard :
Sub Copier_Données()

Dim Wk As Workbook
Dim Fichier As String
Dim Chemin As String
Dim Ouvert As Boolean
Ouvert = True

Fichier = "Classeur2.xlsm" ' à adapter
'Pour retrouver le fichier sur le bureau
'de l'usager qui a ouvert l'ordinateur
Chemin = "c:" & Environ("HOMEPATH") & "Desktop"

Application.ScreenUpdating = False
'Test pour savoir si le fichier est ouvert
On Error Resume Next
Set Wk = Workbooks(Fichier)
If Wk Is Nothing Then
Err.Clear
Set Wk = Workbooks.Open(Chemin & Fichier)
Ouvert = False
End If

'Adapte le nom de la feuille où sont tes données
ThisWorkbook.Worksheets("Feuil2").Cells.Copy

With Wk.Worksheets(1)
.Activate
.Range("A1").Select
'Seules les données sont copiées
.Range("A1").PasteSpecial xlPasteValues
End With

'Sauvegarde du fichier
Wk.Save
'Fermeture du fichier s'il était
'fermé au début de la procédure
If Ouvert = False Then
Wk.Close False
End If
End Sub



a écrit dans le message de groupe de discussion :

bonjour a tous
je souhaiterais pouvoir proposer a des collegues de faire une mise a
jour a l'ouverture d'un classeur de je leur enverrai; vers un autre
classeur excel situe sur leur bureau d'ordi
j'ai esseye avec l'enregistreur de macro mais cela ne fonctionne pas
dans la pratique je leur envoi un classeur excel d'une seule feuille
et je souhaiterais que lorsqu'il ouvre le classeur toutes les donnees
de cette unique feuille soient copiees sur la feuille base pour
remplacer les donnees s'y trouvant par les nlles en gardant le meme
format etc
avec l'enregistreur j'ai fait du style :ouvrir le
classeur ,selectionner en haut a gauche toute la feuille ,copier puis
ouvrir le 2eme classeur sur la feuille "base",editier coller
valeur,enregistrer puis fermer ce classeur
mais ca ne fonctionnne pas
merci de votre aide
Avatar
srogeau
On 3 mar, 16:16, "MichDenis" wrote:
J'ai supposé que les données du classeur dans lequel
tu mets ces procédures devraient à l'ouverture copier
le contenu des cellules de la feuille (nom à renseigner dans
la procédure) vers un fichier qui se trouve sur le bureau de
l'usager (bureau de son profil usager)

Sous vista, l'explorateur présente le chemin en langue française
mais on doit y faire référence par macro en "Anglais"
Dans la ligne de code suivante, vérifie si tu dois utiliser
Desktop ou Bureau
Chemin = "c:" & Environ("HOMEPATH") & "Desktop"

Dans le thisWorkbook de ton fichier, tu mets ceci :
'-----------------------------------
Private Sub Workbook_Open()
Copier_Données
End Sub
'-----------------------------------
et dans un module standard :
Sub Copier_Données()

Dim Wk As Workbook
Dim Fichier As String
Dim Chemin As String
Dim Ouvert As Boolean
Ouvert = True

Fichier = "Classeur2.xlsm" ' à adapter
'Pour retrouver le fichier sur le bureau
'de l'usager qui a ouvert l'ordinateur
Chemin = "c:" & Environ("HOMEPATH") & "Desktop"

Application.ScreenUpdating = False
'Test pour savoir si le fichier est ouvert
On Error Resume Next
Set Wk = Workbooks(Fichier)
If Wk Is Nothing Then
    Err.Clear
    Set Wk = Workbooks.Open(Chemin & Fichier)
    Ouvert = False
End If

'Adapte le nom de la feuille où sont tes données
ThisWorkbook.Worksheets("Feuil2").Cells.Copy

With Wk.Worksheets(1)
    .Activate
    .Range("A1").Select
    'Seules les données sont copiées
    .Range("A1").PasteSpecial xlPasteValues
End With

'Sauvegarde du fichier
Wk.Save
'Fermeture du fichier s'il était
'fermé au début de la procédure
If Ouvert = False Then
    Wk.Close False
End If
End Sub

a écrit dans le message de groupe de discussion :

bonjour a tous
je souhaiterais pouvoir proposer a des collegues de  faire une mise a
jour a l'ouverture d'un classeur de je leur enverrai; vers un autre
classeur excel situe sur leur bureau d'ordi
j'ai esseye avec l'enregistreur de macro mais cela ne fonctionne pas
dans la pratique je leur envoi un classeur excel d'une seule feuille
et je souhaiterais que lorsqu'il ouvre le classeur toutes les donnees
de cette unique feuille soient copiees sur la feuille base pour
remplacer les donnees s'y trouvant par les nlles en gardant le meme
format etc
avec l'enregistreur j'ai fait du style :ouvrir le
classeur ,selectionner en haut a gauche toute la feuille ,copier puis
ouvrir le 2eme classeur sur la feuille "base",editier coller
valeur,enregistrer puis fermer ce classeur
mais ca ne fonctionnne pas
merci de votre aide



merci pour votre reponse
je vais tester ce soir et vous tenir au courant si besoin
Avatar
srogeau
On 4 mar, 12:05, wrote:
On 3 mar, 16:16, "MichDenis" wrote:



> J'ai supposé que les données du classeur dans lequel
> tu mets ces procédures devraient à l'ouverture copier
> le contenu des cellules de la feuille (nom à renseigner dans
> la procédure) vers un fichier qui se trouve sur le bureau de
> l'usager (bureau de son profil usager)

> Sous vista, l'explorateur présente le chemin en langue française
> mais on doit y faire référence par macro en "Anglais"
> Dans la ligne de code suivante, vérifie si tu dois utiliser
> Desktop ou Bureau
> Chemin = "c:" & Environ("HOMEPATH") & "Desktop"

> Dans le thisWorkbook de ton fichier, tu mets ceci :
> '-----------------------------------
> Private Sub Workbook_Open()
> Copier_Données
> End Sub
> '-----------------------------------
> et dans un module standard :
> Sub Copier_Données()

> Dim Wk As Workbook
> Dim Fichier As String
> Dim Chemin As String
> Dim Ouvert As Boolean
> Ouvert = True

> Fichier = "Classeur2.xlsm" ' à adapter
> 'Pour retrouver le fichier sur le bureau
> 'de l'usager qui a ouvert l'ordinateur
> Chemin = "c:" & Environ("HOMEPATH") & "Desktop"

> Application.ScreenUpdating = False
> 'Test pour savoir si le fichier est ouvert
> On Error Resume Next
> Set Wk = Workbooks(Fichier)
> If Wk Is Nothing Then
>     Err.Clear
>     Set Wk = Workbooks.Open(Chemin & Fichier)
>     Ouvert = False
> End If

> 'Adapte le nom de la feuille où sont tes données
> ThisWorkbook.Worksheets("Feuil2").Cells.Copy

> With Wk.Worksheets(1)
>     .Activate
>     .Range("A1").Select
>     'Seules les données sont copiées
>     .Range("A1").PasteSpecial xlPasteValues
> End With

> 'Sauvegarde du fichier
> Wk.Save
> 'Fermeture du fichier s'il était
> 'fermé au début de la procédure
> If Ouvert = False Then
>     Wk.Close False
> End If
> End Sub

> a écrit dans le message de groupe de discussion :
>
> bonjour a tous
> je souhaiterais pouvoir proposer a des collegues de  faire une mise a
> jour a l'ouverture d'un classeur de je leur enverrai; vers un autre
> classeur excel situe sur leur bureau d'ordi
> j'ai esseye avec l'enregistreur de macro mais cela ne fonctionne pas
> dans la pratique je leur envoi un classeur excel d'une seule feuille
> et je souhaiterais que lorsqu'il ouvre le classeur toutes les donnees
> de cette unique feuille soient copiees sur la feuille base pour
> remplacer les donnees s'y trouvant par les nlles en gardant le meme
> format etc
> avec l'enregistreur j'ai fait du style :ouvrir le
> classeur ,selectionner en haut a gauche toute la feuille ,copier puis
> ouvrir le 2eme classeur sur la feuille "base",editier coller
> valeur,enregistrer puis fermer ce classeur
> mais ca ne fonctionnne pas
> merci de votre aide

merci pour votre reponse
je vais tester ce soir  et vous tenir au courant si besoin



voila je viens de tester ca fonctionne avec "bureau"
par contre dansle classeur ou sont copiees les donnees ,j'ai 3
feuilles (acceuil,base,resultat)
par securite la feuille base est (sheet hidden) quand j'ouvre le
classeur qui viens de recevoir les nlles donnees c'estb la feuill
"base" qui s'affiche
j'aurai voulu qu'elle soit encore "hidden" et que mon classeur s'ouvre
comme auparavant sur la feuill "acceuil"
j'espere avoir su expliquer mon "petit" soucis
merci de votre aide
Avatar
MichDenis
Qu'est-ce qui t'empêche de la masquer ?
Est-ce que j'ai masqué la bonne feuille ?

With Wk.Worksheets(1)
.Activate
.Range("A1").Select
'Seules les données sont copiées
.Range("A1").PasteSpecial xlPasteValues
.visible = xlveryhidden ' code pour masquer une feuille
End With



a écrit dans le message de groupe de discussion :

On 4 mar, 12:05, wrote:
On 3 mar, 16:16, "MichDenis" wrote:



> J'ai supposé que les données du classeur dans lequel
> tu mets ces procédures devraient à l'ouverture copier
> le contenu des cellules de la feuille (nom à renseigner dans
> la procédure) vers un fichier qui se trouve sur le bureau de
> l'usager (bureau de son profil usager)

> Sous vista, l'explorateur présente le chemin en langue française
> mais on doit y faire référence par macro en "Anglais"
> Dans la ligne de code suivante, vérifie si tu dois utiliser
> Desktop ou Bureau
> Chemin = "c:" & Environ("HOMEPATH") & "Desktop"

> Dans le thisWorkbook de ton fichier, tu mets ceci :
> '-----------------------------------
> Private Sub Workbook_Open()
> Copier_Données
> End Sub
> '-----------------------------------
> et dans un module standard :
> Sub Copier_Données()

> Dim Wk As Workbook
> Dim Fichier As String
> Dim Chemin As String
> Dim Ouvert As Boolean
> Ouvert = True

> Fichier = "Classeur2.xlsm" ' à adapter
> 'Pour retrouver le fichier sur le bureau
> 'de l'usager qui a ouvert l'ordinateur
> Chemin = "c:" & Environ("HOMEPATH") & "Desktop"

> Application.ScreenUpdating = False
> 'Test pour savoir si le fichier est ouvert
> On Error Resume Next
> Set Wk = Workbooks(Fichier)
> If Wk Is Nothing Then
> Err.Clear
> Set Wk = Workbooks.Open(Chemin & Fichier)
> Ouvert = False
> End If

> 'Adapte le nom de la feuille où sont tes données
> ThisWorkbook.Worksheets("Feuil2").Cells.Copy

> With Wk.Worksheets(1)
> .Activate
> .Range("A1").Select
> 'Seules les données sont copiées
> .Range("A1").PasteSpecial xlPasteValues
> End With

> 'Sauvegarde du fichier
> Wk.Save
> 'Fermeture du fichier s'il était
> 'fermé au début de la procédure
> If Ouvert = False Then
> Wk.Close False
> End If
> End Sub

> a écrit dans le message de groupe de discussion :
>
> bonjour a tous
> je souhaiterais pouvoir proposer a des collegues de faire une mise a
> jour a l'ouverture d'un classeur de je leur enverrai; vers un autre
> classeur excel situe sur leur bureau d'ordi
> j'ai esseye avec l'enregistreur de macro mais cela ne fonctionne pas
> dans la pratique je leur envoi un classeur excel d'une seule feuille
> et je souhaiterais que lorsqu'il ouvre le classeur toutes les donnees
> de cette unique feuille soient copiees sur la feuille base pour
> remplacer les donnees s'y trouvant par les nlles en gardant le meme
> format etc
> avec l'enregistreur j'ai fait du style :ouvrir le
> classeur ,selectionner en haut a gauche toute la feuille ,copier puis
> ouvrir le 2eme classeur sur la feuille "base",editier coller
> valeur,enregistrer puis fermer ce classeur
> mais ca ne fonctionnne pas
> merci de votre aide

merci pour votre reponse
je vais tester ce soir et vous tenir au courant si besoin



voila je viens de tester ca fonctionne avec "bureau"
par contre dansle classeur ou sont copiees les donnees ,j'ai 3
feuilles (acceuil,base,resultat)
par securite la feuille base est (sheet hidden) quand j'ouvre le
classeur qui viens de recevoir les nlles donnees c'estb la feuill
"base" qui s'affiche
j'aurai voulu qu'elle soit encore "hidden" et que mon classeur s'ouvre
comme auparavant sur la feuill "acceuil"
j'espere avoir su expliquer mon "petit" soucis
merci de votre aide
Avatar
srogeau
On 4 mar, 23:18, "MichDenis" wrote:
Qu'est-ce qui t'empêche de la masquer ?
Est-ce que j'ai masqué la bonne feuille ?

With Wk.Worksheets(1)
    .Activate
    .Range("A1").Select
    'Seules les données sont copiées
    .Range("A1").PasteSpecial xlPasteValues
    .visible = xlveryhidden  ' code pour masquer une feuille
End With

a écrit dans le message de groupe de discussion :

On 4 mar, 12:05, wrote:



> On 3 mar, 16:16, "MichDenis" wrote:

> > J'ai supposé que les données du classeur dans lequel
> > tu mets ces procédures devraient à l'ouverture copier
> > le contenu des cellules de la feuille (nom à renseigner dans
> > la procédure) vers un fichier qui se trouve sur le bureau de
> > l'usager (bureau de son profil usager)

> > Sous vista, l'explorateur présente le chemin en langue française
> > mais on doit y faire référence par macro en "Anglais"
> > Dans la ligne de code suivante, vérifie si tu dois utiliser
> > Desktop ou Bureau
> > Chemin = "c:" & Environ("HOMEPATH") & "Desktop"

> > Dans le thisWorkbook de ton fichier, tu mets ceci :
> > '-----------------------------------
> > Private Sub Workbook_Open()
> > Copier_Données
> > End Sub
> > '-----------------------------------
> > et dans un module standard :
> > Sub Copier_Données()

> > Dim Wk As Workbook
> > Dim Fichier As String
> > Dim Chemin As String
> > Dim Ouvert As Boolean
> > Ouvert = True

> > Fichier = "Classeur2.xlsm" ' à adapter
> > 'Pour retrouver le fichier sur le bureau
> > 'de l'usager qui a ouvert l'ordinateur
> > Chemin = "c:" & Environ("HOMEPATH") & "Desktop"

> > Application.ScreenUpdating = False
> > 'Test pour savoir si le fichier est ouvert
> > On Error Resume Next
> > Set Wk = Workbooks(Fichier)
> > If Wk Is Nothing Then
> >     Err.Clear
> >     Set Wk = Workbooks.Open(Chemin & Fichier)
> >     Ouvert = False
> > End If

> > 'Adapte le nom de la feuille où sont tes données
> > ThisWorkbook.Worksheets("Feuil2").Cells.Copy

> > With Wk.Worksheets(1)
> >     .Activate
> >     .Range("A1").Select
> >     'Seules les données sont copiées
> >     .Range("A1").PasteSpecial xlPasteValues
> > End With

> > 'Sauvegarde du fichier
> > Wk.Save
> > 'Fermeture du fichier s'il était
> > 'fermé au début de la procédure
> > If Ouvert = False Then
> >     Wk.Close False
> > End If
> > End Sub

> > a écrit dans le message de groupe de discussion :
> >
> > bonjour a tous
> > je souhaiterais pouvoir proposer a des collegues de  faire une mise a
> > jour a l'ouverture d'un classeur de je leur enverrai; vers un autre
> > classeur excel situe sur leur bureau d'ordi
> > j'ai esseye avec l'enregistreur de macro mais cela ne fonctionne pas
> > dans la pratique je leur envoi un classeur excel d'une seule feuille
> > et je souhaiterais que lorsqu'il ouvre le classeur toutes les donnees
> > de cette unique feuille soient copiees sur la feuille base pour
> > remplacer les donnees s'y trouvant par les nlles en gardant le meme
> > format etc
> > avec l'enregistreur j'ai fait du style :ouvrir le
> > classeur ,selectionner en haut a gauche toute la feuille ,copier puis
> > ouvrir le 2eme classeur sur la feuille "base",editier coller
> > valeur,enregistrer puis fermer ce classeur
> > mais ca ne fonctionnne pas
> > merci de votre aide

> merci pour votre reponse
> je vais tester ce soir  et vous tenir au courant si besoin

voila je viens de tester ca fonctionne avec "bureau"
par contre dansle classeur ou sont copiees les donnees ,j'ai 3
feuilles (acceuil,base,resultat)
par securite la feuille base est (sheet hidden)  quand j'ouvre le
classeur qui viens de recevoir les nlles donnees c'estb la feuill
"base" qui s'affiche
j'aurai voulu qu'elle soit encore "hidden" et que mon classeur s'ouvre
comme auparavant sur la feuill "acceuil"
j'espere avoir su expliquer mon "petit" soucis
merci de votre aide



voila avec cette ligne de plus c'est parfait merci