Génération automatique de worksheets

Monial Messages postés 2 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 19 janvier 2005 - 19 janv. 2005 à 15:09
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 - 19 janv. 2005 à 23:45
Bonjour,

je souhaite générer grace à une macro VBA autant de worksheets que j'ai de noms dans une table saisie dans une feuille Excel: j'ai créé une table (10 lignes, 3 colonnes) dans une feuille appelée "sheet1" et je souhaite maintenant écrire une macro qui me permettra de générer 10 nouvelles feuilles dans un nouveau workbook. Le nom à donner au nouveau workbook se trouve dans la cellule A1 de la feuille "sheet1" et le nom à donner à chaque feuille se trouve dans la table créeé dans "sheet1", à l'intersection de chaque ligne et de la colonne n°1. Le contenus de la colonne 2 et 3 devront être recopiés dans chaque feuille corresponmdante, dans les cellules A1 et A2.
Je commence par où ???
Merci de votre aide

1 réponse

jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
19 janv. 2005 à 23:45
The J

Salut monial
désolé pour les fautes d'ortographe

tu peux procédé comme suis
le code n'est pas obtimiser mais devrait marcher
Bonne chance

'ici j'ai inséré un bouton dans la feuille sheet1


Dim strnomfeuille(10) As String
Dim valeur(10) As String
Dim valeur2(10) As String
Dim w As Workbook
Dim a As Integer
Dim i As Integer
Dim msg As Integer



Private Sub CommandButton1_Click()


'Ici le range a4:a13 représante ton tableau
Range("A4:A13").Select


'On vérifi s'il n'y a pas de caratère indésirable
a = 0
For Each cell In Selection

For i = 1 To Len(cell.Value)
If InStr(1, "/#*[]~?", Mid(cell.Value, i, 1)) = 0 Then
a = a + 1
strnomfeuille(i) = cell.Value
valeur(i) = cell.Offset(0, 1).Value
valeur2(i) = cell.Offset(0, 2).Value
Else
MsgBox "Cararère incongrue dans la cellule " & cell.Address, , "Erreur"
Exit Sub
End If

Next i


Next


'On vérifie s'il ny as pas de classeur ouver avec le meme nom


For Each w In Workbooks

If w.Name = [A1].Value & ".xls" Then
msg = MsgBox("Le fichier " & [A1].Value & ".xls" & " est déja ouvert." & _
vbNewLine & "Voulez vous le modifier?", vbQuestion + vbDefaultButton1 + vbYesNo, _
"Erreur")

If msg = vbYes Then
Call ramplacer([A1].Value & ".xls")
Exit Sub
Else
Exit Sub
End If

End If

Next


'On crée le classeur désiré


Workbooks.Add.SaveAs [A1].Value



'On crée les feuille désiré


For i = 1 To 10
Sheets.Add
With ActiveSheet
.Name = strnomfeuille(i)
.[A1].Value = valeur(i)
.[A2].Value = valeur2(i)
End With


Next i



End Sub


Sub ramplacer(nom As String)


Workbooks(nom).Activate


For Each Sheet In Worksheets
For i = 1 To 10
If Sheet.Name = strnomfeuille(i) Then
strnomfeuille(i) = "["
With Sheet
.[A1].Value = valeur(i)
.[A2].Value = valeur2(i)
End With
End If
Next i
Next


For i = 1 To 10
If strnomfeuille(i) <> "[" Then
Sheets.Add
With ActiveSheet
.Name = strnomfeuille(i)
.[A1].Value = valeur(i)
.[A2].Value = valeur2(i)
End With
End If
Next i


End Sub
0
Rejoignez-nous