Suprimer onglets en fonction d'une liste de Noms

Résolu/Fermé
Signaler
Messages postés
9
Date d'inscription
jeudi 3 mai 2018
Statut
Membre
Dernière intervention
4 mai 2018
-
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
-
bonjour à tous
nouveau sur le forum, et comme prévu j'ai un blocage au niveau programme VBA n'en étant qu'à mes débuts.
je vous expose mon besoin : j ai un classeur nommé "Bibli" à l'intérieur une première feuille "Récup" avec une colonne A contenant une centaine de Nom, dans ce même classeur vient se copier des onglets (après la feuille "Récup") venant d'un autre classeur qui génère les onglets et les place dans le classeur "Bibli" et alimente la colonne A de "Récup" (ils peuvent être 2 comme 15) ce module tourne bien pas de souci.
Ce que je ne sais pas faire c'est : scruter la colonne A de "Récup" , passer en revue tous les noms d'onglet du classeur "Bibli", si le nom n'existe pas en A conserver l'onglet, dans le cas contraire, si un onglets possède un doublon, le supprimer.

j'espère que ma demande vous semble claire,

3 réponses

Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
675
1
Messages postés
9
Date d'inscription
jeudi 3 mai 2018
Statut
Membre
Dernière intervention
4 mai 2018

Bonjour
Merci, Merci c'est une mine ce que vous venez de me transmettre, je vais creuser maintenant !
0
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
675
Une chose m'interpelle, il n'est pas possible d'avoir dans le même classeur 2 onglets portant le même nom!
Donc lors du transfert un message vous signale cette erreur.
Il est aisé de supprimer cet onglet a ce moment là.
0
Messages postés
9
Date d'inscription
jeudi 3 mai 2018
Statut
Membre
Dernière intervention
4 mai 2018

Bien vu Merci
l'écriture exacte du nom des onglets se présente comme cela : Onglet 11" (copier le 10/1/2018) et Onglet 11(2)" (copier le 3/5/2018) le point de recherche pourrait être sur le (2)
Je regarde la meilleure façon de procéder à la suppression suivant ce critère
0
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
675
Comme ceci avec un commandbutton dans ton UserForm

Option Explicit
Private Sub CommandButton1_Click()
BoucleFeuilles
End Sub
Sub BoucleFeuilles()
Dim val As String
Dim longueur As Integer
 Dim Ws As Worksheet
 Application.DisplayAlerts = False 'n'affiche pas les alertes en cas de suppression de feuille, a toi de voir
    'Boucle sur les feuilles du classeur.
    For Each Ws In ThisWorkbook.Worksheets
        val = Ws.Name
        longueur = Len(val) 'longueur chaine caracteres
        If longueur > 6 Then
        MsgBox Ws.Name ' a supprimer
        Ws.Delete  'suppression feuille
        End If
    Next Ws
    Application.DisplayAlerts = True
End Sub


dans ton module1 corrige toutes lignes contenant:

Sheets(" Recap").Select


par

Sheets(" Recup").Select


Voilà

@+ Le Pivert
0
Messages postés
9
Date d'inscription
jeudi 3 mai 2018
Statut
Membre
Dernière intervention
4 mai 2018

Grand Merci à vous et ccm81 pour la réactivité, vous êtes d"une aide précieuse
je touche au but, le proces est bon le résultat est bon.
le seul point bloquant c'est que la 'longueur chaine caractères du nom d'onglet ne doit pas rentrer en ligne de compte.
Est il faisable de faire une détection que sur " (2) " à la place de " If longueur > 6 " ? , car parfois il est possible d'en avoir de >=8.

Genre: Si Nom onglet contient " (2) " alors demande de suppression.
Si cela est possible la boucle est bouclé. (le (2) est toujours en fin de chaine de C. et il n y aura jamais de (3)).

Cordialement
0
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
Bonjour

Je ne sais pas si j'ai bien compris
https://www.cjoint.com/c/HEdoaSYMEnB

Cdlmnt
1
Messages postés
9
Date d'inscription
jeudi 3 mai 2018
Statut
Membre
Dernière intervention
4 mai 2018

Un grand Merci à vous,
nous touchons au but, l'action est bonne, Mais. il y a un mais .
1) si j'ai deux onglets identiques "Onglet 11" (copier le 10/1/2018) et Onglet 11" (copier le 3/5/2018) résident dans "Bibli" je ne dois en conserver qu'un seul (la date n'a pas d'incidence à ce stade).
2) peut être ai je fais une erreur en me calant sur une liste ? car la suppression s'exécute sur un nom précis présent en A ce n'est pas ce que j'attends, je dois conserver tous les onglets (avec un nom diffèrent pour chaque) que je copie au fur et à mesure de mes travaux et ne doivent disparaitre, que un onglet sur les deux ou trois portant le même nom (chose qui arrive à chaque transfert d'onglet via mon autre application).
est-il pensable de ne jouer que sur les onglets sans faire appel à la liste ?
Détection : même nom plusieurs fois = En garder UN + suppression des doublons pour ce même nom.

ceci dit ton exemple est intéressant à plus d'un titre car il va trouver sa place dans une autre affaire que je vais faire plus tard.

Cordialement.
0
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
Le problème n'est pas tout à fait le même !!!
si j'ai deux onglets identiques "Onglet 11" (copier le 10/1/2018) et Onglet 11" (copier le 3/5/2018) résident dans "Bibli" ???
Deux onglets ne peuvent pas avoir le même nom dans un classeur
Sans un bout de fichier et des exemples de résultats attendus, ça va être difficile de t'aider

Cdlmnt
1
Messages postés
9
Date d'inscription
jeudi 3 mai 2018
Statut
Membre
Dernière intervention
4 mai 2018

Bien vu,
il me semblait bien que ma demande n'était pas complète, l'écriture exacte du nom des onglets se présente comme cela : Onglet 11" (copier le 10/1/2018) et Onglet 11(2)" (copier le 3/5/2018)
je prépare un fichier xls pour exemple cela sera mieux qu'un grand discours.
0
Messages postés
9
Date d'inscription
jeudi 3 mai 2018
Statut
Membre
Dernière intervention
4 mai 2018

Ci joint le lien (2 fichiers) pour exemple
https://www.cjoint.com/c/HEejxhXeGYq

Cordialement
0