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 :

Ajout d'onglets selon critère [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Gestionnaire administrative
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Gestionnaire administrative
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Par défaut Ajout d'onglets selon critère
    Bonjour tout le monde !

    Voilà, j'ai plusieurs fichiers :
    - Un fichier avec une liste d'agences et l'équipe à laquelle chacune est rattachée
    - Un fichier Excel par agence avec les données qui m'intéressent
    - Un fichier Maquette pour réaliser mes fichiers

    Je dois réaliser un fichier par équipe en ouvrant à chaque fois le fichier de l'agence, en copier certains onglets, les coller dans le fichier maquette à la suite des onglets existants etc. Donc pour chaque fichier Equipe, il existe plusieurs agences, je dois donc à chaque ligne repérer l'équipe, regarder si c'est la même que la ligne du dessus, si oui ouvrir le fichier de l'agence, copier/coller les onglets et ainsi de suite.

    Mon programme fonctionne à peu près correctement. Le seul hic est qu'il ne prend jamais en compte la dernière agence de l'équipe.

    Exemple :
    Agence 1 Equipe 1
    Agence 2 Equipe 1
    Agence 3 Equipe 1
    Agence 4 Equipe 1
    Agence 5 Equipe 2
    Agence 6 Equipe 2


    Dans le cas ci-dessus il me créé 2 fichiers, 1 pour l'équipe 1 avec les onglets des agences 1, 2 et 3 (mais pas la 4) et un autre pour l'équipe 2 avec les onglets de l'agence 5 (mais pas l'agence 6). Je comprends pourquoi ça ne fonctionne pas (il voit que Equipe 1 (au niveau de l'agence 4) ≠ Equipe 2 (au niveau de l'agence 5)) mais je n'arrive pas à voir comment faire autrement.

    Voici le code que j'ai écrit :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Sub soldes_nets_equipes()
     
    Dim repertoire As String, fichierAgences As String, nomAgence As String, repMois As String
    Dim codeAgence As String, codeEquipe As String, nomEquipe As String
    Dim derLigneAgences As Integer, nbFeuilles As Integer
     
     
    repertoire = "G:\"
    fichierAgences = "Ptvt_ObjSldNet2014_V0.xls"
    maquette = "maquette SN PART.xls"
     
    Workbooks.Open Filename:=repertoire & fichierAgences
    Workbooks.Open Filename:=repertoire & maquette
     
    'Boîte de dialogue pour choisir le mois à traiter
    UserForm1.Show
    mois = UserForm1.ComboBox1.Value
    If mois = "janvier" Then num_mois = 1
    If mois = "février" Then num_mois = 2
    If mois = "mars" Then num_mois = 3
    If mois = "avril" Then num_mois = 4
    If mois = "mai" Then num_mois = 5
    If mois = "juin" Then num_mois = 6
    If mois = "juillet" Then num_mois = 7
    If mois = "août" Then num_mois = 8
    If mois = "septembre" Then num_mois = 9
    If mois = "octobre" Then num_mois = 10
    If mois = "novembre" Then num_mois = 11
    If mois = "décembre" Then num_mois = 12
     
    annee = 2013
     
    repMois = repertoire & "Livrables\" & annee & num_mois & "\"
    NomFichier = "SUIVI SOLDE NET " & annee & num_mois & " - "
     
    derLigneAgences = Workbooks(fichierAgences).Sheets(1).Range("A65000").End(xlUp).Row
     
    For i = 2 To derLigneAgences
        j = 0
        Workbooks(fichierAgences).Activate
        Sheets(1).Range("E" & i).Select
        Do While ActiveCell = ActiveCell.Offset(1, 0)
            codeAgence = Workbooks(fichierAgences).Sheets(1).Cells(i, 1)
            nomAgence = Workbooks(fichierAgences).Sheets(1).Cells(i, 2)
            Workbooks.Open Filename:=repMois & NomFichier & codeAgence & " " & nomAgence
            ActiveCell = ActiveCell.Offset(1, 0)
            nomEquipe = Workbooks(fichierAgences).Sheets(1).Cells(i, 5)
            codeEquipe = Workbooks(fichierAgences).Sheets(1).Cells(i, 4)
            Workbooks(maquette).Sheets(1).Range("A36").Value = codeEquipe & " " & nomEquipe
            nbFeuilles = Workbooks(maquette).Worksheets.Count
            Workbooks(NomFichier & codeAgence & " " & nomAgence).Sheets(Array("SN TsMch", "RE TsMch", "SN MchPart", "RE MchPart")).Copy after:= _
            Workbooks(maquette).Sheets(nbFeuilles)
            NomFeuille1 = "SN TsMch " & codeAgence
            NomFeuille2 = "RE TsMch " & codeAgence
            NomFeuille3 = "SN MchPart " & codeAgence
            NomFeuille4 = "RE MchPart " & codeAgence
            Workbooks(maquette).Sheets("SN TsMch").Name = NomFeuille1
            Workbooks(maquette).Sheets("RE TsMch").Name = NomFeuille2
            Workbooks(maquette).Sheets("SN MchPart").Name = NomFeuille3
            Workbooks(maquette).Sheets("RE MchPart").Name = NomFeuille4
            i = i + 1
            Workbooks(NomFichier & codeAgence & " " & nomAgence).Close False
            Workbooks(fichierAgences).Activate
            Sheets(1).Range("E" & i).Select
        Loop
        Workbooks(maquette).SaveAs repMois & "RE PART\" & NomFichier & " " & codeEquipe & " " & nomEquipe
        Workbooks.Open Filename:=repertoire & maquette
        Workbooks(NomFichier & " " & codeEquipe & " " & nomEquipe).Close
    Next i
    End Sub
    Merci par avance pour ce 1er problème.

    J'ai un deuxième souci mais là je ne sais pas du tout comment faire. Dans chaque fichier Equipe, je dois faire des sommes en prenant des données dans les onglets précédemment ajoutés (copier/coller) mais comment insérer une formule sans connaître le nombre d'onglets ? (Car une équipe n'a pas forcément le même nombre d'agences).

    Merci

    Auriane

  2. #2
    Membre confirmé
    Femme Profil pro
    Gestionnaire administrative
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Gestionnaire administrative
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Par défaut
    Finalement j'ai réussi la 1ère partie !

    Pour ceux que ça intéresserait :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Sub soldes_nets_equipes()
     
    Dim repertoire As String, fichierAgences As String, nomAgence As String, repMois As String
    Dim codeAgence As String, codeEquipe As String, nomEquipe As String
    Dim derLigneAgences As Integer, nbFeuilles As Integer
     
     
    repertoire = "G:\"
    fichierAgences = "Ptvt_ObjSldNet2014_V0.xls"
    maquette = "maquette SN PART.xls"
     
    Workbooks.Open Filename:=repertoire & fichierAgences
    Workbooks.Open Filename:=repertoire & maquette
     
    'Boîte de dialogue pour choisir le mois à traiter
    UserForm1.Show
    mois = UserForm1.ComboBox1.Value
    If mois = "janvier" Then num_mois = 1
    If mois = "février" Then num_mois = 2
    If mois = "mars" Then num_mois = 3
    If mois = "avril" Then num_mois = 4
    If mois = "mai" Then num_mois = 5
    If mois = "juin" Then num_mois = 6
    If mois = "juillet" Then num_mois = 7
    If mois = "août" Then num_mois = 8
    If mois = "septembre" Then num_mois = 9
    If mois = "octobre" Then num_mois = 10
    If mois = "novembre" Then num_mois = 11
    If mois = "décembre" Then num_mois = 12
     
    annee = 2013
     
    repMois = repertoire & "Livrables\" & annee & num_mois & "\"
    NomFichier = "SUIVI SOLDE NET " & annee & num_mois & " - "
     
    derLigneAgences = Workbooks(fichierAgences).Sheets(1).Range("A65000").End(xlUp).Row
     
    For i = 2 To derLigneAgences
        Workbooks(fichierAgences).Activate
        Sheets(1).Range("E" & i).Select
        If ActiveCell = ActiveCell.Offset(1, 0) Then
            codeAgence = Workbooks(fichierAgences).Sheets(1).Cells(i, 1)
            nomAgence = Workbooks(fichierAgences).Sheets(1).Cells(i, 2)
            Workbooks.Open Filename:=repMois & NomFichier & codeAgence & " " & nomAgence
            nomEquipe = Workbooks(fichierAgences).Sheets(1).Cells(i, 5)
            codeEquipe = Workbooks(fichierAgences).Sheets(1).Cells(i, 4)
            Workbooks(maquette).Sheets(1).Range("A36").Value = codeEquipe & " " & nomEquipe
            nbFeuilles = Workbooks(maquette).Worksheets.Count
            Workbooks(NomFichier & codeAgence & " " & nomAgence).Sheets(Array("SN TsMch", "RE TsMch", "SN MchPart", "RE MchPart")).Copy after:= _
            Workbooks(maquette).Sheets(nbFeuilles)
            NomFeuille1 = "SN TsMch " & codeAgence
            NomFeuille2 = "RE TsMch " & codeAgence
            NomFeuille3 = "SN MchPart " & codeAgence
            NomFeuille4 = "RE MchPart " & codeAgence
            Workbooks(maquette).Sheets("SN TsMch").Name = NomFeuille1
            Workbooks(maquette).Sheets("RE TsMch").Name = NomFeuille2
            Workbooks(maquette).Sheets("SN MchPart").Name = NomFeuille3
            Workbooks(maquette).Sheets("RE MchPart").Name = NomFeuille4
            Workbooks(NomFichier & codeAgence & " " & nomAgence).Close False
        Else
            If ActiveCell = ActiveCell.Offset(-1, 0) Then
                codeAgence = Workbooks(fichierAgences).Sheets(1).Cells(i, 1)
                nomAgence = Workbooks(fichierAgences).Sheets(1).Cells(i, 2)
                Workbooks.Open Filename:=repMois & NomFichier & codeAgence & " " & nomAgence
                nomEquipe = Workbooks(fichierAgences).Sheets(1).Cells(i, 5)
                codeEquipe = Workbooks(fichierAgences).Sheets(1).Cells(i, 4)
                Workbooks(maquette).Sheets(1).Range("A36").Value = codeEquipe & " " & nomEquipe
                nbFeuilles = Workbooks(maquette).Worksheets.Count
                Workbooks(NomFichier & codeAgence & " " & nomAgence).Sheets(Array("SN TsMch", "RE TsMch", "SN MchPart", "RE MchPart")).Copy after:= _
                Workbooks(maquette).Sheets(nbFeuilles)
                NomFeuille1 = "SN TsMch " & codeAgence
                NomFeuille2 = "RE TsMch " & codeAgence
                NomFeuille3 = "SN MchPart " & codeAgence
                NomFeuille4 = "RE MchPart " & codeAgence
                Workbooks(maquette).Sheets("SN TsMch").Name = NomFeuille1
                Workbooks(maquette).Sheets("RE TsMch").Name = NomFeuille2
                Workbooks(maquette).Sheets("SN MchPart").Name = NomFeuille3
                Workbooks(maquette).Sheets("RE MchPart").Name = NomFeuille4
                Workbooks(NomFichier & codeAgence & " " & nomAgence).Close False
                Workbooks(maquette).SaveAs repMois & "RE PART\" & NomFichier & " " & codeEquipe & " " & nomEquipe
                Workbooks.Open Filename:=repertoire & maquette
                Workbooks(NomFichier & " " & codeEquipe & " " & nomEquipe).Close
            End If
        End If
    Next i
    End Sub
    Je mets ce sujet en RESOLU et en ouvrirais peut-être un autre pour mon second problème.

    Merci pour ceux qui auront réfléchi à la résolution !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/07/2006, 16h39
  2. Réponses: 7
    Dernier message: 29/06/2006, 11h11
  3. Réponses: 1
    Dernier message: 05/05/2006, 14h48
  4. Ajout n lignes selon valeur...
    Par nicburger dans le forum Access
    Réponses: 1
    Dernier message: 26/10/2005, 19h49
  5. Réponses: 44
    Dernier message: 19/10/2005, 10h54

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