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 :

Insérer ligne à la fin d'un tableau structuré via copier coller [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2023
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mars 2023
    Messages : 32
    Par défaut Insérer ligne à la fin d'un tableau structuré via copier coller
    Bonjour,
    Je souhaite copier une ligne d'un tableau structuré, créer une nouvelle ligne dans ce tableau puis coller la ligne et enfin intégrer les éléments d'un userform dans cette nouvelle ligne.
    J'arrive à créer la ligne, à intégrer les éléments de l'userform mais je n'arrive pas à coller les éléments .
    Pourriez vous m'aider?
    Voici mon 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
    Private Sub CommandButtonValider_Click()
    With Sheets("Gestionprojet")
    With ActiveSheet.ListObjects("Tableau5")
            .ListRows.Add AlwaysInsert:=False
     
            Application.GoTo .ListRows.Item(.ListRows.Count).Range(1), True
            End With
     
    .Rows(5).Copy
    .Range("B65536").End(xlUp).Row.Paste
     
    i = .Range("B65536").End(xlUp).Row
    .Range("B" & i).Value = AjoutProjet.AxeStrat
    End With
    End Sub
    Bonne journée.

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, vois si ça peut t'aider, au lieu d'un copy/paste j'utilise la méthode .value pour affecter les valeurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButtonValider_Click()
        With Sheets("Gestionprojet").ListObjects("Tableau5")
            ' Ajouter une nouvelle ligne
            .ListRows.Add AlwaysInsert:=False
     
            ' Copier les valeurs de la ligne 5 dans la nouvelle ligne
            Dim lastRow As Long
            lastRow = .ListRows.Count ' Obtenir le numéro de la dernière ligne
            .ListRows(lastRow).Range.Value = .ListRows(5).Range.Value
     
            ' Ajouter les valeurs de l'userform dans la nouvelle ligne
            .ListRows(lastRow).Range(2).Value = AjoutProjet.AxeStrat
        End With
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2023
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mars 2023
    Messages : 32
    Par défaut
    Citation Envoyé par Franc Voir le message
    Salut, vois si ça peut t'aider, au lieu d'un copy/paste j'utilise la méthode .value pour affecter les valeurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButtonValider_Click()
        With Sheets("Gestionprojet").ListObjects("Tableau5")
            ' Ajouter une nouvelle ligne
            .ListRows.Add AlwaysInsert:=False
     
            ' Copier les valeurs de la ligne 5 dans la nouvelle ligne
            Dim lastRow As Long
            lastRow = .ListRows.Count ' Obtenir le numéro de la dernière ligne
            .ListRows(lastRow).Range.Value = .ListRows(5).Range.Value
     
            ' Ajouter les valeurs de l'userform dans la nouvelle ligne
            .ListRows(lastRow).Range(2).Value = AjoutProjet.AxeStrat
        End With
    End Sub
    Bonjour Franc,
    Merci pour ce retour.
    J'ai appliqué la formule, cela créé bien une ligne mais cela mets les valeurs de la ligne 5, et j'aurais besoin des formules.
    Bonne journée.

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Je ne suis pas sûr d'avoir compris ce que tu veux mais en relisant ton code je m'aperçois d'une erreur, tu utilises la méthode paste sur une propriété alors qu'il faut l'utiliser sur un objet.
    Dans ton code original, remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("B65536").End(xlUp).Row.Paste
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("B" & .Range("B65536").End(xlUp).Row + 1).PasteSpecial xlPasteAll

  5. #5
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2023
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mars 2023
    Messages : 32
    Par défaut
    En fait, sur la ligne 5 j'ai des formules.
    Je souhaite lors de la création d'une nouvelle ligne prendre les formules de la ligne 5, les intégrer à cette nouvelle ligne dans mon tableau, en complétant le reste avec les éléments issus des contrôles d'un userform. (désolé si j'ai pas été clair)
    Si l'on repart de ton code peut-on au lieu de value remplacer par des formules?

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Comme ceci alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButtonValider_Click()
        With Sheets("Gestionprojet")
            With ActiveSheet.ListObjects("Tableau5")
                .ListRows.Add AlwaysInsert:=False
                Application.GoTo .ListRows.Item(.ListRows.Count).Range(1), True
            End With
     
            .Rows(5).Copy
            .Range("B" & .Range("B65536").End(xlUp).Row + 1).PasteSpecial xlPasteFormulas
     
            i = .Range("B65536").End(xlUp).Row
            .Range("B" & i).Value = AjoutProjet.AxeStrat
        End With
    End Sub

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

Discussions similaires

  1. Inserer une ligne à la fin d'un tableau excel avec vba
    Par n.danse dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/04/2020, 10h36
  2. [XL-2019] Empêcher la suppression de la ligne de total d'un tableau structuré.
    Par RJSCVF dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/11/2019, 14h25
  3. [XL-2016] Comment modifier des données dans un tableau structuré via une listbox?
    Par Mr l'Ashanti dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/10/2019, 13h26
  4. Insertion de 3 ligne à la fin d'un tableau dynamique
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/01/2013, 15h53
  5. [WD-2002] Insérer une ligne à la fin d'un tableau
    Par Wanaka dans le forum VBA Word
    Réponses: 2
    Dernier message: 12/05/2009, 07h31

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