pb macro : message erreur
Le
claire_db

Je n'y connait rien en macro. On m'a dit de mettre ce code mais ca me met un
message d'erreur et Activesheet surligné en jaune.
ci joint le code :
Sub AjoutPages()
ActiveWorkbook.Save
Sheets("page_de_garde").Select
For Each cellule In Range("G24", Range("G24").End(xlDown).Address)
If TestExistenceFeuille(cellule.Value, ActiveWorkbook.Path & "" &
ActiveWorkbook.Name) = True Then
Else
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = cellule.Value
End If
Sheets("page_de_garde").Select
Next
End Sub
Quelqu'un sait pourquoi? Merci d'avance
message d'erreur et Activesheet surligné en jaune.
ci joint le code :
Sub AjoutPages()
ActiveWorkbook.Save
Sheets("page_de_garde").Select
For Each cellule In Range("G24", Range("G24").End(xlDown).Address)
If TestExistenceFeuille(cellule.Value, ActiveWorkbook.Path & "" &
ActiveWorkbook.Name) = True Then
Else
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = cellule.Value
End If
Sheets("page_de_garde").Select
Next
End Sub
Quelqu'un sait pourquoi? Merci d'avance
Probablement parceque la cellule que tu désignes
est vide
ou
contient un nom non valide (caractères interdits pour les noms)
ou
dépassement nb cractères
ou encore
le nom exixte déjà
Cordialement.
lSteph
pourquoi tu utilises cette macro....qu'est-ce que tu veux faire ?
Cette procédure doit s'appliquer dans un classeur où tu as la
fonction TestExistenceFeuille() ....Tu ne nous as pas donné le code !
Un nom d'un onglet d'une feuille ne doit pas avoir plus de 31 caractères et
ne peut pas être vide non plus.
Certains caractères sont interdits dans la nomination des onglets d'une feuille
* ? : [ ] /
si Cellule est vide ou contient des caractères interdits, ta macro va se planter
ActiveSheet.Name = cellule.Value
'-------------------------------
Sub AjoutPages()
ActiveWorkbook.Save
Sheets("page_de_garde").Select
For Each cellule In Range("G2:G" & Range("G65536").End(xlUp).Row)
If TestExistenceFeuille(cellule.Value, _
ActiveWorkbook.Path & "" & ActiveWorkbook.Name) = True Then
Else
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = cellule.Value
End If
Sheets("page_de_garde").Select
Next
End Sub
'-------------------------------
"claire_db"
Je n'y connait rien en macro. On m'a dit de mettre ce code mais ca me met un
message d'erreur et Activesheet surligné en jaune.
ci joint le code :
Sub AjoutPages()
ActiveWorkbook.Save
Sheets("page_de_garde").Select
For Each cellule In Range("G24", Range("G24").End(xlDown).Address)
If TestExistenceFeuille(cellule.Value, ActiveWorkbook.Path & "" &
ActiveWorkbook.Name) = True Then
Else
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = cellule.Value
End If
Sheets("page_de_garde").Select
Next
End Sub
Quelqu'un sait pourquoi? Merci d'avance
Sub AjoutPages()
Dim c as range
ActiveWorkbook.Save
Sheets("page_de_garde").Activate
For Each c In Range("G24", Range("G24").End(xlDown).Address)
If TestExistenceFeuille(c.Value, ActiveWorkbook.Path & "" & _
ActiveWorkbook.Name) = True Then
Else
Sheets.Add after:=Sheets(Sheets.Count)
on error resume next
ActiveSheet.Name = left(c,31)
on error goto 0
End If
Sheets("page_de_garde").Activate
Next
End Sub
'lSteph
cellule "G21" (qui est dans la feuille "page_de_garde") le nombre de
feuilles à créer.
Voici la macro sub ajoutPages et la fonction : TestExistenceFeuille
Merci d'avance !
Sub AjoutPages()
ActiveWorkbook.Save
Sheets("page_de_garde").Select
For Each cellule In Range("G21", Range("G21").End(xlDown).Address)
If TestExistenceFeuille(cellule.Value, ActiveWorkbook.Path & "" &
ActiveWorkbook.Name) = True Then
Else
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = cellule.Value
End If
Sheets("page_de_garde").Select
Next
End Sub
Public Function TestExistenceFeuille(strNomFeuille As String, strNomFichier
As String) As Boolean
TestExistenceFeuille = False
On Error GoTo err
Dim oAppExcel As Excel.Application
Dim oWbk As Excel.Workbook
Dim oSht As Excel.Worksheet
'Lance Excel
Set oAppExcel = New Excel.Application
'Ouvre le classeur
Set oWbk = oAppExcel.Workbooks.Open(strNomFichier)
'Accède à la feuille
Set oSht = oWbk.Sheets(strNomFeuille)
TestExistenceFeuille = True
'Libère les variables et quitte
Set oSht = Nothing
oWbk.Close
oAppExcel.Quit
Set oWbk = Nothing
Set oAppExcel = Nothing
err:
End Function
"MichDenis" %
un peu d'explications pour chacune des lignes de code...
'--------------------------------
Sub AjoutPages()
'Sauvegarde du classeur en débutant
ActiveWorkbook.Save
'Sélection de la page de garde
Sheets("page_de_garde").Select
'Pour toutes les cellules de la page G2:Gx
'G2:Gx -> ce sont les noms des feuilles que tu désires avoir
'qui devraient se retrouver là, et non pas le nombre de feuille à créer
For Each cellule In Range("G2:G" & Range("G65536").End(xlUp).Row)
'Un test pour savoir si le nom de la feuille existe déjà dans le classeur actif
If TestExistenceFeuille(cellule.Value, _
ActiveWorkbook.Path & "" & ActiveWorkbook.Name) = True Then
Else
'Si aucune feuille du nom de la cellule existe dans le classeur, il y
'a création du nom de la feuille, celle-ci est placée à la fin
Sheets.Add after:=Sheets(Sheets.Count)
'Baptème du nom de la feuille au contenu de la cellule
ActiveSheet.Name = cellule.Value
End If
'Retour à la page de garde pour effectuer la lecture de la seconde
'cellule de la page G2:Gx
Sheets("page_de_garde").Select
Next
End Sub
'--------------------------------
P.S. Il n'est pas étonnant que tu n'y arrive pas !
"claire_db" %
La macro sert à ajouter des feuilles dans le classeur Excel. Je rentre ds la
cellule "G21" (qui est dans la feuille "page_de_garde") le nombre de
feuilles à créer.
Voici la macro sub ajoutPages et la fonction : TestExistenceFeuille
Merci d'avance !
Sub AjoutPages()
ActiveWorkbook.Save
Sheets("page_de_garde").Select
For Each cellule In Range("G21", Range("G21").End(xlDown).Address)
If TestExistenceFeuille(cellule.Value, ActiveWorkbook.Path & "" &
ActiveWorkbook.Name) = True Then
Else
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = cellule.Value
End If
Sheets("page_de_garde").Select
Next
End Sub
Public Function TestExistenceFeuille(strNomFeuille As String, strNomFichier
As String) As Boolean
TestExistenceFeuille = False
On Error GoTo err
Dim oAppExcel As Excel.Application
Dim oWbk As Excel.Workbook
Dim oSht As Excel.Worksheet
'Lance Excel
Set oAppExcel = New Excel.Application
'Ouvre le classeur
Set oWbk = oAppExcel.Workbooks.Open(strNomFichier)
'Accède à la feuille
Set oSht = oWbk.Sheets(strNomFeuille)
TestExistenceFeuille = True
'Libère les variables et quitte
Set oSht = Nothing
oWbk.Close
oAppExcel.Quit
Set oWbk = Nothing
Set oAppExcel = Nothing
err:
End Function
"MichDenis" %
Pour l'explication, j'ai mis un post à 14h55...
Ta macro ajoute des feuilles, chez moi cela marche , mais...
avec les noms des feuilles de G24:g....
et non pas le nombre ...regardes celui de 15h20
te propose une solution.Peut-être ne se voit il pas...?
Sinon , savoir ce qui convient ou pas serait à minima...utile.
je remets au cas où...
..une solution sous réserve du reste du contexte
Sub AjoutPages()
Dim c as range
ActiveWorkbook.Save
Sheets("page_de_garde").Activate
For Each c In Range("G24", Range("G24").End(xlDown).Address)
If TestExistenceFeuille(c.Value, ActiveWorkbook.Path & "" & _
ActiveWorkbook.Name) = True Then
Else
Sheets.Add after:=Sheets(Sheets.Count)
on error resume next
ActiveSheet.Name = left(c,31)
on error goto 0
End If
Sheets("page_de_garde").Activate
Next
End Sub
Cordialement.
lSteph