Monial
Messages postés2Date d'inscriptiondimanche 5 novembre 2000StatutMembreDernière intervention19 janvier 2005
-
19 janv. 2005 à 15:09
jsem2k1
Messages postés125Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention12 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
jsem2k1
Messages postés125Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention12 août 20081 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