IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Créer et nommer des onglets par le contenu d'une variable


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 1
    Par défaut Créer et nommer des onglets par le contenu d'une variable
    Bonjour,

    J'ai besoin d'aide concernant la création d'onglet en vba. J'explique je récupère un export qui contient des lignes de production différentes 6C, 6D, ...

    Je souhaite ,par le biais d'une variable nommée UP, créer à chaque changement d'UP (6C, 6D, ...) un onglet y coller toutes les lignes et nommer l'onglet de cet UP.

    Voici ma macro qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub CREERONGLET()
     
     ‘CREERONGLET Macro
     ‘Macro enregistrée le 17/09/2010 par Interforum
     
    Dim UP As String
     
    For i = 2 To 300
     
     
     If Range("A" & i).Value = "" Then
     Range("W" & i).Select
    If ActiveCell.Value = "6C" Then
     SOURCE = Range("C" & i).Value
     On Error Resume Next
     Sheets("SOURCE").Select
    Sheets("SOURCE").Copy after:=Sheets(2)
    Sheets("SOURCE").Range("AE" & i).Value = "X"
    ‘toutes les op de collage et de mise en forme
    If Range("A" & i).Value = "6D" Then
    Sheets.Add.Name = UP
    Sheets("SOURCE").Select
    Sheets("SOURCE").Copy after:=Sheets(2)
    Active Sheet.Name = "6D"
    On Error Resume Next
    End If
    End If
    End Sub
    merci d'avance...

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Bonsoir,

    Dans le mode Debug tu peux voir ce qui se passe mal et nous l'expliquer ensuite.
    Bonne soirée.

    PPz

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si dans la feuille SOURCE on a nos données brutes.
    En colonne A les codes des différentes lignes de production (tri non nécessaire)
    Le code proposé ci après, parcours la colonne A et récupère les différents codes sans doublons (lignes de production)
    Pour chaque code récupéré, on cherche l'existence de la feuille ayant comme nom ce code. Si elle existe, on la supprime.
    On crée une nouvelle feuille, on la renomme par ce code
    On filtre la feuille SOURCE par rapport à ce code en colonne A
    On copie les lignes filtrées dans la nouvelle feuille créée
    et on boucle sur tous les éléments de notre collection de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Dim Lastlig As Long, i As Long
    Dim Kol As New Collection
    Dim Sh As Worksheet
     
    Application.ScreenUpdating = False
    With Sheets("SOURCE")                                   'Adapter le nom de la feuille
        .AutoFilterMode = False                             'Supprime le filtre auto
        Lastlig = .Cells(Rows.Count, "A").End(xlUp).Row     'Ligne de la dernière cellule remplie de la colonne A
        For i = 2 To Lastlig
            On Error Resume Next
            Kol.Add .Range("A" & i), .Range("A" & i)        'On parcours les cellules de la colonne A et en remplit dans Kol les codes sans doublons
            On Error GoTo 0
        Next i
        For i = 1 To Kol.Count                              'On boucle sur tous les codes (lignes de productions)
            '-----------------------------------------------------------------------
            On Error Resume Next
            Set Sh = Sheets(CStr(Kol(i)))
            On Error GoTo 0                                 'On cherche si la feuille existe déjà
            If Not Sh Is Nothing Then
                Application.DisplayAlerts = False           'Si oui, on la supprime
                Sh.Delete
                Application.DisplayAlerts = True
            End If
            '------------------------------------------------------------------------
            Set Sh = Sheets.Add(after:=Sheets(Sheets.Count))                        'On ajoute une nouvelle feuille
            Sh.Name = Kol(i)                                                        'On la renomme par le code
            '------------------------------------------------------------------------
            .Range("A1").AutoFilter Field:=1, Criteria1:=Kol(i)                     'On filtre sur le code
            .Range("A1:A" & Lastlig).SpecialCells(xlCellTypeVisible).EntireRow.Copy Sh.Range("A1") 'On copie toutes les lignes dans la feuille créée
            Set Sh = Nothing
        Next i
        .AutoFilterMode = False                                                     'Supprime le filtre auto
    End With

Discussions similaires

  1. [AC-2010] Créer des enregistrements par date à partir d'une période
    Par tangono dans le forum Access
    Réponses: 1
    Dernier message: 23/04/2013, 12h46
  2. [XL-2007] supprimer ou modifier des onglets par USF
    Par nanar355 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/08/2012, 16h18
  3. Gestion des onglets et affichage contenu
    Par ybezier dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/12/2010, 23h33
  4. Utilisation des invariants pour la recherche des images par le contenu
    Par sarrainf dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 27/03/2009, 14h09
  5. [CR] Grouper des minutes par cinq et non une par une.
    Par Etienne51 dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 14/09/2004, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo