Créer et supprimer des onglets selon la MAJ d'un tableau

Bonjour,

Je voudrais à travers un bouton "VALIDER" dans l'onglet "Synthèse" que des onglets se créent ou disparaissent selon si j'ajoute ou supprime un ligne depuis mon tableau tout en gardant la trame Feuil Vierge pour chaque Onglet

Merci beaucoup de votre aide

Bonjour NBL, bonjour le forum,

Heu !... Quel serait le nom de l'onglet ?!... Autrement dit, quelle colonne du tableau dans l'onglet SYNTHESE va déterminer le non de l'onglet à ajouter/supprimer ?...

Bonjour,

Le mieux ça serais le Libellé du site (F) en 1er et suivi du code de l'opération en (C)

Merci par avance

Bonjour NBL, bonjour le forum,

En pièce jointe ton fichier modifié. Clique sur le bouton Création des onglets chaque fois que tu voudras mettre à jour...

Le code :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (onglet Synthese)
Dim OV As Worksheet 'déclare la variable OV (onglet Vierge)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim O As Worksheet 'déclare la variable O (onglet)
Dim I As Integer 'déclare la variable I (Incrément)
Dim NO As String 'déclare la variable NO (Nom de l'Onglet)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set OS = Worksheets("SYNTHESE") 'définit l'onglet OS
Set OV = Worksheets("VIERGE") 'définit l'onglet OV
OS.Rows.Interior.ColorIndex = xlNone 'supprime une éventuelle couleur rouge dans les lignes
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Application.DisplayAlerts = False 'empêche les messages d'Excel (à la suppression d'un onglet par exemple)

'*****************************************************
'suppression des onglets autres que SYNTHESE et VIERGE
'*****************************************************
For Each O In Sheets 'boucle sur tous les onglets O du classeur
    'si le nom de l'onglet n'est pas "SYNTHESE" ou "VIERGE", supprime l'onglet
    If Not O.Name = "SYNTHESE" And Not O.Name = "VIERGE" Then O.Delete
Next O 'prochain onglet de la boucle

For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)

    NO = TV(I, 6) & " " & TV(I, 3) 'définit le nom de l'onglet NO (Libellé du site et code de l'opération)
    For Each O In Sheets 'boucle sur tous les onglets O du classeur
        If O.Name = NO Then 'si l'onglet O porte le même nom que NO
            MsgBox "Impossible de créer l'onglet de la ligne " & I & " car" & Chr(13) _
                & "un onglet portant le même nom exite déjà !" & Chr(13) _
                & "Ligne repérée en rouge..." 'message
            OS.Rows(I).Interior.ColorIndex = 3 'colore la ligne en rouge
            GoTo suite 'va à l'étiquette "suite"
        End If 'fin de la condition
    Next O 'prochain onglet de la boucle

    '*************************************************************
    'création des onglets avec gestion des doublons et des erreurs
    '*************************************************************
    OV.Copy after:=Sheets(Sheets.Count) 'vopy l'onglet OV en dernière position
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
    ActiveSheet.Name = NO 'renomme l'onglet (génère une erreur si le nom contient au moins un cacactère non autorisé)
    If Err <> 0 Then 'condition : si une erreur a été générée
        MsgBox "Le libellé du site ou le code de l'opération, en ligne " & I & Chr(13) _
           & "contient au moins un caractère non autorisé pour nommer un fichier !" & Chr(13) _
           & "L'onglet ne sera pas créé ! Ligne repérée en rouge..." 'message"
           ActiveSheet.Delete 'supprime l'onglet actif
           OS.Rows(I).Interior.ColorIndex = 3 'colore la ligne en rouge
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs

suite: 'étiquette
Next I 'prochaine ligne de la boucle

Application.DisplayAlerts = True 'autorise les messages d'Excel
OS.Activate 'active l'onglet OS
End Sub

Le fichier :

20nbl-v01.xlsm (43.06 Ko)

ThauThème,

C'est incroyable, pour moi c'est un langage qui vient d'un autre monde. Je suis bluffer !! et en plus ça fait du rouge si j'ai des doublons !!

Si je peux me permettre en pièce jointe voici mon projet complet que je n'ai pas envoyé tout de suite car des fois quand j'expose trop de problème pour un même fichier ça deviens compliquer pour moi et pas toujours facile de ce faire comprendre !

NOTA : dans la colonne Détail de l'opération le texte est construit toujours pareil c'est un extract d'un logiciel

Un grand Merci

23nbl-v01-2.xlsm (61.18 Ko)

Re,

Il m'a fallu changer de méthode. Dans la version 1, je commençais par supprimer tous les onglets puis je les recréais selon le tableau. Ça marchait très bien mais au vu de ton nouveau fichier exemple (un peu confus je te l'avoue) j'ai pensé que ça n'irai pas car tu perdrais les données déjà enregistrées sur les fiches.

