madjb
Messages postés38Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention 7 février 2014
-
15 avril 2008 à 16:33
madjb
Messages postés38Date d'inscriptionmercredi 31 octobre 2007StatutMembreDerniè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
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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]
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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.
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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