Suprimer onglets en fonction d'une liste de Noms

Résolu
KIRE36 Messages postés 11 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
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

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    1
    1. KIRE36 Messages postés 11 Statut Membre
       
      Bonjour
      Merci, Merci c'est une mine ce que vous venez de me transmettre, je vais creuser maintenant !
      0
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
    3. KIRE36 Messages postés 11 Statut Membre
       
      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
    4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
    5. KIRE36 Messages postés 11 Statut Membre
       
      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
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

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

    Cdlmnt
    1
    1. KIRE36 Messages postés 11 Statut Membre
       
      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
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. KIRE36 Messages postés 11 Statut Membre
       
      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
    2. KIRE36 Messages postés 11 Statut Membre
       
      Ci joint le lien (2 fichiers) pour exemple
      https://www.cjoint.com/c/HEejxhXeGYq

      Cordialement
      0