La nouvelle méthode ne gère plus les doublons !... Si tu as deux lignes avec le même libellé et le même code une seule fiche sera gardé ou créé. Mais je pense que le code va changer à chaque ligne...

L'onglet VIERGE est orange. Il suffit de double-cliquer dans la couleur pour alterner orange/vert. Comme chaque nouvel onglet est une copie de la fiche VIERGE, choisit la bonne couleur par défaut.

Même principe pour les autres fiches, un double-clic permet d'alterner entre le vert et l'orange. Pour le bouton d'envoi par Email il te faudra reposter car ce n'est pas mon domaine.

Quant à la récupération des données du tableau je ne l'ai faite que là où tu avais renseigner la colonne correspondante. Pour les autres données j'ai pas bien compris. Il te suffira que rajouter des lignes :

OA.Range("G1").Value = TV(I, 7) 'renvoie dans la celule G1 de l'onglet OA la valeur de la donnée ligne I, colonne 7

en modifiant l'adresse de la cellule (G1 dans l'exemple au-dessus) et la colonne du tableau (7 dans l'exemple au-dessus).

18nbl-v03.xlsm (35.83 Ko)

Bonjour ThauRhème,

En fait j'ai plusieurs données qui sont extraites depuis un logiciel et qui se retrouve dans la MÊME cellule (Onglet Synthèse, colonne H);

Je voudrais du coup récupérer certaine données et les réparties dans les différentes cellules de sa fiche concernée.

Dans la version 2 ci-dessus (Onglet ATHIS-MONS) l'Imprime écran est récupéré dans la fiche Synthèse en H3

:./

Merci Encore pour ton aide

Re,

Même si tu es novice, avec un peu de logique et en lisant les commentaires tu dois pouvoir y arriver seul. D'autant plus que dans mon post précédent je te disais :

Il te suffira que rajouter des lignes :

OA.Range("G1").Value = TV(I, 7) 'renvoie dans la celule G1 de l'onglet OA la valeur de la donnée ligne I, colonne 7

en modifiant l'adresse de la cellule (G1 dans l'exemple au-dessus) et la colonne du tableau (7 dans l'exemple au-dessus).

Donc par exemple pour le Commentaire demandeur, rajoute la ligne :

OA.Range("A10").Value = TV(I, 8)

ce qui va renvoyer dans la cellule A10 de la fiche la donnée en ligne I, colonne 8 (=> Colonne H) de TV

Et ainsi de suite, rajoute autant de lignes de code que nécessaire, jusqu'à remplir complètement ta fiche avec les données de la ligne du tableau...

Si vraiment tu ne t'en sort pas, renvoie moi l'onglet avec les flèches mais en stipulant dans la case réceptrice la colonne en rouge émettrice (comme tu l'as fait pour certaines) pour toutes les données. Ce qui devrait faire 17 colonnes si toutes les données de la lignes sont renvoyées dans la fiche.

Désolé ThauTheme

Je crois que l'on se comprend pas. Toutes les informations à reporter dans les différentes fiches sont dans LA MÊME CELLULE ongle Synthèse.

Dans l'exemple en pièce jointe c'est la cellule H2 (En rouge onglet de Synthèse) qui doit être reporté dans l'onglet correspondant

:./

Merci beaucoup

15nbl-v05.xlsm (84.34 Ko)

Re,

Arf ! J'ai enfin compris... Promis demain je m'achète 2 kg de neurones au marché...

Mais, présenté comme ça c'est une véritable usine à gaz à gérer et je ne m'y risquerai pas. Tu y arriveras, avec ma méthode, si tu propose un tableau clean, un donnée par colonne. Bonne chance !...

Lol ThauTheme Ok merci beaucoup en tout cas

Rechercher des sujets similaires à "creer supprimer onglets maj tableau"