[Macro exportation données Excel

Fermé
Benoit A. Messages postés 454 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 13 août 2015 - Modifié par Benoit A. le 9/01/2015 à 16:19
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 - 9 janv. 2015 à 16:34
Bonjour à tous,

Comme je l'explique dans le fichier excel ci-joint, j'aimerais créer une extraction de deux fichiers de deux onglets différents dans mon classeur via un bouton et une macro qui lui serait associé.

Seulement je n'ai aucune idée de comment faire ... Pourriez-vous m'aider ?

Merci beaucoup pour votre aide.

http://www.cjoint.com/data/0AjjCSu98yK.htm

Pour l'instant j'ai quelque chose comme ça mais il me sort un fichier en hiéroglyphe en sortie.


Sub Macro1()
Dim CO As Workbook 'déclare la variable CO (Classeur Origine)
Dim OO As Object 'déclare la variable OO (Onglet Origine)
Dim CH As String 'déclare la variable CH (CHemin d'accès)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Object 'déclare la variable OD (Onglet Destination)

Set CO = ThisWorkbook 'définit le classeur origine CO
Set OO = CO.Sheets("Onglet 1") 'définit l'onglet origine OO
CH = Sheets("procédure").Range("A30")
Workbooks.Add 'ajoute un classeur vierge
ActiveWorkbook.SaveAs (CH & "\" & "mensuel.csv") 'enregistre le classeur sous
Set CD = ActiveWorkbook 'définit le classeur CD
Set OD = CD.Sheets(1) 'définit l'onglet OD
OO.Range("A1").CurrentRegion.Copy 'copy les données de la colonne A de l'onglet OO
OD.Range("A1").PasteSpecial (xlPasteValues) 'les colle dans A1 de l'onglet OD
OO.Range("D1").CurrentRegion.Copy 'copy les données de la colonne D de l'onglet OO
OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues) 'les colle dans la première cellule vide de la colonne A de l'onglet OD
CD.Close True 'ferme le classeur en enregistrant les modifications

