Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Désolé tout d'abord pour le titre de mon sujet qui peut paraître pas très explicite !
Donc je m'explique !
Pour mon boulot, j'utilise régulièrement des feuilles Excel dont les données sont ensuite utilisées dans un autre outil de gestion.
Problème : il y a environ 120 feuilles contenant chacune 100 lignes en moyenne, soit autant de références commerciales à traiter manuellement.
Or cet outil de gestion permet d'importer des fichiers .csv, à condition que le contenu du fichier soit "construit" d'une certaine façon.
Pas de problème pour créer le fichier csv (sous excel, "enregistre sous" -> csv).
Ce que je souhaiterais faire, c'est que à partir d'une feuille, je puisse générer une seconde feuille Excel de façon automatique (via une macro si possible).
Je vous ai mis en pièce jointe deux exemples : le modèle de "base" tel quel et le modèle "transformé" celui à quoi je souhaite aboutir.
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
With ThisWorkbook.Sheets("Feuil1") 'prend en compte l'onglet "Feuil" du classeur "Feuille base"
.Rows(1).ClearContents 'efface la ligne 1
With .Columns("B:B") 'prend en compte la colonne B
.ClearContents 'efface la colonne
.Insert Shift:=xlToRight 'insère une colonne à gauche
.Insert Shift:=xlToRight 'insère une colonne à gauche
End With 'fin de la prise en compte de la colonne B
.Range("A1") = -1 'place -1 en A1
.Range("B1") = 3 'place 3 en B1
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne de la colonne A
.Range("C2:C" & dl).Value = "A" 'place "A" dans la colonne C de la ligne 2 à dl
.Columns("A:E").ColumnWidth = 8.43 'ajute la largeur des colonne A à E
End With 'fin de la prise en compre de l'onglet "Feuil1" du classeur "Feuille base"
End Sub
Bonjour Robert (et bonjour au forum par la même occasion !),
C'est effectivement pile poil ce que je recherchais (avec une modif à y apporter, voir ci-dessous)
J'ai compris le fonctionnement de la macro, je vais pouvoir l'adapter à mes autres feuilles du classeur.
Par contre, je voulais savoir comment faire pour insérer un bouton sur cette feuille, qui en cliquant dessus, la macro s’exécute et crée un nouveau classeur.
Merci en tout cas pour la qualité et la rapidité de la réponse.
[EDIT]
J'avance petit à petit avec la macro suivante (désolé, c'est un peu rafistolé avec des bouts de codes...)
Code:
Sub Creation_commande()
'
' Creation_commande Macro
'
ActiveSheet.Select
ActiveSheet.Copy
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
With ActiveSheet 'prend en compte l'onglet "Feuil" du classeur "Feuille base"
.Rows(1).ClearContents 'efface la ligne 1
With .Columns("C:C") 'prend en compte la colonne C
.ClearContents 'efface la colonne
End With
With .Columns("B:B") 'prend en compte la colonne B
.ClearContents 'efface la colonne
.Insert Shift:=xlToRight 'insère une colonne à gauche
.Insert Shift:=xlToRight 'insère une colonne à gauche
End With 'fin de la prise en compte de la colonne B
.Range("A1") = -1 'place -1 en A1
.Range("B1") = 3 'place 3 en B1
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne de la colonne A
.Range("C2:C" & dl).Value = "A" 'place "A" dans la colonne C de la ligne 2 à dl
.Columns("A:E").ColumnWidth = 8.43 'ajute la largeur des colonne A à E
End With 'fin de la prise en compre de l'onglet "Feuil1" du classeur "Feuille base"
ActiveSheet.Shapes.Range(Array("Button 1")).Select
Selection.Delete
Dim NOMDOSSIER$, Chemin$
NOMDOSSIER = "Dossier_cible"
If Dir(ActiveWorkbook.Path & "\" & NOMDOSSIER, vbDirectory) = "" Then
MkDir ActiveWorkbook.Path & "\" & NOMDOSSIER
End If
Chemin = ActiveWorkbook.Path & "\" & NOMDOSSIER & "\"
ActiveWorkbook.SaveAs Chemin & ActiveSheet.Name, _
FileFormat:=xlCSV
ActiveWorkbook.Close savechanges:=True
End Sub
Il me reste un problème à régler.
Le dossier "Dossier_cible" n'est pas créé à partir de l'emplacement de mon fichier source mais la macro me crée systématiquement ce dossier à la racine de mon c: ...
J'ai testé en changeant mon fichier source de place mais rien n'y fait.
Je touche au but, merci d'avance pour votre aide.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.