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 :

copier un tableau d'une feuille a une autre avec modification [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Préparateur méthode
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Préparateur méthode

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 15
    Points
    15
    Par défaut copier un tableau d'une feuille a une autre avec modification
    Bonjour:
    Je voudrais copier le tableau de la feuille "personnel", dans la feuille "pointage" avec bouton CommandButton10, en tenant compte des en-têtes et du code de l'expert EricDgn

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set LastRow = Sheets("pointage").Range("A65536").End(xlUp)
    If LastRow = "" Then Set LastRow = LastRow.Offset(-1, 0)  '--- si vide, remonter encore d'une ligne
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    comme expliqué ci-dessous par l'expert EricDgn

    Effectivement, il y a un petit piège avec les tableaux structurés vides: le .End(xlUp) aboutit non pas sur la ligne de titre mais sur la ligne vide qui se trouve juste sous cette ligne de titres. Une façon de vérifier cela est de voir si la cellule sur laquelle on aboutit est vide ou non (en prenant une colonne où l'on sait qu'il doit toujours y avoir une valeur inscrite). Si elle est vide c'est qu'on est juste sous la ligne de titres, sur une ligne vide. Si elle n'est pas vide, c'est qu'on est sur la dernière ligne du tableau qui contient au moins 1 ligne avec des données.
    Dans votre cas, il faut compléter après les instructions Set LastRow:
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Copier le tableau Feuille "personnel" :
    colonne A [Id]
    colonne B [Code personnel]
    colonne C [Nom]
    colonne D [Prénom]
    colonne E [Fonction]
    colonne F [Salaire négocié]

    -----------------------------------------
    Coller dans la Feuille "pointage" :
    colonne A [Id]
    colonne B [Code personnel]
    colonne C [le contenu de ComboBox_annee dans userform1]
    colonne D [le contenu de ComboBox_mois dans userform1]
    colonne E [Nom]
    colonne F [Prénom]
    colonne G [Fonction]
    colonne H [Salaire négocié]
    colonne K [le texte "Non soldé"]

    merci et bonne continuation.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 166
    Points : 5 485
    Points
    5 485
    Par défaut
    Bonjour,

    Une façon de faire:
    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
    Private Sub CommandButton10_Click()
        Dim kRpnt As Long, i As Long, rPers As Range
        If Me.ComboBox_annee = "" Or _
            Me.ComboBox_mois = "" Then
            MsgBox "Veuillez selectioner l'année et le mois"
            Exit Sub
        End If
        '--- recopie une à une les personnes
        If Worksheets("pointage").ListObjects("pointage").DataBodyRange Is Nothing Then
            kRpnt = 0
        Else
            kRpnt = Range("pointage").Rows.Count
        End If
        Set rPers = Range("personnel")
        i = 1
        With Range("pointage").Cells(kRpnt, 1)
            While rPers.Cells(i, 1) <> ""
                .Offset(i, 0) = rPers.Cells(i, 1)
                .Offset(i, 1) = rPers.Cells(i, 2)
                .Offset(i, 2) = CInt(ComboBox_annee)
                .Offset(i, 3) = ComboBox_mois
                .Offset(i, 4) = rPers.Cells(i, 3)
                .Offset(i, 5) = rPers.Cells(i, 4)
                .Offset(i, 6) = rPers.Cells(i, 5)
                .Offset(i, 7) = rPers.Cells(i, 6)
                .Offset(i, 10) = "Non soldé"
                i = i + 1
            Wend
        End With
        Set rPers = Nothing
    End Sub
    Cordialement.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Préparateur méthode
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Préparateur méthode

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    merci EricDgn, merci pour tout les solutions que vous m'avez apporté

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/04/2016, 15h37
  2. copier un tableau dans une autre feuille
    Par anouar2012 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/11/2012, 10h16
  3. [XL-2003] Copier plusieurs tableau d'une feuille sur une auter feuille
    Par Alex5974 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/03/2012, 16h41
  4. macro copier coller une ligne d'un tableau dans une autre feuille
    Par sonichou dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/07/2011, 23h13
  5. Réponses: 2
    Dernier message: 04/07/2008, 15h24

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