besoin d'aide pour macro Excel

A

Aurelie

Guest
J'aimerai savoir si quelqu'un pourrait m'aider:
J'ai un fichier Excel avec des donnees sous formes d'un tableau (en lignes et colonnes). (une 300ene de lignes!!)
J'aimerai reussir a enregistrer chaques lignes dans un fichier separe, avec pour titre la cellule de la 1ere colonne; sans avoir a copier-coller la ligne dans un nouveau fichier puis enregistrer en ayant a taper un nom.
existe-t-il une macro qui me permettrait de sauver chaque ligne et de reconnaitre la 1ere colonne de chaque ligne comme nom de fichier?

Merci d'avance pour votre aide

Aurelie

Si je n'ai pas ete claire, je peux reexpliquer!
 
C

Cyber PAPY

Guest
Bonjour Aurélie

j'ai fait un petit truc tout simple


For i = 1 To 300

a = Cells(i, 1) ' definit le nom du fichier dans la cellule de la ligne i 1ere colonne

Rows("1:1").Select
Selection.Copy

Workbooks.Add ' crée un nouveau classeur

ActiveSheet.Paste

Application.CutCopyMode = False

ActiveWorkbook.SaveAs Filename:=a, FileFormat:=xlNormal, ReadOnlyRecommended:=False, CreateBackup:=False

Next


Voilà .
Il suffit de la lancer à partir de la feuille ou se trouve tes données et le résultat est sauvegardé dans le même répertoire.

Cordialement

Cyber PAPY
 
V

Victor

Guest
Bonjour le forum,

J'ai un problème du même style mais beaucoup plus méchant... juste avant les fêtes... plus de temps pour les cadeaux.

J'ai un tableau environ 10 colonnes et de 10'000 à 12'000 lignes...
bref un monstre.

Colonne A = NomPrénom
Colonne B = Code du type C01, C02, C03, etc.
Cellule Z1 = "VPN novembre 2002"

Pour 1 NomPrénom ont trouve toujours le même Code Cxx.
Pour 1 Code on peut avoir plusieurs NomPrénom.

J'ai 240 NomPrénom.

Je cherche à créer 240 fichiers nommés "Cxx - NomPrénom - VPN novembre 2002.xls"
contenant chaqu'un les lignes correspondantes.

Je ne vois pas comment m'y prendre.
Si qq veut bien me donner un coup de pouce, je peux envoyer un petit
fichier exemple.
Merci d'avance
Cordialement

Victor
 
A

Aurelie

Guest
Salut Cyber Papy,

merci pour ton aide.
Je viens d'ecrire la macro mais elle ne veut pas tourner. En fait, je pense qu'il y a un probleme au niv du SaveAs.
Voici ce que j'ai tape:

For i = 1 To 10
a = Cells(i, 1)
Rows("1:1").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=a, FileFormat:=x1Normal, ReadOnlyRecommended:=False, CreateBackup:=False
Next
End Sub

Je recois un message d'erreur tel que:
Run time error 1004
method 'saveas' of object '_workbook' failed

Sais tu pourquoi?

Merci beaucoup pour ton aide.

Aurelie
 
R

Rolilandon

Guest
Bonjour
Voila un bout de code qui sélectionne depuis la cellule A1 jusqu'à la derniére cellule de la colonne contenant une donnée.

Sub Macro2()
'
Dim ligne As Integer, colonne As Integer
Dim toto As String
Dim cellule As Variant
'
Workbooks("classeur1").Activate
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
For Each cellule In Selection
ligne = cellule.Row
toto = cellule.Value
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=toto, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Workbooks("classeur1").Activate
Rows(ligne).Copy
Workbooks(toto & ".XLS").Activate
ActiveCell.PasteSpecial
ActiveWorkbook.Save
ActiveWorkbook.Close
Next
End Sub
 
T

Ti

Guest
copie la macro suivante dans ton fichier source et lance la macro. Les fichiers sont créés dans le même répertoire que le fichier source. J'ai supposé que le nom donné dans la première colonne de chaque ligne est du type "NomFichier.xls". Si l'extension n'y est pas, dis-le moi pour que j'intègre ce test dans la procédure

Option Explicit

Sub CopieLignesDansFichier()
'Ti 11-12-02
Dim Plage As Range, Ligne As Range
Dim NomF As String
Dim WbkSource As Workbook, WbkCible As Workbook
Set WbkSource = ThisWorkbook
With ActiveSheet
Set Plage = .Range("A1", .Range("A65536").End(xlUp))
End With

Application.ScreenUpdating = False
For Each Ligne In Plage.Rows
NomF = Ligne.Cells(1, 1).Value

If NomF <> "" Then
Workbooks.Add
Set WbkCible = ActiveWorkbook
NomF = WbkSource.Path & "\" & NomF
With WbkCible
ActiveSheet.Range("A1").EntireRow.Value = Ligne.EntireRow.Value
'pour pouvoir écraser les fichiers qui portent déjà le même nom
'sans confirmation
'remettre une apostrophe devant la ligne suivante pour avoir
'un message d'alerte
Application.DisplayAlerts = False
.SaveAs NomF
Application.DisplayAlerts = True
.Close
End With
End If
Next Ligne
Application.ScreenUpdating = True
End Sub
 
C

Cyber PAPY

Guest
Oops

J'ai envoyé mon brouillon

voici ce que j'aurais dû mettre







b = "xport.xls" ' ici tu mets le nom de ton fichier contenant les données


For i = 1 To 300

Windows(b).Activate

a = Cells(i, 1) ' definit le nom du fichier dans la cellule de la ligne i 1ere colonne

Rows(i).Select
Selection.Copy

Workbooks.Add ' crée un nouveau classeur

ActiveSheet.Paste

Application.CutCopyMode = False

ActiveWorkbook.SaveAs Filename:=a, FileFormat:=xlNormal, ReadOnlyRecommended:=False, CreateBackup:=False

Next

End Sub



désolé Mes neurones n'aiment pas le froid
;-)
 
A

Aurelie

Guest
Merci Cyber Papy,

Tu me sauves!!!
La macro tourne super bien.

J'ai un dernier petit conseil a te demander:
Je viens de faire tourner ma macro et je me retrouve donc avec 300 fichiers ouverts.
Penses tu que je pourrais ajouter une ligne qui permettrait de fermer les fichiers? et si oui, laquelle?

Mille merci(s).

Aurelie
 
C

Cyber PAPY

Guest
tout à fait possible
après la ligne :
ActiveWorkbook.SaveAs Filename:=a, FileFormat:=xlNormal, ReadOnlyRecommended:=False, CreateBackup:=False

il suffit de fermer le fichieravec l'instruction:
ActiveWorkbook.Close
 
G

Gilles

Guest
Bonjour tous le monde,

Voilà, je n'ai jamais utilisé excel avec vba, je voudrais savoir comment faire
pour créer un bouton sur lequel je pourrais cliquer pour afficher un tableau,
et aussi comment faire des cases ou l'on doit rentrer un nombre, comment faire ensuite pour récupérer ce nombre dans un tableau et le traiter !

Si je pouvais avoir des exemples simples de ce genre de cas se serait super
sympha.

Merci d'avance

Gilles
 

Discussions similaires

Réponses
9
Affichages
246
Réponses
17
Affichages
597

Statistiques des forums

Discussions
312 967
Messages
2 094 030
Membres
105 920
dernier inscrit
SAUSSARd