Créer une boucle pour extraire ligne tableau excel vers nouveau fichier

pouet007007 Messages postés 3 Date d'inscription mercredi 23 juillet 2008 Statut Membre Dernière intervention 4 juillet 2011 - 8 juin 2011 à 19:40
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 4 juil. 2011 à 20:56
Bonjour,

Je vous expose mon problème, étant débutant, je souhaiterai que vous m'aidiez à le résoudre.
Je dispose d'un tableau "toto" contenant X lignes.
Je voudrais créer une macro qui copiera chaque ligne du tableau toto dans un nouveau fichier excel.
C'est à dire que si mon tableau toto fait 10 lignes, j'aimerai extraire chacune des lignes en 10 fichiers excel.
Pour ce qui est de copier une ligne vers un nouveau fichier, je sais faire, mais ça se complique quand il faut créer une boucle afin d'extraire chaque ligne...

Merci d'avance pour votre aide :)

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 juin 2011 à 21:12
Pour ce qui est de copier une ligne vers un nouveau fichier, je sais faire, mais ça se complique quand il faut créer une boucle afin d'extraire chaque ligne...

bien !
tu sais donc déjà copier un range vers une destination par la méthode copy
et je te laisse donc compléter ce code/exemple :
Dim acopier As Range, i as long
  For i = 1 To UsedRange.Rows.Count
    Set acopier = Range("A" & i).EntireRow
    ' et donc là (ce que tu sais faire) tes instructions de copie
    ' de cette plage vers ce que tu veux
  Next

A toi, donc.

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
pouet007007 Messages postés 3 Date d'inscription mercredi 23 juillet 2008 Statut Membre Dernière intervention 4 juillet 2011
1 juil. 2011 à 23:05
Bonjour,

Merci ucfoutu pour ta réponse rapide (la mienne l'est moins).
Tout d'abord, j'ai changé d'avis, à la place de plusieurs fichiers excel, j'ai choisi de créer X onglet, X étant le nombre de ligne de mon tableau

A l'aide de bouts de code par ci par là trouver sur le web, j'ai pu pondre un petit code certainement très sale et très bancal, mais ça fonctionne :)

J'arrive à extraire chaque ligne de la colonne A pour créer X onglet et renommer chaque onglet de la valeur de chaque cellule de la colonne A.
Mon problème réside dans le fait que je souhaite incorporer une boucle qui permettrait de copier des valeurs du tableau originel vers les nouveaux onglets ainsi créés.
Je ne sais pas si je suis assez explicite, c'est pour cela que je joins un fichier excel qui correspond à ce que je recherche.

Merci !

Sub CreationOnglet()

'Je commence par supprimer tous les onglets existants

On Error Resume Next
  For Ctr = Sheets.Count To 1 Step -1
    If Sheets(Ctr).Name <> ActiveSheet.Name Then
    SendKeys ("{ENTER}")
    Sheets(Ctr).Delete
    End If
  Next
 
'Ensuite je détermine le nombre de ligne que j'ai dans ma colonne A
  
  Dim dern_fournisseur As String
  dern_fournisseur = (Range("A65536").End(xlUp).Row)
  
 Range("A1").Select

'Je crée un tableau pour enregistrer mes données

  Dim Tableau() As String
  ReDim Tableau(1 To dern_fournisseur)
' J'ai mis A1:A99 parce que je ne sais pas faire une selection de la première cellule à la dernière cellule utilisée 
  For Ctr = 1 To dern_fournisseur
    Tableau(Ctr) = Range("A1:A99")(Ctr)
  Next

'Je crée les onglets et je les renomme

  For Ctr = 1 To dern_fournisseur
    Sheets.Add , Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = Tableau(Ctr)
  Next
End Sub



Mon super fichier XLS :)
0
pouet007007 Messages postés 3 Date d'inscription mercredi 23 juillet 2008 Statut Membre Dernière intervention 4 juillet 2011
4 juil. 2011 à 20:43
Personne pour m'aider?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 juil. 2011 à 20:56
Bonjour,
la comparaison de ce commentaire de ton code :
' J'ai mis A1:A99 parce que je ne sais pas faire une selection de la première cellule à la dernière cellule utilisée

avec cette ligne de ton code :
dern_fournisseur = (Range("A65536").End(xlUp).Row)

ne m'encourage certes pas à t'aider à des copier/coller !
Aider ? Bien volontiers !
Mais jamais si l'aide se réduit finalement (et cela parait malheureusement le cas) à écrire un code qui sera copié mais non compris.
Désolé.

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
Rejoignez-nous