Set OO = Sheets("Onglet 2") 'redéfinit l'onglet OO
CH = Sheets("procédure").Range("A32")
Workbooks.Add 'ajoute un classeur vierge
ActiveWorkbook.SaveAs (CH & "\" & "mensuel_fc.csv") 'enregistre le classeur sous
Set CD = ActiveWorkbook 'définit le classeur CD
Set OD = CD.Sheets(1) 'définit l'onglet OD
OO.Range("A1").CurrentRegion.Copy 'copy les données de la colonne A de l'onglet OO
OD.Range("A1").PasteSpecial (xlPasteValues) 'les colle dans A1 de l'onglet OD
CD.Close True 'ferme le classeur en enregistrant les modifications

End Sub


PLEASE Help me !!
A voir également:

4 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
9 janv. 2015 à 15:57
Bonjour,

Cela fait DEUX fois que nous modifions le titre de ta question pour retirer le URGENT....

La notion d'urgence n'est QUE pour toi ...
Ici.. les personnes qui répondent sont des bénévoles qui le font sur leur temps libre et répondent donc lorsqu'ils savent et peuvent ....
Pour nous.. tous les sujets sont traités de la même manière... et il est clair que nous n'allons pas nous "dépêcher" encore plus sur un sujet sous prétexte que tu nous le demande..... bien au contraire ......

Donc.. pas la peine de remettre encore une fois ton URGENT dans le titre de ta question (ni même dans la description de ton problème..) ... pas besoin non plus de faire des UPs sur ta discussion....
Elle existe.. on l'a vu... on répondra quand on le pourra/voudra .....



1
Benoit A. Messages postés 454 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 13 août 2015 515
9 janv. 2015 à 16:12
WOW c'est un modérateur du site qui me dis ça !!! Non mais vous vous prenez pour qui au juste ??? Vous croyez que j'ai des leçon à recevoir de vous ???????

J'ai été longtemps actif sur le site pour aidé des internautes. J'ai menacé quelqu'un si j'avais pas de réponses ?? Non alors arrêté vos blablas. C'est n'importe quoi !!! Vous savez quoi oublié c'est visiblement pas ici que je vais trouver de l'aide, avec une politique aussi détestable !!!
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
9 janv. 2015 à 16:34
Oula...
C'est bien dommage que je n'ai pas rafraichi ma page avant de poster mon précédent message..( la réponse...) .... sinon il est clair que j'aurai tourné les talons !

Donc reprenons....
WOW c'est un modérateur du site qui me dis ça !!!

Ben oui.. et alors ... ça change quoi ???!

Non mais vous vous prenez pour qui au juste ??

Ben.. comme tu l'as dis toi même.... un modérateur.....

Vous croyez que j'ai des leçon à recevoir de vous ???????

Sûrement puisqu'il a fallu que j'intervienne ....

J'ai été longtemps actif sur le site pour aidé des internautes

C'est bien.. je suis fier de toi... \o/

J'ai menacé quelqu'un si j'avais pas de réponses ??

Aucunement.. et je n'ai jamais dis ça ... Je t'ai uniquement fait remarqué ton utilisation de URGENT dans le titre de ta question...... mais peut être ai-je mal rédigé mon message ou que vous ne savez pas lire....


Et c'est vrai que les sujets sont traités de la même manière bravo vous n'avez que 2 050 000 sujets en attente !!!

Comme je l'ai marqué ... les personnes (modérateurs y compris) qui interviennent ici ne sont que des bénévoles... qui le font sur leur temps libre et selon leurs connaissances....
(voir mon point précédent concernant votre capacité à lire...)


C'est n'importe quoi !!! Vous savez quoi oublié c'est visiblement pas ici que je vais trouver de l'aide

Ah .. ben Zut alors....
je reviens.. je vais pleuré un coup.... ... ..... ou pas...!

Enfin bon.. vu que vous partez... je ferme le sujet.

Bonne journée.
Cordialement ( ou pas d'ailleurs...)
Jordane.
0
Benoit A. Messages postés 454 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 13 août 2015 515
9 janv. 2015 à 16:16
Et c'est vrai que les sujets sont traités de la même manière bravo vous n'avez que 2 050 000 sujets en attente !!!
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
9 janv. 2015 à 16:24
Pour répondre à ta question...
Je pense que le souci se trouve au niveau des SAVEAS. ( le reste du code me semblant correct...)


Déjà.. place le SAVE AS ... après avoir remplis ton fichier.
Ensuite.. pour exporter en format CSV .. il existe une syntaxe à respecter....

 ActiveWorkbook.SaveAs Filename:=CH & "\" & "mensuel.csv", _
                           FileFormat:=xlCSV , _
                           CreateBackup:=False  , _
                           Local:=True 
    ActiveWorkbook.Close savechanges:=False



ce qui donnerait pour ta macro quelque chose du genre :
Sub Macro1()

Dim CH As String 'déclare la variable CH (CHemin d'accès)
Dim ceClasseur As Workbook
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Dim OD As Worksheet
'Definition des variables
Set ceClasseur = ThisWorkbook
Set Sh1 = ceClasseur.Sheets("Onglet 1")
Set Sh2 = ceClasseur.Sheets("Onglet 2")

'-----------------------------------------
'Traitement onglet 1
'-----------------------------------------
  CH = Sheets("procédure").Range("A30")
'ajoute un classeur vierge
  Workbooks.Add
'définit le classeur CD
  Set CD = ActiveWorkbook
'définit l'onglet OD
  Set OD = CD.Sheets(1)
'copy les données de la colonne A de l'onglet OO
  Sh1.Range("A1").CurrentRegion.Copy
'les colle dans A1 de l'onglet OD
  OD.Range("A1").PasteSpecial (xlPasteValues)
'copy les données de la colonne D de l'onglet OO
  Sh1.Range("D1").CurrentRegion.Copy
'les colle dans la première cellule vide de la colonne A de l'onglet OD
  OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues)

'Sauvegarde du fichier CSV
 CD.SaveAs Filename:=CH & "\" & "mensuel.csv", _
           FileFormat:=xlCSV, _
           CreateBackup:=False, _
           Local:=True
'Fermeture du classeur
 CD.Close savechanges:=False

'-----------------------------------------
'Traitement onglet 2
'-----------------------------------------
 CH = Sheets("procédure").Range("A32")
'ajoute un classeur vierge
  Workbooks.Add
'définit le classeur CD
  Set CD = ActiveWorkbook
'définit l'onglet OD
  Set OD = CD.Sheets(1)
'copy les données de la colonne A de l'onglet OO
  Sh2.Range("A1").CurrentRegion.Copy
'les colle dans A1 de l'onglet OD
  OD.Range("A1").PasteSpecial (xlPasteValues)

'Sauvegarde du fichier CSV
 CD.SaveAs Filename:=CH & "\" & "mensuel_fc.csv", _
           FileFormat:=xlCSV, _
           CreateBackup:=False, _
           Local:=True
'Fermeture du classeur
 CD.Close savechanges:=False

End Sub



0