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 :

Insertion automatique de ligne à chaque ajout de feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Par défaut Insertion automatique de ligne à chaque ajout de feuille
    Bonjour à tous,

    J'ai un fichier avec une feuille "Nouvel employé" (qui me sert de modèle) que j'utilise pour chacun de mes employés. Chaque feuille porte le nom de l'employé.

    Dans ma feuille BDD-Mommenheim, je reprends les données de chacun des employés.

    Exemple simplifié :

    Nom | Mois | Heures
    Duss.c | 1 | 158
    Duss.c | 2 | 162
    Duss.c | etc. | 174
    Duss.c | 12 | 185
    Vogt.V | 1 | 157
    Vogt.V | 2 | 198
    Vogt.V | etc. | 135
    Vogt.V | 12 | 145

    Je voudrais que si j'ajoute une nouvelle feuille avec un nouvel employé (feuille toujours basée sur un même modèle, seul le nom de l'employé, ses infos et ses heures changent mais les colonnes et lignes sont toutes pareilles), celui-ci soit rajouté automatiquement sur ma feuille BDD-Mommenheim, soit 12 lignes par employé pour cet exemple (53 en réel car je gère à la semaine)

    Les informations qui sont reprises sont le nom, le status, l'agence et le taux horaire.

    Voici mon fichier pour exemple

    Malheureusement je n'y connais absolument rien en VBA ayant toujours réussi à me débrouiller sans. J'ai commandé un livre en VBA pour mon anniv mais en attendant je fais appel à vous pour m'aider à automatiser cette tâche.

    Merci par avance.

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour, bonjour !

    Bon, j'ai l'impression que j'en ai fait un peu trop mais voilà :
    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
     
    Private Sub Workbook_NewSheet(ByVal Sh As Object)
     
        Dim nom As String
        Dim status As String
        Dim agence As String
        Dim cout As String
        Dim tempbool
     
        nom = InputBox("Vous allez ajouter une nouvelle feuille. Quel est le nom de l'employé ?", "Nom employé")
        status = InputBox("Quel est son statut ?", "Statut")
        agence = InputBox("Quelle est son agence/site ?", "Agence/Site")
     
        tempbool = False
     
        While tempbool = False
            cout = InputBox("Quel est son coût horaire ?", "Coût/h")
            If IsNumeric(cout) = True Then
                tempbool = True
            Else
                MsgBox "Rentrez un nombre valide, nom de Dieu !"
            End If
        Wend
     
        Application.ScreenUpdating = False
     
        Sh.Name = nom
        Sh.Move After:=Sheets(Sheets.Count)
        Sheets(nom).Tab.ColorIndex = 41
        Sheets("Nouvel Employé").Cells.Copy
        Sheets(nom).Paste
     
        Range("A3").Value = nom
        Range("B3").Value = status
        Range("C3").Value = agence
        Range("D3").Value = cout
     
        Sheets(nom).Range("A3:D367").Copy
        Sheets("BDD-Mommenheim").Activate
        Range("A65536").End(xlUp).Offset(1, 0).Select
        Selection.PasteSpecial Paste:=xlPasteValues
     
        Application.CutCopyMode = False
        Range("A1").Activate
     
        Application.ScreenUpdating = True
     
    End Sub
    Alors, c'est fait à la va-vite, c'est optimisable (utilisation d'userform à la place des 4 InputBox, optimisation des temps de traitement etc.)

    Je t'ai même mis un petit test pour ton coût horaire histoire de.

    Alors, comment cela fonctionne me diras-tu. Tu places la macro dans l'événement Workbook_NewSheet de ton Workbook. Ainsi, à chaque fois qu'une nouvelle Sheet sera détectée, le code sera lancé. En gros, 4 InputBox te demandent les infos que tu dois rentrer. Ensuite, une feuille est créée à la suite de celles existant déjà puis elle est nommée, la couleur de l'onglet est mise, elle prend un copier/coller en provenance de la feuille "template" et elle est complétée avec les infos rentrées auparavant.

    Enfin, ces infos sont recopiées dans la feuille récapitulant le tout. Bref, il ne te reste plus qu'à insérer le code et à faire clic droit => nouvelle feuille dans ton classeur. Tu as tout et même un peu trop. A toi d'adapter pour le nombre de semaines que tu veux (je l'ai fait avec ton classeur exemple) et de répandre les formules et les colonnes E et F comme il faut dans la feuille récapitulative. Je ne vais pas tout faire quand même.

    Bonne chance pour la suite

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Par défaut
    Merci énormément DeaD78. Vu que je n'y connais rien, je vais suivre tes explications pas à pas et essayer de comprendre le tout. La couleur de l'onglet n'a pas d'importance, il servait juste à repérer la feuille servant de modèle plus rapidement.

    Je me rends compte que plus j'avance dans excel et plus les macros deviennent indispensables.

    Est ce que tu aurais pas hasard un exemple de bouquin ou de site facile à comprendre pour bien débuter? parceque j'ai déjà eu quelques bouquins qui m'ont fait abandonné très vite vu leurs complexité.

    EDIT : J'ai réussi à faire en sorte que le script se lance. Je vais essayer de le remanier pour qu'il fasse ce que je voudrais. Parceque là, il fait un copier coller du nombre de ligne. Le problème, c'est que dans BDD-Mommenheim, il faut juste qu'il m'ajoute 53 lignes correspondant au nombre de semaine, pas plus.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Re,

    Ouvre ton classeur, ALT + F11 et tu arrives dans l'éditeur VBA. Double-clique sur ThisWorkbook dans ta fenêtre de gauche puis, dans la fenêtre apparaissant à droite, colle ce 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Private Sub Workbook_NewSheet(ByVal Sh As Object)
     
        Dim nom As String
        Dim status As String
        Dim agence As String
        Dim cout As String
        Dim tempbool
     
        nom = InputBox("Vous allez ajouter une nouvelle feuille. Quel est le nom de l'employé ?", "Nom employé")
        status = InputBox("Quel est son statut ?", "Statut")
        agence = InputBox("Quelle est son agence/site ?", "Agence/Site")
     
        tempbool = False
     
        While tempbool = False
            cout = InputBox("Quel est son coût horaire ?", "Coût/h")
            If IsNumeric(cout) = True Then
                tempbool = True
            Else
                MsgBox "Rentrez un nombre valide, nom de Dieu !"
            End If
        Wend
     
        Application.ScreenUpdating = False
     
        Sh.Name = nom
        Sh.Move After:=Sheets(Sheets.Count)
        Sheets(nom).Tab.ColorIndex = 41
        Sheets("Nouvel Employé").Cells.Copy
        Sheets(nom).Paste
     
        Range("A3").Value = nom
        Range("B3").Value = status
        Range("C3").Value = agence
        Range("D3").Value = cout
     
        Sheets(nom).Range("A3:D63").Copy
        Sheets("BDD-Mommenheim").Activate
        Range("A65536").End(xlUp).Offset(1, 0).Select
        Selection.PasteSpecial Paste:=xlPasteValues
        Range("E3:AY63").Copy
        Range("E65536").End(xlUp).Offset(1, 0).Activate
        ActiveSheet.Paste
     
        Application.CutCopyMode = False
        Range("A1").Activate
     
        Application.ScreenUpdating = True
     
    End Sub
    Il est toujours pas optimisé mais il fait maintenant tout ce que tu voulais faire comme tu le voulais (nombre de lignes compris).

    Sinon, je dirais oublie les bouquins, ils mettent un mal au crâne pas possible et sont pas vraiment clairs (je sais, j'en ai acheté un au début et je n'ai RIEN compris). En revanche, tu as des tutos et des FAQ sur le site TRES bien faits. Utilise aussi Google.

    En espérant que ça réponde à ta demande

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Par défaut
    Merci encore à toi DeaD78.

    Est ce que je peux encore t'embêter un peu?

    Lorsqu'un nouvel employé est ajouté, dans BDD-Mommenheim, seule la 1ère des 53 lignes reprend les informations, le reste indique 0 partout. Sais tu pourquoi est ce que ça fait ça?

    J'aimerai aussi intégrer des listbox pour le status et l'agence. J'ai regardé sur le net et j'ai trouvé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_Initialize()
      ListBox1.Clear
      ListBox1.AddItem "tata"
      ListBox1.AddItem "tete"
      ListBox1.AddItem "titi"
    end Sub
    Mais je sais pas comment lui dire de l'afficher en 2ème étape de la création de la nouvel feuille. Après la demande du nom, il faudrait une liste box pour les agences et une pour les status. Après denouveau le truc du coût comme c'est déjà le cas.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Re,

    Je regarde ça demain au boulot vu que je n'ai pas d'Excel sous la main sur mon Mac (et oui, j'ai installé la version 2008 )

    Pour le bouquin, je ne les connais pas du tout. J'étais allé à Virgin et j'ai pris le premier qui me passait sous la main et qui me paraissait bien. Au final, j'ai dépensé je ne sais combien de dizaines d'euros pour rien vu que j'ai tout fait à l'aide de DVP et de Google : c'était on ne peut plus clair et donc on ne peut mieux

    Bref, à toi de voir... mais entre http://excel.developpez.com/faq/, http://excel.developpez.com/sources/ et plus généralement http://excel.developpez.com/cours/ tu as largement de quoi faire. Après, Google est ton ami pour le reste. Dis-toi qu'il y a forcément quelqu'un qui a déjà posé la même question que tu te poses sur un forum ou un autre, qu'il y a des TAS de tutos pour les débutants expliquant pas à pas les questions que tu peux te poser etc. etc.

    Bonne soirée !

Discussions similaires

  1. [XL-2002] aide insertion automatique de lignes sur Excel
    Par Bendrien dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/04/2009, 11h49
  2. Insertion automatique de lignes si manque de lignes
    Par CTIFLBaSerre dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/03/2009, 08h23
  3. Insertion automatique de ligne de séparation
    Par Mantrisse dans le forum Word
    Réponses: 2
    Dernier message: 29/01/2008, 15h24
  4. Insertion automatique de ligne
    Par binouse18 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/05/2007, 17h27
  5. insertion automatique de lignes dans la crontab
    Par Mr_Brown dans le forum Administration système
    Réponses: 2
    Dernier message: 27/03/2007, 14h03

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