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 :

Code VBA pour insérer des lignes dans toutes les feuilles de mon fichier Excel


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Code VBA pour insérer des lignes dans toutes les feuilles de mon fichier Excel
    Bonjour à tous,

    Ça fait plusieurs semaines que je cherche à "fabriquer" un code VBA, sachant que je suis débutant dans le VBA. J'ai un fichier Excel de 12 feuilles, dans chaque feuille j'ai un tableau identique. Dans la première colonne de mes tableaux j'ai le nom des salariés, dans les autres colonnes ce sont des formules afin de récupérer les données respectives pour chaque salarié. Mon problème est le suivant:

    Je voudrais que lorsque je crée un nouveau salarié, un userform s'ouvre avec une textbox pour mettre le nom du nouveau salarié afin qu'il s'inscrive dans la colonne A qui a été insérée et que toutes ces données s'insèrent dans tous les autres tableaux.

    J'espère avoir été clair.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Une petite macro que j'utilise qui copie la ligne courante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Copier_Inserer()
        Selection.Copy
        Selection.Insert Shift:=xlDown
        Application.CutCopyMode = False
    End Sub
    Il ne te reste plus ensuite qu'à mettre le nom de l'employé dans la colonne A de la nouvelle ligne.
    A mon avis, inutile de faire un UserForm pour si peu.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Désolé de répondre si tard, mais j'était sur un autre projet...

    Bonjour MENHIR,

    Merci pour ton code, mais je pense que nous nous sommes pas compris. En effet il me faut que la ligne se créer au même endroit dans toutes les feuilles et pourquoi je mets un Userform afin que le nom s'inscrive aussi dans la colonne A de la ligne créer et également sur toutes les feuilles du classeur.

    Dans l'attente de vos propositions.

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    le code qui "écrit" dans une feuille , écrira dans une autre feuille si tu indiques le nom de cette feuille comme destination
    il te faut donc boucler sur la liste des sheets et utiliser style ... Sheet().range().select

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    une macro est-elle vraiment nécessaire ?
    Si tu fais une sélection 3D de tes 12 feuilles toute modification se répercute sur toutes les feuilles.
    Clic sur la 1ère feuille, shift-clic sur la dernière et c'est fait.
    Il faut juste ne pas oublier de defaire ta sélection 3D quand tu as fini.
    eric

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses. Mais le problème, c'est que le tableau ce n'est pas moi qui l'utilise, donc pour moi une macro avec un Userform serait l'idéal.

    J'ai avancé un peu sur le sujet, j'arrive à insérer des lignes sur toutes mes feuilles mais les formules se copie que sur la feuille 1 et j'ai réussi à insérer un Userform mais le nom du salarié ne se mets pas dans la colonne A de la ligne inséré.

    Voici le code que j'ai fait pour insérer la ligne sur toute les feuilles :

    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
    Sub InsererLignesCopierFormules()
     
    Application.ScreenUpdating = False 'Désactive l'actualisation de l'écran
    Dim NbLignes As Integer
    Dim NbLignes_a As Integer
    Dim SelCol As Integer
     
    Application.ScreenUpdating = False
     
    NbLignes = Selection.Rows.Count 'Nombre de lignes dans la sélection
    NbLignes_a = NbLignes
    SelCol = Selection.Cells(1, 1).Column
     
    If NbLignes > 1 Then
          Selection.Cells(1, 1).EntireRow.Select
     
           Selection.Resize(rowsize:=NbLignes_a).Rows(NbLignes_a + 1).EntireRow. _
            Resize(rowsize:=NbLignes).Insert Shift:=xlDown
           Selection.Offset(NbLignes - 1).EntireRow.Select
        Selection.AutoFill Selection.Resize(rowsize:=NbLignes + 1), xlFillDefault
     
        On Error Resume Next
           Selection.Offset(1).Resize(NbLignes).EntireRow.SpecialCells(xlConstants).ClearContents
     
    Else    ' une seule ligne choisie
        NbLignes_a = 2
        ActiveCell.EntireRow.Select
        Selection.Resize(rowsize:=NbLignes_a).Rows(NbLignes_a).EntireRow. _
            Resize(rowsize:=NbLignes).Insert Shift:=xlDown
     
        Selection.AutoFill Selection.Resize(rowsize:=NbLignes + 1), xlFillDefault
     
        On Error Resume Next
        Selection.Offset(1).Resize(NbLignes).EntireRow.SpecialCells(xlConstants).ClearContents
      Sheets("Février").Cells(ActiveCell.Row + 1, ActiveCell.Column).EntireRow.Insert 'Insère une ligne au même endroit dans la feuille 2
    Application.CutCopyMode = False
    Sheets("Février").Rows(ActiveCell.Row & ":" & ActiveCell.Row).Copy Sheets(2).Cells(ActiveCell.Row + 1, 1)
     On Error Resume Next
     Sheets("Février").Rows(ActiveCell.Row + 1 & ":" & ActiveCell.Row + 1).SpecialCells(xlCellTypeConstants, 23).ClearContents
     Sheets("Février").ActiveCell.EntireRow.SpecialCells(xlCellTypeConstants, xlNumbers + xlTextValues + xlLogical + xlErrors).ClearContents
     
    Sheets("Mars").Cells(ActiveCell.Row + 1, ActiveCell.Column).EntireRow.Insert 'Insère une ligne au même endroit dans la feuille 2
    Application.CutCopyMode = False
     Sheets("Mars").Rows(ActiveCell.Row & ":" & ActiveCell.Row).Copy Sheets(2).Cells(ActiveCell.Row + 1, 1)
     On Error Resume Next
     Sheets("Mars").Rows(ActiveCell.Row + 1 & ":" & ActiveCell.Row + 1).SpecialCells(xlCellTypeConstants, 23).ClearContents
     Sheets("Mars").ActiveCell(1).EntireRow.Copy ActiveCell(2).Resize(1).EntireRow 'Copie la ligne de la cellule active dans la ligne insérée
    End If
     
     
    Cells(Selection.Row + 1, SelCol).Select 'pour se replacer
    Application.ScreenUpdating = True
      Userform1.Show
     
    End Sub
    Est-ce que quelqu'un peux me rectifier mon code afin que les formules se copie sur toutes les feuilles???

    Merci pour votre aide.

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

Discussions similaires

  1. [XL-2016] Code VBA pour cacher des lignes
    Par Exceleur dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/03/2017, 09h49
  2. [AC-2013] Code VBA pour activer des filtres dans un formulaire
    Par bricoreur dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/04/2016, 20h05
  3. Code VBA pour filtrer des valeurs dans un tcd
    Par dimitri70 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/09/2013, 10h53
  4. [Toutes versions] Macro ou code VBA pour effacer des caracteres et aller a la ligne dans un meme cellule
    Par ghisunit dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/04/2012, 15h29
  5. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09

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