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.
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!!!
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!!!
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!!!
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!!!
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" <michdenis@hotmail.com> a écrit dans le message de news: krhpln$pk5$1@speranza.aioe.org...
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!!!
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!!!
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$
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" <michdenis@hotmail.com> a écrit dans le message de news:
krhtv1$675$1@speranza.aioe.org...
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$
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!!!
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!!!
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!!!
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!!!
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" <michdenis@hotmail.com> a écrit dans le message de news:
krhpln$pk5$1@speranza.aioe.org...
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!!!
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!!!
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 '-----------------------------------------------------
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
'-----------------------------------------------------
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 '-----------------------------------------------------
| 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.
| 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.
| 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.