Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion GHISLAIN
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

GHISLAIN

XLDnaute Impliqué
bonjour a tous

je cherche a creer des onglets automatique dans un autre classeur .
tout ce que je vois sur le forum cree des onglets dans le classeur actif


je souhaiterai qu'un onglet se cree en lançant la macro dans le classeur prod se trouvant sur c:\doc

je souhaiterai que cette onglet soit nomé avec la valeur de la cellule G7 de la feuille test

que ci l'onglet est deja existant que j ai un mess m indiquant que la feuille existe deja .

merci a tous de votre aide

amicalement ghislain
 
Re : onglet

Bonjour Ghislain

peut être ainsi :
Code:
Option Explicit
Sub test()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\doc\prod.xls")
With wb
If Not FeuilleExiste(wb, .Sheets("Feuil1").Range("G7").Value) Is Nothing Then Exit Sub
    .Worksheets.Add(after:=.Sheets(.Sheets.Count)).Name = .Sheets("test").Range("G7").Value
End With
End Sub
Function FeuilleExiste(wb As Workbook, f As String) As Worksheet
On Error Resume Next
Set FeuilleExiste = wb.Worksheets(f)
End Function

bonne journée
@+
 
Re : onglet

Salut GHISLAIN,

Dans quel classeur sera ta macro ?
Et dans quel classeur veux-tu créer les onglets ?

Il faut soit que tu ouvres ton classeur dans lequel tu veux créer l'onglet :
Code:
Workbooks.Open FileName:="classeur.xls"
ou s'il est déjà ouvert, que tu le selectionnes :
Code:
Workbooks("classeur.xls").Activate

Tu crées ton nouvel onglet :
Code:
Sheets.Add
ActiveSheet.Name = "onglet"

Pour vérifier que la feuille existe, ajoute la fonction et le code suivant :
Code:
Public Function FeuilleExiste(sNomFeuille As String) As Boolean
    On Error GoTo Err_FeuilleExiste
    FeuilleExiste = False
    FeuilleExiste = Not ActiveWorkbook.Worksheets(sNomFeuille) Is Nothing
Err_FeuilleExiste:
End Function
Code:
'Vérifie si la feuille onglet existe, si oui message d'erreur, si non creation
If FeuilleExiste("onglet") Then
    MsgBox "feuille onglet existe déjà"
Else
    Sheets.Add
    ActiveSheet.Name = "onglet"
End If


P.S. Pierrot trop rapide
 
Re : onglet

bonjour Pierrot93

merci de t'etre penché sur mon fil
je viens de tester le code proposé et j ai une erreur d'execution 9 soit , l'indice n appartien pas a l execution sur la ligne suivante
.Worksheets.Add(after:=.Sheets(.Sheets.Count)).Name = .Sheets("test").Range("G7").Value

si tu as une idéé de l erreur merci

amicalement ghislain
 
Re : onglet

Re,

je viens de tester le code proposé et j ai une erreur d'execution 9 soit , l'indice n appartien pas a l execution sur la ligne suivante
.Worksheets.Add(after:=.Sheets(.Sheets.Count)).Nam e = .Sheets("test").Range("G7").Value

la feuille "test" existe bien ? et la cellule G7 comporte bien un nom valide pour une feuille de calcul ???
 
Re : onglet

Re,

si la feuille "test" et la cellule G7, se trouve dans le classeur ou se trouve le code :
Code:
Dim wb As Workbook
Set wb = Workbooks.Open("C:\doc\prod.xls")
With wb
If Not FeuilleExiste(wb, ThisWorkbook.Sheets("Feuil1").Range("G7").Value) Is Nothing Then Exit Sub
    .Worksheets.Add(after:=.Sheets(.Sheets.Count)).Name = ThisWorkbook.Sheets("test").Range("G7").Value
End With
 
Re : onglet

re a tous

a plusieur essai je suis arrivée a cette conclusion qui fonctionne

Public Function FeuilleExiste(sNomFeuille As String) As Boolean
On Error GoTo Err_FeuilleExiste
FeuilleExiste = False
FeuilleExiste = Not ActiveWorkbook.Worksheets(sNomFeuille) Is Nothing
Err_FeuilleExiste:
End Function

Private Sub CommandButton1_Click()

Dim VNom As String
VNom = Sheets("essai").Range("G7")


Workbooks.Open Filename:="C:\doc\prod.xls"
On Error Resume Next
If FeuilleExiste(VNom) Then
MsgBox "feuille" & VNom & " existe déjà"

ActiveWorkbook.Close

Exit Sub
Else
Sheets.Add
ActiveSheet.Name = VNom


merci a tous de votre aide qui m'on aidé

amicalement

ghislain

ActiveWorkbook.Save
ActiveWorkbook.Close
End If



End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Power Query RAPPEL
Réponses
6
Affichages
690
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…