Créer un onglet sous condition VBA [Résolu]

cyllou 8 Messages postés jeudi 26 février 2009Date d'inscription 14 décembre 2011 Dernière intervention - 14 déc. 2011 à 18:13 - Dernière réponse : cyllou 8 Messages postés jeudi 26 février 2009Date d'inscription 14 décembre 2011 Dernière intervention
- 14 déc. 2011 à 23:21
Bonjour,
J'ai un pb sous VBA que je n'arrive pas à résoudre:
1.Je dispose d'une colonne de noms (appelée "plage") dans un onglet Excel
2.Je souhaite créer une macro qui screenerait cette colonne de noms et qui me créerait un nouvel onglet si et seulement si l'on trouve dans la plage une valeur dont le nom n'a pas encore été créée en onglet

Ex: j'ai 2 onglets dans mon fichier: "bidule" et "machin" et dans ma plage je dispose de 3 noms : "bidule", "machin" et "truc"
>>>la macro devrait me créer un nouvel onglet "truc" dans mon fichier Excel (de préférence après tous les autres onglets)

Merci bcp pour votre aide !
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 14 déc. 2011 à 22:17
3
Merci
Bien ...
Moi je veux bien (tu sais ce que tu fais là, j'espère, hein !)
Dim toto As Worksheet, machin As Variant, tablo
  With Sheets("input")
    derlig = .Range("A" & Rows.Count).End(xlUp).Row
    tablo = .Range("A1:A" & derlig)
    For Each machin In tablo
      If machin <> "" Then
        On Error Resume Next
        Set toto = Worksheets(machin)
        If Err > 0 Then
          Set dest = Worksheets.Add(after:=Worksheets(Worksheets.Count))
          dest.Name = machin
        End If
        On Error GoTo 0
      End If
    Next
  End With

J'ai traité avec on error resume next pour ne pas te forcer à utiliser un objet (Dictionnary) supplémentaire.
Je te laisse entièrement responsable du "volume" que va prendre ton classeur.
Bonne suit.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 14 déc. 2011 à 18:40
0
Merci
Bonjour,

1) VBA n'est pas VB6 !
Nous te serions reconnaissant de bien vouloir dorénavant apporter le plus grand soin au choix de la section dans laquelle tu ouvre une discussion (c'est important)

2) je ne comprends pas
une macro qui screenerait cette colonne de noms


3) montre-nous le code que tu as au moins tenté d'écrire, s'il te plait

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
cyllou 8 Messages postés jeudi 26 février 2009Date d'inscription 14 décembre 2011 Dernière intervention - 14 déc. 2011 à 18:50
0
Merci
Bonjour,

Cela fait un moment que je ne suis pas allé sur le forum,pardon pour l'erreur.

Voilà le code que j'ai tenté:
Sub testbis()

Dim NomsFeuilles() As String
Dim B As Boolean
ReDim NomsFeuilles(1 To Worksheets.Count)
For Nb = 1 To Worksheets.Count
NomsFeuilles(Nb) = Worksheets(Nb).Name
Next Nb
'For Z = 1 To Worksheets.Count
For i = 4 To 24
If Worksheets("d").Range("J" & i).Value = NomsFeuilles(Z) Then
B = True
Exit For
End If
Next i
Next Z
If Not B Then WSheets.Add.Move After:=Sheets(Sheets.Count)

End Sub

Merci pour votre aide !
Commenter la réponse de cyllou
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 14 déc. 2011 à 19:39
0
Merci
Bon !
ce code ne fait finalement rien ....
sauf déclencher une erreur sur cette ligne :
If Not B Then WSheets.Add.Move After:=Sheets(Sheets.Count) 

(à moins que tu n'aies déclaré ... mais où ? et initialisé ... mais où ?....... wsheets...)
et si tu nous exposais alors un peu plus clairement et précisément les tenants et aboutissants (à commencer par le verbe "screener") ? On y verrait alors peut-être un peu plus clair, non ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
cyllou 8 Messages postés jeudi 26 février 2009Date d'inscription 14 décembre 2011 Dernière intervention - 14 déc. 2011 à 19:51
0
Merci
Et bien pour prendre un exemple un peu plus précis, mettons qu'il existe 3 onglets dans mon fichier Excel:
1)Un onglet nommé "bidule" et un autre "machin" et un onglet "input"
2) Dans mon onglet "input", j'ai en colonne A une liste de noms (ex: 3 noms)
3) je dispose par exemple des 3 noms suivants : "bidule", "machin" et "truc" or je constate en regardant ces 3 noms que l'onglet "truc" n'existe pas dans mon fichier Excel
4) j'aimerais donc que la macro détecte cela en passant en revu l'ensemble de mes valeurs en colonne A de mon onglet "input" et me crée les onglets portant le nom de la cellule s'ils n'existent pas (par exemple, la macro devrait me créer un nouvel onglet "truc" dans mon fichier Excel)

Je précise également que dans ma colonne d'inputs, j'ai bien plus de 3 valeurs (environ 200) et que j'ai bien plus de 3 onglets au total dans mon fichier (peut etre une cinquantaine)
Commenter la réponse de cyllou
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 14 déc. 2011 à 19:57
0
Merci
He bien voilà !
Au bout du compte :
Tu veux :
1) parcourir toutes les cellules de l colonne A d'une feuille (pas un "onglet", hein ...) nommée "Input"
2) pour chaque valeur d'une cellule ainsi lue ===>> créer une feuille avec, pour nom, cette valeur, si elle n'existe pas déjà !
C'est celà ?

Mais dis-voir ...
Je précise également que dans ma colonne d'inputs, j'ai bien plus de 3 valeurs (environ 200)

tu comptes vraiment créer jusqu'à 200 feuilles, si par exemples 2010 valeurs différentes ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
cyllou 8 Messages postés jeudi 26 février 2009Date d'inscription 14 décembre 2011 Dernière intervention - 14 déc. 2011 à 21:26
0
Merci
Oui c'est bien ça
Commenter la réponse de cyllou
cyllou 8 Messages postés jeudi 26 février 2009Date d'inscription 14 décembre 2011 Dernière intervention - 14 déc. 2011 à 23:21
0
Merci
Merci bcp ucfoutu, ça fonctionne très bien et ça m'aura épargné pas mal de temps !
Commenter la réponse de cyllou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.