OVH Cloud OVH Cloud

copie divers fichiers

40 réponses
Avatar
Manu
Bonjour,

J'ai fais une macro, mais j'ai un soucis... Le but de la macro est de copié
des donnés dans un autre fichier, j'explique...
Mon fichier où je recois la copie est toujours le même avec le même nom de
fichier et d'emplacement par consequent aucuns soucis ici. en revanche mon
fichier source n'ais pas toujoujours le même et le nom est different à
chaque fois, alors j'ai un soucis car quand j'ai fini ma copie et que je
reviens sur le fichier source pour continuer ma macro, il prend en compte le
nom du fichier actif et c'est ce que je veux pas. est t'il possible de
revenir sur le fichier source sans qu'il prenne en compte le nom du fichier.
Je pourrais ainsi envoyer ma macro de n'importe quel fichier source.

J'espere avoir été clair.

Merci

Manu

10 réponses

1 2 3 4
Avatar
MichD
On peut se mettre d'accord rapidement sur le fait que si
la feuille en question est une feuille graphique, la
présence ou non d'un point devant "Rows", le code ne va pas
s'exécuter correctement!!!


MichD
---------------------------------------------------------------
Avatar
Jacky
Bonsoir,

Et pour un accord encore plus rapide :o)))
En premier....
Il faudra que l'utilisateur nous dise de quel classeur il compte lancer la macro.

--
Salutations
JJ


"MichD" a écrit dans le message de news: krhpln$pk5$
On peut se mettre d'accord rapidement sur le fait que si
la feuille en question est une feuille graphique, la
présence ou non d'un point devant "Rows", le code ne va pas
s'exécuter correctement!!!


MichD
---------------------------------------------------------------

Avatar
MichD
Certes Jacky, la tâche deviendrait trop facile!


MichD
---------------------------------------------------------------
Avatar
Manu
Bonjour,

Je lance la macro du fichier source et je n'ai aucun graphique. Et de se
fichier source je dois copier diverses cellules de diverses feuil dans le
fichier destination. Et ce fichier source ne porte pas toujours le meme nom.
en revanche le fichier destination porte toujours le meme nom

bonne journée

Manu


"MichD" a écrit dans le message de news:
krhtv1$675$
Certes Jacky, la tâche deviendrait trop facile!


MichD
---------------------------------------------------------------

Avatar
DanielCo
Si la feuille active est une feuille de graphique, le "." permet de se
référer à la feuille "synthese". Autrement, ça plante.
Daniel


On peut se mettre d'accord rapidement sur le fait que si
la feuille en question est une feuille graphique, la
présence ou non d'un point devant "Rows", le code ne va pas
s'exécuter correctement!!!


MichD
---------------------------------------------------------------
Avatar
DanielCo
Je ne sais pas trop comment interpréter :

le fichier source est deja ouvert et je démarre la macro à partir de là
(Macro en classeur personnal)



Daniel


Bonsoir,

Et pour un accord encore plus rapide :o)))
En premier....
Il faudra que l'utilisateur nous dise de quel classeur il compte lancer la
macro.

--
Salutations
JJ


"MichD" a écrit dans le message de news:
krhpln$pk5$
On peut se mettre d'accord rapidement sur le fait que si
la feuille en question est une feuille graphique, la
présence ou non d'un point devant "Rows", le code ne va pas
s'exécuter correctement!!!


MichD
---------------------------------------------------------------

Avatar
MichD
Une seule chose à vérifier, dans ta présentation,
je ne suis pas sûr d'avoir identifier si la copie se
fait du fichier déjà ouvert vers le fichier que tu ouvres
ou l'inverse... j'espère ne pas les avoir inversé!


'-----------------------------------------------------
Sub test()
Dim Répertoire As String, LeFichier As String
Dim Wk As Workbook, Wk1 As Workbook

'Le répertoire par défaut à partir duquel l'usager
'choisit le ficher à ouvrir
Répertoire = "c:UsersMichDdocuments"

'Test si le répertoire désigné existe
If Dir(Répertoire, vbDirectory) <> "" Then

'Avant d'ouvrir un autre fichier, Wk désigne
'le fichier qui est déjà ouvert (celui à l'écran)
Set Wk1 = ActiveWorkbook

'Si dans la fenêtre ouvrante, l'usager
'clique sur annuler, la variable LeFichier = ""
LeFichier = BrowseFile(Répertoire)
If LeFichier = "" Then
MsgBox "Opération annulée"
Exit Sub
Else
'ouvre le fichier sélectionné :
Set Wk = Workbooks.Open(LeFichier)

'Wk1 est le fichier qui était ouvert au
'tout début de l'opération.
'Wk est le fichier que tu as ouvert

With Wk1.Sheets("synthese")
Wk.Sheets("Feuil1").Range("A1:A10").Copy _
.Range ("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
End With
Wk.Close True
End If
Else
MsgBox "Le chemin indiqué n'existe pas.", _
vbCritical + vbOKOnly, "Attention"
End If
End Sub
'-----------------------------------------------------
Function BrowseFile(CheminEtTypeFichier) As String
With Application.FileDialog(msoFileDialogFilePicker)
'Définit un titre pour la boîte de dialogue
.Title = "Choisir le fichier BASE DE DONNÉES EXCEL"
'Empêcher la multi-sélection
.AllowMultiSelect = False
'Répertoire par défaut suivi du type de fichier par défaut
.InitialFileName = CheminEtTypeFichier
'Efface les filtres existants.
.Filters.Clear
'Définit une liste de filtres pour le champ "Type de fichiers".
.Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
'Définit le filtre qui s'affiche par
'défaut dans le champ "Type de fichiers "."
.FilterIndex = 1
'Indique le type d'affichage dans la boîte de dialogue
'(exemple visualisation des propriétés)
.InitialView = msoFileDialogViewProperties
'Affiche la boîte de dialogue
.Show
If .SelectedItems.Count > 0 Then
BrowseFile = .SelectedItems(1)
Else
BrowseFile = ""
End If
End With
End Function
'-----------------------------------------------------

MichD
---------------------------------------------------------------
Avatar
MichD
| Si la feuille active est une feuille de graphique

Est-ce qu'une feuille graphique a un objet "Range" ?

MichD
---------------------------------------------------------------
Avatar
DanielCo
"Range" se réfère à la feuille active, mais ".Range" se réfère à la
feuille "synthese", c'est justement pourquoi il faut mettre ".Rows".
Daniel


| Si la feuille active est une feuille de graphique

Est-ce qu'une feuille graphique a un objet "Range" ?

MichD
---------------------------------------------------------------
Avatar
MichD
| With ActiveWorkbook.Sheets("synthese")
| ThisWorkbook.Sheets("Feuil1").Range("A1:A10").Copy _
| .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1)
| End With

.Range ET .Cells se réfèrent tous les 2 à la feuille "Synthese".
Si cette dernière est une feuille graphique, je ne vois pas
comment le "POINT" devant "Cells" permettrait à l'opération
de s'effectuer!!!

Cependant, le "POINT" devant "Cells" pourrait être utile si l'usager
à des fichiers .xls et (.xlsx ou xlsm ou xlsb) puisqu'ils n'ont pas le
même nombre de lignes.


MichD
---------------------------------------------------------------
1 2 3 4