Exporter les données d'une PJ excel sur un autre ficher
Salmane00
Messages postés
6
Statut
Membre
-
Salmane00 Messages postés 6 Statut Membre -
Salmane00 Messages postés 6 Statut Membre -
Bonjour à tous,
Je souhait exporter via VBA des données d'un PJ Excel que je reçoit au quotidien (La PJ garde le même nom sauf la date du mail qui change) sur un autre fichier Excel situé dans mon bureau
Merci pour votre aide
Cdt,
Je souhait exporter via VBA des données d'un PJ Excel que je reçoit au quotidien (La PJ garde le même nom sauf la date du mail qui change) sur un autre fichier Excel situé dans mon bureau
Merci pour votre aide
Cdt,
A voir également:
- Exporter les données d'une PJ excel sur un autre ficher
- Trier des données excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Déplacer une colonne excel - Guide
- Liste déroulante excel - Guide
- Exporter les favoris chrome - Guide
6 réponses
Bonjour,
Cela est faisable, cependant il nous faut de plus amples informations ! Si vous vous y connaissez en VBA je peux vous mettre une macro relative que vous devrez adapter à vos besoins. Sinon, il faut nous dire cb de pages a votre PJ, quelle est la plage de données a copier, ou la coller, quel est le nom du fichier dans lequel les coller, à quelle place etc.
Sans ces informations, impossible de vous aider...
Amicalement
Cela est faisable, cependant il nous faut de plus amples informations ! Si vous vous y connaissez en VBA je peux vous mettre une macro relative que vous devrez adapter à vos besoins. Sinon, il faut nous dire cb de pages a votre PJ, quelle est la plage de données a copier, ou la coller, quel est le nom du fichier dans lequel les coller, à quelle place etc.
Sans ces informations, impossible de vous aider...
Amicalement
Re-bonjour,
Ma PJ ne contient qu'une seule et unique page ( vous pouvez me mettre une plage de données a copier comme test que jvé adapter à mes besoins
Les données doivent etres prise de la PJ source vers un autre ficher sur le bureau sous le nom de "TEST 1"
Bien à vous
Ma PJ ne contient qu'une seule et unique page ( vous pouvez me mettre une plage de données a copier comme test que jvé adapter à mes besoins
Les données doivent etres prise de la PJ source vers un autre ficher sur le bureau sous le nom de "TEST 1"
Bien à vous
Une petite précision la PJ que je reçois d'une manière quotidienne a la même nomination ya donc juste la date du mail qui change
Salam Salmane00.
Qu'entend-tu précisément par exporter ? Est-ce copier une (ou plusieurs) feuille(s) entière(s) depuis la PJ vers ton fichier ou bien ne sélectionner que certaines données éparpillées?
Qu'entend-tu précisément par exporter ? Est-ce copier une (ou plusieurs) feuille(s) entière(s) depuis la PJ vers ton fichier ou bien ne sélectionner que certaines données éparpillées?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voici la macro, il y a pas mal de choses a changer, comme le chemin et les ranges ;-)
Le principe est qu'elle va copier lignes par lignes et les coller a la suite dans votre classeur principal. Biensur, la macro est lancée DEPUIS le classeur principal :-D
_______________
Sub ImportPJData()
'Définition de la SOURCE - TEST 1
Set ClasseurSource = ActiveWorkbook
Set SourceSheet = ClasseurSource.Sheets(1)
'Définition de la TARGET - PJ
Dim ClasseurPJ As Workbook
Dim PJSheet As Worksheet
Dim PJPath As String
PJPath = "C:\Users\**\Desktop\PJ.xlsm"
'Définition du début de la colonne et ligne ou se trouvent les données
lg_no = 1 ' Ligne 1
col_no = 1 'Colonne A
'Activation de la feuille ou la macro s'active pour éviter l'erreur 1004
SourceSheet.Activate
'Message de confirmation de l'archivage
Dim iReply As Integer
iReply = MsgBox(Prompt:="Voulez-vous vraiment importer les données ?", _
Buttons:=vbYesNoCancel, Title:="Importation des données journalières")
If iReply = vbYes Then
'REPONSE POSITIVE
'ouvrir l'ARCHIVE
'Tester si fichier déjà ouvert
On Error Resume Next
Workbooks("PJ.xlsm").Sheets(1).Activate
'si une erreur est renvoyé, le fichier est déjà ouvert
If Err.Number <> 0 Then
Set ClasseurPJ = Application.Workbooks.Open(PJPath, , False)
End If
Set PJSheet = ClasseurPJ.Sheets(1)
'Boucle de copie
Application.ScreenUpdating = False ' pour aller plus vite
Do While Not IsEmpty(PJSheet.Cells(lg_no, col_no))
'La ligne de donnée n'a pas été encore copiée
PJSheet.Range("A" & lg_no & ":" & "F" & lg_no).Copy ClasseurSource.Sheets(1).Range("A100000").End(xlUp)(2)
lg_no = lg_no + 1 'on incrémente la ligne
Loop
ElseIf iReply = vbNo Then
MsgBox ("Importation arrêtée")
ClasseurSource.Sheets(1).Activate
Exit Sub
Else 'They cancelled (VbCancel)
MsgBox ("Importation arrêtée")
ClasseurSource.Sheets(1).Activate
Exit Sub
Exit Sub
End If
'fermeture de PJ sans enregistrer
ClasseurPJ.Close False
'Aller à l'INTERFACE
ClasseurSource.Sheets(1).Activate
Application.ScreenUpdating = True ' remettre par défaut
End Sub
Le principe est qu'elle va copier lignes par lignes et les coller a la suite dans votre classeur principal. Biensur, la macro est lancée DEPUIS le classeur principal :-D
_______________
Sub ImportPJData()
'Définition de la SOURCE - TEST 1
Set ClasseurSource = ActiveWorkbook
Set SourceSheet = ClasseurSource.Sheets(1)
'Définition de la TARGET - PJ
Dim ClasseurPJ As Workbook
Dim PJSheet As Worksheet
Dim PJPath As String
PJPath = "C:\Users\**\Desktop\PJ.xlsm"
'Définition du début de la colonne et ligne ou se trouvent les données
lg_no = 1 ' Ligne 1
col_no = 1 'Colonne A
'Activation de la feuille ou la macro s'active pour éviter l'erreur 1004
SourceSheet.Activate
'Message de confirmation de l'archivage
Dim iReply As Integer
iReply = MsgBox(Prompt:="Voulez-vous vraiment importer les données ?", _
Buttons:=vbYesNoCancel, Title:="Importation des données journalières")
If iReply = vbYes Then
'REPONSE POSITIVE
'ouvrir l'ARCHIVE
'Tester si fichier déjà ouvert
On Error Resume Next
Workbooks("PJ.xlsm").Sheets(1).Activate
'si une erreur est renvoyé, le fichier est déjà ouvert
If Err.Number <> 0 Then
Set ClasseurPJ = Application.Workbooks.Open(PJPath, , False)
End If
Set PJSheet = ClasseurPJ.Sheets(1)
'Boucle de copie
Application.ScreenUpdating = False ' pour aller plus vite
Do While Not IsEmpty(PJSheet.Cells(lg_no, col_no))
'La ligne de donnée n'a pas été encore copiée
PJSheet.Range("A" & lg_no & ":" & "F" & lg_no).Copy ClasseurSource.Sheets(1).Range("A100000").End(xlUp)(2)
lg_no = lg_no + 1 'on incrémente la ligne
Loop
ElseIf iReply = vbNo Then
MsgBox ("Importation arrêtée")
ClasseurSource.Sheets(1).Activate
Exit Sub
Else 'They cancelled (VbCancel)
MsgBox ("Importation arrêtée")
ClasseurSource.Sheets(1).Activate
Exit Sub
Exit Sub
End If
'fermeture de PJ sans enregistrer
ClasseurPJ.Close False
'Aller à l'INTERFACE
ClasseurSource.Sheets(1).Activate
Application.ScreenUpdating = True ' remettre par défaut
End Sub