[Catégorie modifiée .Net -> VBA] Création automatique de feuille Excel [Résolu]

Signaler
Messages postés
9
Date d'inscription
mercredi 23 mars 2011
Statut
Membre
Dernière intervention
25 avril 2012
-
Keviin91
Messages postés
9
Date d'inscription
mercredi 23 mars 2011
Statut
Membre
Dernière intervention
25 avril 2012
-
Bonjour,
je possède une colonne sous excel qui compore plusieurs noms, je souhaite créer automatiquement pour chaque nom de la colonne une feuille ("onglet") qui comporte ce nom.
J'ai trouvé un code qui fonctionne, le problème et que si j'ajoute des nom à la suite de la colonne et que je lance la macro le programme bug car elle ne peut pas crée des feuilles ("onglet") déjà crée, ce qui est logique. Comment dois-je modifier mon code, pour que elle crée seulement les feuilles ("onglet") des noms que j'ai rentré à la suite de ma colonne et qu'elle conserve les autres feuilles.
Merci

Mon code :

Sub Ajout_Feuil()
Dim cel As Range, plg As Range

Sheets("test").Range("A5").Select
Set plg = Range("A5", Range("A5").End(xlDown))

Application.ScreenUpdating = False

For Each cel In plg.Cells
If cel <> "" Then
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = cel.Value
End If
Next
Application.ScreenUpdating = True

End Sub

7 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
64
Salut

Tu l'as deviné, il faut donc tester l'existence d'une feuille portant ce nom avant de vouloir la créer.

Dim oFeuille As WorkSheet
...
If cel.Value <> "" Then
    On Error Resume Next ' pour éviter erreur si elle n'existe pas
    Set oFeuille = Sheets(cel.Value)
    On Error Goto 0      ' retour à la normale
    If oFeuille Is Nothing Then
        Sheets.Add After:=Sheets(Sheets.Count)
        ActiveSheet.Name = cel.Value
    End If
End If 


NB : Pense à correctement choisir la catégorie de ta question + à utiliser la coloration syntaxique (3ème icone à droite) quand tu colles du code = plus facile à lire

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
9
Date d'inscription
mercredi 23 mars 2011
Statut
Membre
Dernière intervention
25 avril 2012

Tout d'abord merci pour ta réponse et je prend en note ta remarque pour mes réponses futures.
Une petite question que dois je mettre à la place des ... ? Ma plage de cellules à tester ?
Merci
Messages postés
9
Date d'inscription
mercredi 23 mars 2011
Statut
Membre
Dernière intervention
25 avril 2012

Voila le code après modification.
Je n'ai plus d'erreus par contre il ne crée pas les onglets si j'ajoute des nouveaux noms dans la colonne !

Sub Ajout_Feuil()
Dim oFeuille As Worksheet
Sheets("test").Range("A5").Select
Set plg = Range("A5", Range("A5").End(xlDown))

Application.ScreenUpdating = False

    
For Each cel In plg.Cells

If cel.Value <> "" Then
On Error Resume Next ' pour éviter erreur si elle n'existe pas
Set oFeuille = Sheets(cel.Value)
On Error GoTo 0      ' retour à la normale
If oFeuille Is Nothing Then
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = cel.Value
End If
End If
Next
End Sub
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
64
Ah, il faut ajouter ceci avant le Next :
Set oFeuille = Nothing
pour réinitialiser la variable objet
Messages postés
9
Date d'inscription
mercredi 23 mars 2011
Statut
Membre
Dernière intervention
25 avril 2012

Merci beaucoup ça fonctionne !
Par contre j'ai une dernière question, je souhaite créer dans cette colonne un lien vers l'onglet correspondant pour faciliter la navigation, j'ai testé plusieurs chose en utilisant cette fonction
ActiveSheet.Hyperlinks.Add Anchor:=Range(""), Address:="", SubAddress:= _
        "", TextToDisplay:=""

Le problème c'est que je ne comprend pas son fonctionnement et je n'arrive pas à remplir toutes les variables !
Merci d'avance !
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
64
Voir l'aide
Messages postés
9
Date d'inscription
mercredi 23 mars 2011
Statut
Membre
Dernière intervention
25 avril 2012

Quelle aide ? Merci