Creer plusieurs feuille à partir d'une colonne

Résolu
madjb Messages postés 38 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 7 février 2014 - 15 avril 2008 à 16:33
madjb Messages postés 38 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 7 février 2014 - 15 avril 2008 à 18:24
Bonjour,


Je cherche depuis ce matin mais en vain la solution pour créer autant de feuille que d'élèment dans une colonne dans Excel.


Je m'explique:


Dans ma colonne A sur la feuille principale, j'ai divers noms
d'entreprise et je souhaiterais faire une macro pour créer une feuille
pour chaque entreprise.

Or je connais que cette commande:


Set NewSheet = Worksheets.Add(after:=Worksheets(Worksheets.Count))

NewSheet.Name = "A1"


Si quelqu'un aurait le temps d'aider une débutant en vb, je vous en serais reconnaissant


merci d'avance

9 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
15 avril 2008 à 18:14
...

Comme ceci :

Dim NewSheet As Worksheet
   Dim SName As String
   Dim Boucle As Integer
   Dim DerniereValeur As Long
   On Local Error Resume Next 'si erreur a la prochaine ligne, l'execution du code continu et ne renvoi que le message specifié dans le if
   DerniereValeur = Worksheets("Feuil1").Range("A:A").Find("*", [A1], , , xlByRows, xlPrevious).Row
   If Err <> 0 Then'si erreur different de 0 c'est que la fonction find n'a rien trouvé
       Msgbox "aucun nom trouvé !", VbExclamation
       Err.Clear
       End
   End If
   For Boucle = 1 To DerniereValeur
       SName = Worksheets( "Feuil1" ).Range("A" & Boucle).Text
       If SName <> vbNullString Then
           Set NewSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
           NewSheet.Name = SName
       End If
   Next
   Set NewSheet = Nothing

essai dit moi ce qu'il ce passe

A+
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 avril 2008 à 16:43
Salut,
Il te faut faire une boucle

Du style

Dim NewSheet As Worksheet
   Dim SName As String
   Dim Boucle As Integer
   
   For Boucle = 1 To 15
       SName = Worksheets("Feuil2").Range("A" & Boucle).Text
       If SName <> vbNullString Then
           Set NewSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
           NewSheet.Name = SName
       End If
   Next
   Set NewSheet = Nothing , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
15 avril 2008 à 16:44
Salut,

ouai... mais c'est pas du VB !... c'est du ?... c'est du V... Du VBAAAA ! Bravo !... je vois que tu apprends vite.  Donc le bon theme c'est par la :
[infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA]

une piste : il vas te falloir boucler sur ta colonne et utiliser ce que tu connais deja a chaque passage dans la boucle.

Bon mais je ne suis pas inquiet, tu apprends vite

A+
0
madjb Messages postés 38 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 7 février 2014
15 avril 2008 à 16:48
merci ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
15 avril 2008 à 17:00
...

Salut jrivet, dit, les gents ils te contacte par mp avant de poster leurs question ? par ce que une telle rapidité c'est limite surhumain

j'ai une question  sur ta boucle pourquoi 15 ? car je ne vois rien dans l'ennoncé du probleme de madjb permet de limiter la boucle a 15 boucles.

j'ajouterais bien un truc comme ca avant :

Dim NewSheet As Worksheet
   Dim SName As String
   Dim Boucle As Integer
   Dim DerniereValeur As Long
   DerniereValeur = Worksheets( "Feuil2" ).Range("A:A").Find("*", [A1], , , xlByRows, xlPrevious).Row
   For Boucle = 1 To DerniereValeur
       SName = Worksheets( "Feuil2" ).Range("A" & Boucle).Text
       If SName <> vbNullString Then
           Set NewSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
           NewSheet.Name = SName
       End If
   Next
   Set NewSheet = Nothing

A+
0
madjb Messages postés 38 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 7 février 2014
15 avril 2008 à 17:11
Dslé pour le message mp...

donc en fait ca me met une erreur pour cela


DerniereValeur = Worksheets("Feuil2").Range("A:A").Find("*", [A1], , , xlByRows, xlPrevious).Row


en fait ma premiere page est une import d'un fichier txt sur le net

donc la taille sera aleatoire et n'aura aucune limite...

donc il faut boucler jusqu'a tomber sur une ligne vide...
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
15 avril 2008 à 17:33
...

non je rigolais pour le mp qui veut dire message perso, c'est juste que je suis a la ramasse question rapidité aujourd'hui

je reviens sur ton probleme : c'est quoi le message d'erreur ?

Est ce bien la feuille 2 dans la quelle ce trouve la colonne de noms d'entreprises ?

ajoute ce qui suis :

On Local Error Resume Next 'si erreur a la prochaine ligne, l'execution du code continu et ne renvoi que le message specifié dans le if
DerniereValeur = Worksheets("Feuil2").Range("A:A").Find("*", [A1], , , xlByRows, xlPrevious).Row
If Err <> 0 Then 'si erreur different de 0 c'est que la fonction find n'a rien trouvé
    Msgbox "aucun nom trouvé !", VbExclamation
    Err.Clear
    End
End If

n'oubli pas de repondre aux 2 questions

A+
0
madjb Messages postés 38 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 7 février 2014
15 avril 2008 à 17:45
--> je reviens sur ton probleme : c'est quoi le message d'erreur ?

Il me surligne en jaune "DerniereValeur = Worksheets("Feuil2").Range("A:A").Find("*", [A1], , , xlByRows, xlPrevious).Row"

--> Est ce bien la feuille 2 dans la quelle ce trouve la colonne de noms d'entreprises ?

         Non c'est la feuille 1
das la colonne A mais j'ai remplacer "2" par "1" je pense que c'est pas
le soucis.


Sinon je le rajoute à la suite ou je remplace l'ancien code par ça ?? :

On Local Error Resume Next 'si erreur a la prochaine ligne, l'execution du code continu et ne renvoi que le message specifié dans le if

DerniereValeur = Worksheets("Feuil2").Range("A:A").Find("*", [A1], , , xlByRows, xlPrevious).Row

If Err <> 0 Then 'si erreur different de 0 c'est que la fonction find n'a rien trouvé

    Msgbox "aucun nom trouvé !", VbExclamation

    Err.Clear

    End

End If
0
madjb Messages postés 38 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 7 février 2014
15 avril 2008 à 18:24
:)


Il n'y a rien à dire c'est parfait !

Ca marche super bien

Je te remercie !!!!  Je commence a travailler sur Excel et je dois faire directement des choses comme ça...c'est dur dur


Mais merci à toi !!!


a+
0